Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature request: bulk option for pg_hba module #297

Closed
betanummeric opened this issue Jun 22, 2022 · 11 comments · Fixed by #303
Closed

feature request: bulk option for pg_hba module #297

betanummeric opened this issue Jun 22, 2022 · 11 comments · Fixed by #303

Comments

@betanummeric
Copy link
Member

feature idea for module postgresql_pg_hba: bulk rule editing

Some of my pg_hba.conf have over 700 managed rules, which takes some time and memory to loop over (repeated parsing, editing and writing). My current usecase looks like this:

- name: manage pg_hba.conf
  community.postgresql.postgresql_pg_hba:
    create: yes
    dest: "{{ data_dir }}/pg_hba.conf"
    backup: yes
    backup_file: "{{ data_dir }}/pg_hba.conf.ansible_backup"
    keep_comments_at_rules: true
   # not used here: attributes, group, mode, owner, selevel, serole, setype, seuser, unsafe_writes

    contype: "{{ entry.host }}"
    method: "{{ entry.method }}"
    options: "{{ entry.options }}"
    address: "{{ entry.address }}"
    netmask: "{{ entry.netmask }}"
    databases: "{{ entry.databases }}"
    state: "{{ entry.state }}"
    users: "{{ entry.users }}"
    comment: "{{ entry.comment }}"
  loop: "{{ desired_state.pghba|default([]) }}"
  loop_control:
    loop_var: entry

I would like to optimize that by adding/removing multiple rules with a single call to the module, which could look like this:

- name: manage pg_hba.conf
  community.postgresql.postgresql_pg_hba:
    create: yes
    dest: "{{ data_dir }}/pg_hba.conf"
    backup: yes
    backup_file: "{{ data_dir }}/pg_hba.conf.ansible_backup"
    keep_comments_at_rules: true
   # not used here: attributes, group, mode, owner, selevel, serole, setype, seuser, unsafe_writes

    bulk: "{{ desired_state.pghba|default([]) }}"

The new bulk argument (or rules?) would take a list of objects, each specifying a rule using the existing arguments:

address
comment
contype
databases
method
netmask
options
state
users

If one object is missing one of these, the default is taken, if possible.

When the arguments which can be put into the bulk argument are set normally (example below), they could either

  1. connflict with the bulk argument
  2. be appended to the bulk argument
  3. be treated as defaults for missing values in the bulk argument
- name: manage pg_hba.conf
  community.postgresql.postgresql_pg_hba:
    contype: host
    address: "2001:db8:1::/64"
    databases: db1
    users: user1
    state: absent

    bulk:
    - contype: host
      address: "2001:db8:2::/64"
      databases: db2
      users: user2
# option 1 would let the module fail

# option 2 would be equivalent to:
- name: manage pg_hba.conf
  community.postgresql.postgresql_pg_hba:
    bulk:
    - contype: host
      address: "2001:db8:1::/64"
      databases: db1
      users: user1
      state: absent
    - contype: host
      address: "2001:db8:2::/64"
      databases: db2
      users: user2
      # implicit "state: present"

# option 3 would be equivalent to:
- name: manage pg_hba.conf
  community.postgresql.postgresql_pg_hba:
    bulk:
    - contype: host
      address: "2001:db8:2::/64"
      databases: db2
      users: user2
      state: absent  # normal "state" argument used as default
@betanummeric
Copy link
Member Author

Hi @jchancojr, @hunleyd, @tcraxs, @Andersson007, what do you think of this feature request? Is bulk a good name for the argument? How would you like it to work with the normal arguments (the three options)?
I can submit at PR.

@hunleyd
Copy link
Collaborator

hunleyd commented Jun 22, 2022

I think I prefer rules over bulk.

If the user specifies args and the new bulk rules, I think we should basically do a combine on them behind the scenes such that values missing in the bulk rules are 'filled in' by specified args.

But, I defer to @Andersson007 @jchancojr @pgguru @keithf4 et al

@keithf4
Copy link
Contributor

keithf4 commented Jun 22, 2022

I like rules better as well. The combine would basically be the same result option 2, then?

@pgguru
Copy link

pgguru commented Jun 22, 2022

Agreed that rules is a nicer term. My initial response here is that this should be an either/or operation, and if you provide the rules param, you should reject if any of the other params are also provided. It also seems a little ambiguous in intent IMHO whether if you provide a batch of rules if we're effectively looping over each and performing the operation for each individual row vs "this is my pg_hba.conf rules, remove any other conflicting ones".

Since pg_hba.conf is significantly ordered, I presume the order of items in the rules would end up being the order of items in the file? What about if there are other non-user lines that need to occur first, or in an alternate order? (Disclaimer: I've not actually used this module, so there may already be known limitations/workarounds here, and this is just an optimization for repeated invocations, in which case this makes sense.)

@hunleyd
Copy link
Collaborator

hunleyd commented Jun 22, 2022

The combine would basically be the same result option 2, then?

I was thinking like we do internally with _user and _merged .. it would overwrite anything specified in both, and fill-in-the-blanks for things not specified.

However, I'm now leaning towards what David said and thinking it might be best to either specify one or the other (individual rule, or bulk rules, but not both).

@betanummeric
Copy link
Member Author

@pgguru The order of rules is not preserved because the module sorts them according to https://github.com/ansible-collections/community.postgresql/blob/2.1.5/plugins/modules/postgresql_pg_hba.py#L590-L625.
The documentation says:

The entries will be written out in a specific order. With this option you can control by which field they are ordered first, second and last. s=source, d=databases, u=users. This option is deprecated since 2.9 and will be removed in community.postgresql 3.0.0. Sortorder is now hardcoded to sdu.

I would implement the rules argument by iterating over the items and adding/removing the rules.
If you also want to remove rules which preexist but are not in the rules argument (so, overwrite the whole file) -- which I don't want -- we should add a switch for that. Maybe overwrite, boolean, off by default.

I would build the combine alias option 3 behavior as such:
The rule variable (e.g. method) is taken from the rules item, if present. When it is not there, the normal method argument value is taken. If that is missing too, the module default (md5) is used.

If we can't decide between conflicting or combining, we could let the users decide by adding a switch: rules_behavior, string, options conflict (default), combine

@jchancojr
Copy link
Collaborator

I like @betanummeric 's approach but the general idea of using rules with some sort of combine sounds good to me.

+1 for rules and combine

@hunleyd
Copy link
Collaborator

hunleyd commented Jun 22, 2022

If we can't decide between conflicting or combining, we could let the users decide by adding a switch: rules_behavior, string, options conflict (default), combine

I'd be OK with this

If you also want to remove rules which preexist but are not in the rules argument (so, overwrite the whole file) -- which I don't want -- we should add a switch for that. Maybe overwrite, boolean, off by default.

or perhaps append (bool) defaulting to True ?

@betanummeric
Copy link
Member Author

or perhaps append (bool) defaulting to True ?

I don't like append because with state: absent, a rule will get removed, not appended. Other names for the argument could be replace_rules (default: false) or remove_unknown (default: false).

Should this argument only apply when rules is set or also for a single, normally specified rule?

@hunleyd
Copy link
Collaborator

hunleyd commented Jun 22, 2022

or perhaps append (bool) defaulting to True ?

I don't like append because with state: absent, a rule will get removed, not appended.

vgp!

Other names for the argument could be replace_rules (default: false) or remove_unknown (default: false).

Of those two, I prefer the former. But I prefer overwrite even more.

Should this argument only apply when rules is set or also for a single, normally specified rule?

My $0.02 it should apply always.

@Andersson007
Copy link
Collaborator

cc @sebasmannem

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Aug 12, 2022
v6.2.0
======

.. contents::
  :local:
  :depth: 2

Release Summary
---------------

Release Date: 2022-08-02

`Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`_

Added Collections
-----------------

- ibm.spectrum_virtualize (version 1.9.0)

Ansible-core
------------

Ansible 6.2.0 contains Ansible-core version 2.13.2.
This is a newer version than version 2.13.1 contained in the previous Ansible release.

The changes are reported in the combined changelog below.

Changed Collections
-------------------

If not mentioned explicitly, the changes are reported in the combined changelog below.

+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| Collection                    | Ansible 6.1.0 | Ansible 6.2.0 | Notes                                                                                                                        |
+===============================+===============+===============+==============================================================================================================================+
| awx.awx                       | 21.2.0        | 21.4.0        | Unfortunately, this collection does not provide changelog data in a format that can be processed by the changelog generator. |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| cisco.dnac                    | 6.5.0         | 6.5.2         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| cisco.meraki                  | 2.10.0        | 2.10.1        |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.dns                 | 2.2.1         | 2.3.0         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.general             | 5.3.0         | 5.4.0         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.grafana             | 1.5.0         | 1.5.1         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.hashi_vault         | 3.0.0         | 3.1.0         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.hrobot              | 1.4.0         | 1.5.0         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.mongodb             | 1.4.1         | 1.4.2         | There are no changes recorded in the changelog.                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.postgresql          | 2.1.5         | 2.2.0         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.rabbitmq            | 1.2.1         | 1.2.2         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.routeros            | 2.1.0         | 2.2.0         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| community.sap_libs            | 1.1.0         | 1.2.0         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| ibm.spectrum_virtualize       |               | 1.9.0         | The collection was added to Ansible                                                                                          |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| netapp.ontap                  | 21.20.0       | 21.21.0       |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| ovirt.ovirt                   | 2.1.0         | 2.2.0         |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+
| t_systems_mms.icinga_director | 1.30.0        | 1.30.1        |                                                                                                                              |
+-------------------------------+---------------+---------------+------------------------------------------------------------------------------------------------------------------------------+

Major Changes
-------------

community.postgresql
~~~~~~~~~~~~~~~~~~~~

- postgresql_user - the ``groups`` argument has been deprecated and will be removed in ``community.postgresql 3.0.0``. Please use the ``postgresql_membership`` module to specify group/role memberships instead (ansible-collections/community.postgresql#277).

Minor Changes
-------------

Ansible-core
~~~~~~~~~~~~

- ansible-test - An improved error message is shown when the download of a pip bootstrap script fails. The download now uses ``urllib2`` instead of ``urllib`` on Python 2.

cisco.meraki
~~~~~~~~~~~~

- Change shebang in Sublime utils to point to env instead of direct to the path

community.dns
~~~~~~~~~~~~~

- All software licenses are now in the ``LICENSES/`` directory of the collection root. Moreover, ``SPDX-License-Identifier:`` is used to declare the applicable license for every file that is not automatically generated (ansible-collections/community.dns#109).

community.general
~~~~~~~~~~~~~~~~~

- ModuleHelper module utils - added property ``verbosity`` to base class (ansible-collections/community.general#5035).
- apk - add ``world`` parameter for supporting a custom world file (ansible-collections/community.general#4976).
- consul - adds ``ttl`` parameter for session  (ansible-collections/community.general#4996).
- dig lookup plugin - add option ``fail_on_error`` to allow stopping execution on lookup failures (ansible-collections/community.general#4973).
- keycloak_* modules - add ``http_agent`` parameter with default value ``Ansible`` (ansible-collections/community.general#5023).
- lastpass - use config manager for handling plugin options (ansible-collections/community.general#5022).
- listen_ports_facts - add new ``include_non_listening`` option which adds ``-a`` option to ``netstat`` and ``ss``. This shows both listening and non-listening (for TCP this means established connections) sockets, and returns ``state`` and ``foreign_address`` (ansible-collections/community.general#4762, ansible-collections/community.general#4953).
- maven_artifact - add a new ``unredirected_headers`` option that can be used with ansible-core 2.12 and above. The default value is to not use ``Authorization`` and ``Cookie`` headers on redirects for security reasons. With ansible-core 2.11, all headers are still passed on for redirects (ansible-collections/community.general#4812).
- pacman - added parameters ``reason`` and ``reason_for`` to set/change the install reason of packages (ansible-collections/community.general#4956).
- xfconf - add ``stdout``, ``stderr`` and ``cmd`` to the module results (ansible-collections/community.general#5037).
- xfconf - use ``do_raise()`` instead of defining custom exception class (ansible-collections/community.general#4975).
- xfconf_info - use ``do_raise()`` instead of defining custom exception class (ansible-collections/community.general#4975).

community.grafana
~~~~~~~~~~~~~~~~~

- Export dashboard with pretty printed JSON so that it becomes easier to compare changes with the previous version

community.hrobot
~~~~~~~~~~~~~~~~

- All software licenses are now in the ``LICENSES/`` directory of the collection root. Moreover, ``SPDX-License-Identifier:`` is used to declare the applicable license for every file that is not automatically generated (ansible-collections/community.hrobot#52).

community.postgresql
~~~~~~~~~~~~~~~~~~~~

- postgresql_membership - add the ``exact`` state value to be able to specify a list of only groups a user must be a member of (ansible-collections/community.postgresql#277).
- postgresql_pg_hba - add argument ``overwrite`` (bool, default: false) to remove unmanaged rules (ansible-collections/community.postgresql#297).
- postgresql_pg_hba - add argument ``rules_behavior`` (choices: conflict (default), combine) to fail when ``rules`` and normal rule-specific arguments are given or, when ``combine``, use them as defaults for the ``rules`` items (ansible-collections/community.postgresql#297).
- postgresql_pg_hba - add argument ``rules`` to specify a list of rules using the normal rule-specific argument in each item (ansible-collections/community.postgresql#297).

community.routeros
~~~~~~~~~~~~~~~~~~

- All software licenses are now in the ``LICENSES/`` directory of the collection root. Moreover, ``SPDX-License-Identifier:`` is used to declare the applicable license for every file that is not automatically generated (ansible-collections/community.routeros#101).

netapp.ontap
~~~~~~~~~~~~

- na_ontap_cluster_config role - support ``broadcast_domain`` and ``service_policy`` with REST.
- na_ontap_info - add computed serial_hex and naa_id for lun_info.
- na_ontap_info - add quota-policy-info.
- na_ontap_interface - support ``broadcast_domain`` with REST.
- na_ontap_login_messages - support cluster scope when using REST.
- na_ontap_lun - support ``qos_adaptive_policy_group`` with REST.
- na_ontap_motd - deprecated in favor of ``na_ontap_login_messages``.  Fail when use_rest is set to ``always`` as REST is not supported.
- na_ontap_ntp - new option ``key_id`` added.
- na_ontap_qtree - Added ``unix_user`` and ``unix_group`` options in REST.
- na_ontap_rest_info - add computed serial_hex and naa_id for storage/luns when serial_number is present.
- na_ontap_s3_users - ``secret_key`` and ``access_token`` are now returned when creating a user.
- na_ontap_service_processor_network - Added REST support.
- na_ontap_snapmirror - improve errror messages to be more specific and consistent.
- na_ontap_snapmirror - new option ``validate_source_path`` to disable this validation.
- na_ontap_snapmirror - validate source endpoint for ZAPI and REST, accounting for vserver local name.
- na_ontap_snapmirror - wait for the relationship to come back to idle after a resync.
- na_ontap_unix_group - added REST support.
- na_ontap_unix_user - Added REST support.
- na_ontap_unix_user - Added new option ``primary_gid`` aliased to ``group_id``.
- na_ontap_user - accept ``service_processor`` as an alias for ``service-processor`` with ZAPI, to be consistent with REST.
- na_ontap_volume - now defaults to REST with ``use_rest`` set to ``auto``, like every other module.  ZAPI can be forced with ``use_rest`` set to ``never``.
- na_ontap_vserver_create role - support ``broadcast_domain``, ``ipspace``, and ``service_policy`` with REST.

ovirt.ovirt
~~~~~~~~~~~

- During he_setup, configure ovn with he_host_name for correct operation of ovn (oVirt/ovirt-ansible-collection#563).
- Fix "ansible-lint" version 6.0.0 "yaml" violations for "disaster_recovery" role (oVirt/ovirt-ansible-collection#543).
- Fix "ansible-lint" version 6.0.0 violations for "disaster_recovery" & "remove_stale_lun" roles (oVirt/ovirt-ansible-collection#554).
- Fix ansible-lint for basic roles (oVirt/ovirt-ansible-collection#280).
- Updating the documentation - "vm_name" / "vm_id" and/or disk "id" parameter(s) are required when extending disk with non-unique name (oVirt/ovirt-ansible-collection#559).
- gluster_heal_info - Replacing gluster module to CLI to support RHV automation hub (oVirt/ovirt-ansible-collection#340).
- ovirt_disk - Add warning for disk attachments (oVirt/ovirt-ansible-collection#347).
- ovirt_disk - Fix disk attachment to VM (oVirt/ovirt-ansible-collection#361).
- ovirt_qos, ovirt_disk_profile, ovirt_disk - Add modules to allow for creation and updating of disk_profiles (oVirt/ovirt-ansible-collection#422).
- ovirt_snapshot - Add vm_id to select VM (oVirt/ovirt-ansible-collection#550).
- ovirt_vm - Add reset of VM (oVirt/ovirt-ansible-collection#538).
- ovirt_vm - Add virtio_scsi_enabled and multi_queues_enabled (oVirt/ovirt-ansible-collection#348).
- ovirt_vm - add volatile (oVirt/ovirt-ansible-collection#539).
- repositories - Add ovirt_repositories_rhsm_environment and FIPS fix (oVirt/ovirt-ansible-collection#483).
- repositories - Replace redhat_subscription and rhsm_repository with command (oVirt/ovirt-ansible-collection#346).

Deprecated Features
-------------------

community.hashi_vault
~~~~~~~~~~~~~~~~~~~~~

- vault_kv2_get lookup - the ``engine_mount_point option`` in the ``vault_kv2_get`` lookup only will change its default from ``kv`` to ``secret`` in community.hashi_vault version 4.0.0 (ansible-collections/community.hashi_vault#279).

Bugfixes
--------

Ansible-core
~~~~~~~~~~~~

- Move undefined check from concat to finalize (ansible/ansible#78156)
- ansible-doc - no longer list module and plugin aliases that are created with symlinks (ansible/ansible#78137).
- ansible-doc - when listing modules in collections, proceed recursively. This fixes module listing for community.general 5.x.y and community.network 4.x.y (ansible/ansible#78137).
- ansible-doc will not add 'website for' in ":ref:" substitutions as it made them confusing.
- file backed cache plugins now handle concurrent access by making atomic updates to the files.
- password lookup does not ignore k=v arguments anymore.
- user - Fix error "Permission denied" in user module while generating SSH keys (ansible/ansible#78017).

cisco.dnac
~~~~~~~~~~

- application_sets - delete function fixed.
- applications - delete function fixed.
- event_subscription - delete function fixed.
- file_info - Improve the module documentation.
- sda_fabric_authentication_profile - delete function fixed.
- sda_fabric_border_device - delete function fixed.
- sda_fabric_control_plane_device - delete function fixed.
- sda_fabric_edge_device - Change required payload parameter to deviceManagementIpAddress
- sda_fabric_edge_device - delete function fixed.
- sda_virtual_network - delete function fixed.
- transit_peer_network - Added status check

community.dns
~~~~~~~~~~~~~

- Update Public Suffix List.

community.general
~~~~~~~~~~~~~~~~~

- keyring_info - fix the result from the keyring library never getting returned (ansible-collections/community.general#4964).
- pacman - fixed name resolution of URL packages (ansible-collections/community.general#4959).
- passwordstore lookup plugin - fix ``returnall`` for gopass (ansible-collections/community.general#5027).
- passwordstore lookup plugin - fix password store path detection for gopass (ansible-collections/community.general#4955).
- proxmox - fix error handling when getting VM by name when ``state=absent`` (ansible-collections/community.general#4945).
- proxmox_kvm - fix error handling when getting VM by name when ``state=absent`` (ansible-collections/community.general#4945).
- slack - fix incorrect channel prefix ``#`` caused by incomplete pattern detection by adding ``G0`` and ``GF`` as channel ID patterns (ansible-collections/community.general#5019).
- xfconf - fix setting of boolean values (ansible-collections/community.general#4999, ansible-collections/community.general#5007).

community.hashi_vault
~~~~~~~~~~~~~~~~~~~~~

- Add SPDX license headers to individual files (ansible-collections/community.hashi_vault#282).
- Add missing ``BSD-2-Clause.txt`` file for BSD licensed content (ansible-collections/community.hashi_vault#275).
- Use the correct GPL license for plugin_utils (ansible-collections/community.hashi_vault#276).

community.postgresql
~~~~~~~~~~~~~~~~~~~~

- Include ``simplified_bsd.txt`` license file for various module utils.
- postgresql_info - fix pg version parsing (ansible-collections/community.postgresql#315).
- postgresql_ping - fix pg version parsing (ansible-collections/community.postgresql#315).
- postgresql_privs.py - add functionality when the PostgreSQL version is 9.0.0 or greater to incorporate ``ALL x IN SCHEMA`` syntax (ansible-collections/community.postgresql#282). Please see the official documentation for details regarding grants (https://www.postgresql.org/docs/9.0/sql-grant.html).
- postgresql_subscription - fix idempotence by casting the ``connparams`` dict variable (ansible-collections/community.postgresql#280).
- postgresql_user - add ``alter user``-statements in the return value ``queries`` (ansible-collections/community.postgresql#307).

community.rabbitmq
~~~~~~~~~~~~~~~~~~

- user module - set supports_check_mode flag to False, as the module does not actually support check mode.

community.routeros
~~~~~~~~~~~~~~~~~~

- Include ``LICENSES/BSD-2-Clause.txt`` file for the ``routeros`` module utils (ansible-collections/community.routeros#101).

community.sap_libs
~~~~~~~~~~~~~~~~~~

- syp_system_facts - fix a typo in the usage example which lead to an error if it used as supposed.

netapp.ontap
~~~~~~~~~~~~

- na_ontap_interface - FC interfaces - home_node should not be sent as location.home_node.
- na_ontap_interface - FC interfaces - home_port is not supported for ONTAP 9.7 or earlier.
- na_ontap_interface - FC interfaces - scope is not supported.
- na_ontap_interface - FC interfaces - service_policy is not supported.
- na_ontap_interface - enforce requirement for address/netmask for interfaces other than FC.
- na_ontap_interface - fix idempotency issue for cluster scoped interfaces when using REST.
- na_ontap_interface - fix potential node and uuid issues with LIF migration.
- na_ontap_interface - ignore 'none' when using REST rather than reporting unexpected protocol.
- na_ontap_lun - catch ZAPI error on get LUN.
- na_ontap_lun - ignore resize error if no change was required.
- na_ontap_lun - report error if flexvol_name is missing when using ZAPI.
- na_ontap_net_subnet - fixed ``ipspace`` option ignored in getting net subnet.
- na_ontap_qtree - fix idempotency issue on ``unix_permissions`` option.
- na_ontap_s3_buckets - Module will not fail on create if no ``policy`` is given.
- na_ontap_s3_buckets - Module will set ``enabled`` during create.
- na_ontap_s3_buckets - Module work currently when ``sid`` is a number.
- na_ontap_snapmirror - fix potential issue when destination is using REST but source is using ZAPI.
- na_ontap_snapmirror - relax check for source when using REST.
- na_ontap_svm - KeyError on CIFS when using REST with ONTAP 9.8 or lower.
- na_ontap_volume - ``volume_security_style`` was not modified if other security options were present with ZAPI.
- na_ontap_volume - fix idempotency issue on ``unix_permissions`` option.
- na_ontap_vserver_create role - add rule index as it is now required.

ovirt.ovirt
~~~~~~~~~~~

- HE - Handle migration to hosts that use systemd-coredump (oVirt/ovirt-ansible-collection#557).
- cluster_upgrade - Fix starting up pinned vms (oVirt/ovirt-ansible-collection#532).
- he - Align role with ansible-lint-6.0 (oVirt/ovirt-ansible-collection#545).
- hosted_engine - Specify fqcn for ovirt_system_option_info (oVirt/ovirt-ansible-collection#536).
- hosted_engine_setup - Fix cleanup on el9 (oVirt/ovirt-ansible-collection#533).
- image_template - Remove static (oVirt/ovirt-ansible-collection#537).
- image_template - Remove static no - unsupported in ansible 2.12 (oVirt/ovirt-ansible-collection#341).
- ovirt_host - Fix host wait (oVirt/ovirt-ansible-collection#531).
- ovirt_host - Fix restarted wait condition (oVirt/ovirt-ansible-collection#551).
- ovirt_storage_domain - Fix inaccessible exception (oVirt/ovirt-ansible-collection#534).
- ovirt_vm - check if user inputed graphical protocol (oVirt/ovirt-ansible-collection#542).
- repositories - Move fips check to satellite CA install block (oVirt/ovirt-ansible-collection#553).
- shutdown_env - Align role with ansible-lint-6.0 (oVirt/ovirt-ansible-collection#544).

t_systems_mms.icinga_director
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Add exception handling to diff and exist functions (https://github.com/T-Systems-MMS/ansible-collection-icinga-director/pull/176)

Known Issues
------------

netapp.ontap
~~~~~~~~~~~~

- na_ontap_snapshot - added documentation to use UTC format for ``expiry_time``.

New Plugins
-----------

Lookup
~~~~~~

- community.general.bitwarden - Retrieve secrets from Bitwarden

New Modules
-----------

community.general
~~~~~~~~~~~~~~~~~

Remote Management
^^^^^^^^^^^^^^^^^

Redfish
.......

- community.general.wdc_redfish_command - Manages WDC UltraStar Data102 Out-Of-Band controllers using Redfish APIs
- community.general.wdc_redfish_info - Manages WDC UltraStar Data102 Out-Of-Band controllers using Redfish APIs

community.routeros
~~~~~~~~~~~~~~~~~~

- community.routeros.api_info - Retrieve information from API
- community.routeros.api_modify - Modify data at paths with API

community.sap_libs
~~~~~~~~~~~~~~~~~~

- community.sap_libs.sap_pyrfc - This module executes rfc functions.

netapp.ontap
~~~~~~~~~~~~

- netapp.ontap.na_ontap_ntp_key - NetApp ONTAP NTP key
- netapp.ontap.na_ontap_s3_groups - NetApp ONTAP S3 groups
- netapp.ontap.na_ontap_s3_policies - NetApp ONTAP S3 Policies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants