This section discusses the behavioral changes between Ansible 2.8 and Ansible 2.9.
It is intended to assist in updating your playbooks, plugins and other parts of your Ansible infrastructure so they will work with this version of Ansible.
We suggest you read this page along with Ansible Changelog for 2.9 to understand what updates you may need to make.
This document is part of a collection on porting. The complete list of porting guides can be found at porting guides.
hash_behaviour
now affects inventory sources. If you have it set to merge
, the data you get from inventory might change and you will have to update playbooks accordingly. If you’re using the default setting (overwrite
), you will see no changes. Inventory was ignoring this setting.Ansible 2.9 handles “unsafe” data more robustly, ensuring that data marked “unsafe” is not templated. In previous versions, Ansible recursively marked all data returned by the direct use of lookup()
as “unsafe”, but only marked structured data returned by indirect lookups using with_X
style loops as “unsafe” if the returned elements were strings. Ansible 2.9 treats these two approaches consistently.
As a result, if you use with_dict
to return keys with templatable values, your templates may no longer work as expected in Ansible 2.9.
To allow the old behavior, switch from using with_X
to using loop
with a filter as described at Migrating from with_X to loop.
~/.ansible_galaxy
to ~/.ansible/galaxy_token
. You can configure both path and file name with the GALAXY_TOKEN_PATH config.No notable changes
The way to import a PowerShell or C# module util from a collection has changed in the Ansible 2.9 release. In Ansible 2.8 a util was imported with the following syntax:
#AnsibleRequires -CSharpUtil AnsibleCollections.namespace_name.collection_name.util_filename #AnsibleRequires -PowerShell AnsibleCollections.namespace_name.collection_name.util_filename
In Ansible 2.9 this was changed to:
#AnsibleRequires -CSharpUtil ansible_collections.namespace_name.collection_name.plugins.module_utils.util_filename #AnsibleRequires -PowerShell ansible_collections.namespace_name.collection_name.plugins.module_utils.util_filename
The change in the collection import name also requires any C# util namespaces to be updated with the newer name format. This is more verbose but is designed to make sure we avoid plugin name conflicts across separate plugin types and to standardise how imports work in PowerShell with how Python modules work.
win_get_url
and win_uri
module now sends requests with a default User-Agent
of ansible-httpget
. This can be changed by using the http_agent
key.apt
module now honors update_cache=false
while installing its own dependency and skips the cache update. Explicitly setting update_cache=true
or omitting the param update_cache
will result in a cache update while installing its own dependency.0o600 & ~umask
when the user did not specify a mode
parameter on file-based tasks. This was in response to a CVE report which we have reconsidered. As a result, the mode change has been reverted in 2.9.13, and mode will now default to 0o666 & ~umask
as in previous versions of Ansible.mode
parameter in all file-based tasks that accept it.dnf
and yum
- As of version 2.9.13, the dnf
module (and yum
action when it uses dnf
) now correctly validates GPG signatures of packages (CVE-2020-14365). If you see an error such as Failed to validate GPG signature for [package name]
, please ensure that you have imported the correct GPG key for the DNF repository and/or package you are using. One way to do this is with the rpm_key
module. Although we discourage it, in some cases it may be necessary to disable the GPG check. This can be done by explicitly adding disable_gpg_check: yes
in your dnf
or yum
task._facts
to _info
Ansible 2.9 renamed a lot of modules from <something>_facts
to <something>_info
, because the modules do not return Ansible facts. Ansible facts relate to a specific host. For example, the configuration of a network interface, the operating system on a unix server, and the list of packages installed on a Windows box are all Ansible facts. The renamed modules return values that are not unique to the host. For example, account information or region data for a cloud provider. Renaming these modules should provide more clarity about the types of return values each set of modules offers.
Module and module_utils files can now use relative imports to include other module_utils files. This is useful for shortening long import lines, especially in collections.
Example of using a relative import in collections:
# File: ansible_collections/my_namespace/my_collection/plugins/modules/my_module.py # Old way to use an absolute import to import module_utils from the collection: from ansible_collections.my_namespace.my_collection.plugins.module_utils import my_util # New way using a relative import: from ..module_utils import my_util
Modules and module_utils shipped with Ansible can use relative imports as well but the savings are smaller:
# File: ansible/modules/system/ping.py # Old way to use an absolute import to import module_utils from core: from ansible.module_utils.basic import AnsibleModule # New way using a relative import: from ...module_utils.basic import AnsibleModule
Each single dot (.
) represents one level of the tree (equivalent to ../
in filesystem relative links).
See also
The Python Relative Import Docs go into more detail of how to write relative imports.
The following modules no longer exist:
aos_*
modules. See the new modules at https://github.com/apstra.The following modules will be removed in Ansible 2.13. Please update update your playbooks accordingly.
The following functionality will be removed in Ansible 2.12. Please update update your playbooks accordingly.
vmware_cluster
DRS, HA and VSAN configuration; use vmware_cluster_drs, vmware_cluster_ha and vmware_cluster_vsan instead.The following functionality will be removed in Ansible 2.13. Please update update your playbooks accordingly.
openssl_certificate
deprecates the assertonly
provider. Please see the openssl_certificate documentation examples on how to replace the provider with the openssl_certificate_info, openssl_csr_info, openssl_privatekey_info and assert modules.For the following modules, the PyOpenSSL-based backend pyopenssl
has been deprecated and will be removed in Ansible 2.13:
The following modules have been renamed. The old name is deprecated and will be removed in Ansible 2.13. Please update update your playbooks accordingly.
ali_instance_facts
module was renamed to ali_instance_info.aws_acm_facts
module was renamed to aws_acm_info.aws_az_facts
module was renamed to aws_az_info.aws_caller_facts
module was renamed to aws_caller_info.aws_kms_facts
module was renamed to aws_kms_info.aws_region_facts
module was renamed to aws_region_info.aws_s3_bucket_facts
module was renamed to aws_s3_bucket_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.aws_sgw_facts
module was renamed to aws_sgw_info.aws_waf_facts
module was renamed to aws_waf_info.azure_rm_aks_facts
module was renamed to azure_rm_aks_info.azure_rm_aksversion_facts
module was renamed to azure_rm_aksversion_info.azure_rm_applicationsecuritygroup_facts
module was renamed to azure_rm_applicationsecuritygroup_info.azure_rm_appserviceplan_facts
module was renamed to azure_rm_appserviceplan_info.azure_rm_automationaccount_facts
module was renamed to azure_rm_automationaccount_info.azure_rm_autoscale_facts
module was renamed to azure_rm_autoscale_info.azure_rm_availabilityset_facts
module was renamed to azure_rm_availabilityset_info.azure_rm_cdnendpoint_facts
module was renamed to azure_rm_cdnendpoint_info.azure_rm_cdnprofile_facts
module was renamed to azure_rm_cdnprofile_info.azure_rm_containerinstance_facts
module was renamed to azure_rm_containerinstance_info.azure_rm_containerregistry_facts
module was renamed to azure_rm_containerregistry_info.azure_rm_cosmosdbaccount_facts
module was renamed to azure_rm_cosmosdbaccount_info.azure_rm_deployment_facts
module was renamed to azure_rm_deployment_info.azure_rm_resourcegroup_facts
module was renamed to azure_rm_resourcegroup_info.bigip_device_facts
module was renamed to bigip_device_info.bigiq_device_facts
module was renamed to bigiq_device_info.cloudformation_facts
module was renamed to cloudformation_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.cloudfront_facts
module was renamed to cloudfront_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.cloudwatchlogs_log_group_facts
module was renamed to cloudwatchlogs_log_group_info.digital_ocean_account_facts
module was renamed to digital_ocean_account_info.digital_ocean_certificate_facts
module was renamed to digital_ocean_certificate_info.digital_ocean_domain_facts
module was renamed to digital_ocean_domain_info.digital_ocean_firewall_facts
module was renamed to digital_ocean_firewall_info.digital_ocean_floating_ip_facts
module was renamed to digital_ocean_floating_ip_info.digital_ocean_image_facts
module was renamed to digital_ocean_image_info.digital_ocean_load_balancer_facts
module was renamed to digital_ocean_load_balancer_info.digital_ocean_region_facts
module was renamed to digital_ocean_region_info.digital_ocean_size_facts
module was renamed to digital_ocean_size_info.digital_ocean_snapshot_facts
module was renamed to digital_ocean_snapshot_info.digital_ocean_tag_facts
module was renamed to digital_ocean_tag_info.digital_ocean_volume_facts
module was renamed to digital_ocean_volume_info.ec2_ami_facts
module was renamed to ec2_ami_info.ec2_asg_facts
module was renamed to ec2_asg_info.ec2_customer_gateway_facts
module was renamed to ec2_customer_gateway_info.ec2_eip_facts
module was renamed to ec2_eip_info.ec2_elb_facts
module was renamed to ec2_elb_info.ec2_eni_facts
module was renamed to ec2_eni_info.ec2_group_facts
module was renamed to ec2_group_info.ec2_instance_facts
module was renamed to ec2_instance_info.ec2_lc_facts
module was renamed to ec2_lc_info.ec2_placement_group_facts
module was renamed to ec2_placement_group_info.ec2_snapshot_facts
module was renamed to ec2_snapshot_info.ec2_vol_facts
module was renamed to ec2_vol_info.ec2_vpc_dhcp_option_facts
module was renamed to ec2_vpc_dhcp_option_info.ec2_vpc_endpoint_facts
module was renamed to ec2_vpc_endpoint_info.ec2_vpc_igw_facts
module was renamed to ec2_vpc_igw_info.ec2_vpc_nacl_facts
module was renamed to ec2_vpc_nacl_info.ec2_vpc_nat_gateway_facts
module was renamed to ec2_vpc_nat_gateway_info.ec2_vpc_net_facts
module was renamed to ec2_vpc_net_info.ec2_vpc_peering_facts
module was renamed to ec2_vpc_peering_info.ec2_vpc_route_table_facts
module was renamed to ec2_vpc_route_table_info.ec2_vpc_subnet_facts
module was renamed to ec2_vpc_subnet_info.ec2_vpc_vgw_facts
module was renamed to ec2_vpc_vgw_info.ec2_vpc_vpn_facts
module was renamed to ec2_vpc_vpn_info.ecs_service_facts
module was renamed to ecs_service_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ecs_taskdefinition_facts
module was renamed to ecs_taskdefinition_info.efs_facts
module was renamed to efs_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.elasticache_facts
module was renamed to elasticache_info.elb_application_lb_facts
module was renamed to elb_application_lb_info.elb_classic_lb_facts
module was renamed to elb_classic_lb_info.elb_target_facts
module was renamed to elb_target_info.elb_target_group_facts
module was renamed to elb_target_group_info.gcp_bigquery_dataset_facts
module was renamed to gcp_bigquery_dataset_info.gcp_bigquery_table_facts
module was renamed to gcp_bigquery_table_info.gcp_cloudbuild_trigger_facts
module was renamed to gcp_cloudbuild_trigger_info.gcp_compute_address_facts
module was renamed to gcp_compute_address_info.gcp_compute_backend_bucket_facts
module was renamed to gcp_compute_backend_bucket_info.gcp_compute_backend_service_facts
module was renamed to gcp_compute_backend_service_info.gcp_compute_disk_facts
module was renamed to gcp_compute_disk_info.gcp_compute_firewall_facts
module was renamed to gcp_compute_firewall_info.gcp_compute_forwarding_rule_facts
module was renamed to gcp_compute_forwarding_rule_info.gcp_compute_global_address_facts
module was renamed to gcp_compute_global_address_info.gcp_compute_global_forwarding_rule_facts
module was renamed to gcp_compute_global_forwarding_rule_info.gcp_compute_health_check_facts
module was renamed to gcp_compute_health_check_info.gcp_compute_http_health_check_facts
module was renamed to gcp_compute_http_health_check_info.gcp_compute_https_health_check_facts
module was renamed to gcp_compute_https_health_check_info.gcp_compute_image_facts
module was renamed to gcp_compute_image_info.gcp_compute_instance_facts
module was renamed to gcp_compute_instance_info.gcp_compute_instance_group_facts
module was renamed to gcp_compute_instance_group_info.gcp_compute_instance_group_manager_facts
module was renamed to gcp_compute_instance_group_manager_info.gcp_compute_instance_template_facts
module was renamed to gcp_compute_instance_template_info.gcp_compute_interconnect_attachment_facts
module was renamed to gcp_compute_interconnect_attachment_info.gcp_compute_network_facts
module was renamed to gcp_compute_network_info.gcp_compute_region_disk_facts
module was renamed to gcp_compute_region_disk_info.gcp_compute_route_facts
module was renamed to gcp_compute_route_info.gcp_compute_router_facts
module was renamed to gcp_compute_router_info.gcp_compute_ssl_certificate_facts
module was renamed to gcp_compute_ssl_certificate_info.gcp_compute_ssl_policy_facts
module was renamed to gcp_compute_ssl_policy_info.gcp_compute_subnetwork_facts
module was renamed to gcp_compute_subnetwork_info.gcp_compute_target_http_proxy_facts
module was renamed to gcp_compute_target_http_proxy_info.gcp_compute_target_https_proxy_facts
module was renamed to gcp_compute_target_https_proxy_info.gcp_compute_target_pool_facts
module was renamed to gcp_compute_target_pool_info.gcp_compute_target_ssl_proxy_facts
module was renamed to gcp_compute_target_ssl_proxy_info.gcp_compute_target_tcp_proxy_facts
module was renamed to gcp_compute_target_tcp_proxy_info.gcp_compute_target_vpn_gateway_facts
module was renamed to gcp_compute_target_vpn_gateway_info.gcp_compute_url_map_facts
module was renamed to gcp_compute_url_map_info.gcp_compute_vpn_tunnel_facts
module was renamed to gcp_compute_vpn_tunnel_info.gcp_container_cluster_facts
module was renamed to gcp_container_cluster_info.gcp_container_node_pool_facts
module was renamed to gcp_container_node_pool_info.gcp_dns_managed_zone_facts
module was renamed to gcp_dns_managed_zone_info.gcp_dns_resource_record_set_facts
module was renamed to gcp_dns_resource_record_set_info.gcp_iam_role_facts
module was renamed to gcp_iam_role_info.gcp_iam_service_account_facts
module was renamed to gcp_iam_service_account_info.gcp_pubsub_subscription_facts
module was renamed to gcp_pubsub_subscription_info.gcp_pubsub_topic_facts
module was renamed to gcp_pubsub_topic_info.gcp_redis_instance_facts
module was renamed to gcp_redis_instance_info.gcp_resourcemanager_project_facts
module was renamed to gcp_resourcemanager_project_info.gcp_sourcerepo_repository_facts
module was renamed to gcp_sourcerepo_repository_info.gcp_spanner_database_facts
module was renamed to gcp_spanner_database_info.gcp_spanner_instance_facts
module was renamed to gcp_spanner_instance_info.gcp_sql_database_facts
module was renamed to gcp_sql_database_info.gcp_sql_instance_facts
module was renamed to gcp_sql_instance_info.gcp_sql_user_facts
module was renamed to gcp_sql_user_info.gcp_tpu_node_facts
module was renamed to gcp_tpu_node_info.gcpubsub_facts
module was renamed to gcpubsub_info.github_webhook_facts
module was renamed to github_webhook_info.gluster_heal_facts
module was renamed to gluster_heal_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hcloud_datacenter_facts
module was renamed to hcloud_datacenter_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hcloud_floating_ip_facts
module was renamed to hcloud_floating_ip_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hcloud_image_facts
module was renamed to hcloud_image_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hcloud_location_facts
module was renamed to hcloud_location_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hcloud_server_facts
module was renamed to hcloud_server_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hcloud_server_type_facts
module was renamed to hcloud_server_type_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hcloud_ssh_key_facts
module was renamed to hcloud_ssh_key_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hcloud_volume_facts
module was renamed to hcloud_volume_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.hpilo_facts
module was renamed to hpilo_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.iam_mfa_device_facts
module was renamed to iam_mfa_device_info.iam_role_facts
module was renamed to iam_role_info.iam_server_certificate_facts
module was renamed to iam_server_certificate_info.idrac_redfish_facts
module was renamed to idrac_redfish_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.intersight_facts
module was renamed to intersight_info.jenkins_job_facts
module was renamed to jenkins_job_info.k8s_facts
module was renamed to k8s_info.memset_memstore_facts
module was renamed to memset_memstore_info.memset_server_facts
module was renamed to memset_server_info.one_image_facts
module was renamed to one_image_info.onepassword_facts
module was renamed to onepassword_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.oneview_datacenter_facts
module was renamed to oneview_datacenter_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.oneview_enclosure_facts
module was renamed to oneview_enclosure_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.oneview_ethernet_network_facts
module was renamed to oneview_ethernet_network_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.oneview_fc_network_facts
module was renamed to oneview_fc_network_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.oneview_fcoe_network_facts
module was renamed to oneview_fcoe_network_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.oneview_logical_interconnect_group_facts
module was renamed to oneview_logical_interconnect_group_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.oneview_network_set_facts
module was renamed to oneview_network_set_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.oneview_san_manager_facts
module was renamed to oneview_san_manager_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_flavor_facts
module was renamed to os_flavor_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_image_facts
module was renamed to os_image_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_keystone_domain_facts
module was renamed to os_keystone_domain_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_networks_facts
module was renamed to os_networks_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_port_facts
module was renamed to os_port_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_project_facts
module was renamed to os_project_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_server_facts
module was renamed to os_server_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_subnets_facts
module was renamed to os_subnets_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.os_user_facts
module was renamed to os_user_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_affinity_label_facts
module was renamed to ovirt_affinity_label_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_api_facts
module was renamed to ovirt_api_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_cluster_facts
module was renamed to ovirt_cluster_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_datacenter_facts
module was renamed to ovirt_datacenter_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_disk_facts
module was renamed to ovirt_disk_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_event_facts
module was renamed to ovirt_event_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_external_provider_facts
module was renamed to ovirt_external_provider_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_group_facts
module was renamed to ovirt_group_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_host_facts
module was renamed to ovirt_host_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_host_storage_facts
module was renamed to ovirt_host_storage_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_network_facts
module was renamed to ovirt_network_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_nic_facts
module was renamed to ovirt_nic_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_permission_facts
module was renamed to ovirt_permission_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_quota_facts
module was renamed to ovirt_quota_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_scheduling_policy_facts
module was renamed to ovirt_scheduling_policy_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_snapshot_facts
module was renamed to ovirt_snapshot_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_storage_domain_facts
module was renamed to ovirt_storage_domain_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_storage_template_facts
module was renamed to ovirt_storage_template_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_storage_vm_facts
module was renamed to ovirt_storage_vm_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_tag_facts
module was renamed to ovirt_tag_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_template_facts
module was renamed to ovirt_template_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_user_facts
module was renamed to ovirt_user_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_vm_facts
module was renamed to ovirt_vm_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.ovirt_vmpool_facts
module was renamed to ovirt_vmpool_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.python_requirements_facts
module was renamed to python_requirements_info.rds_instance_facts
module was renamed to rds_instance_info.rds_snapshot_facts
module was renamed to rds_snapshot_info.redfish_facts
module was renamed to redfish_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.redshift_facts
module was renamed to redshift_info.route53_facts
module was renamed to route53_info.smartos_image_facts
module was renamed to smartos_image_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.vertica_facts
module was renamed to vertica_info. When called with the new name, the module no longer returns ansible_facts
. To access return values, register a variable.vmware_cluster_facts
module was renamed to vmware_cluster_info.vmware_datastore_facts
module was renamed to vmware_datastore_info.vmware_guest_facts
module was renamed to vmware_guest_info.vmware_guest_snapshot_facts
module was renamed to vmware_guest_snapshot_info.vmware_tag_facts
module was renamed to vmware_tag_info.vmware_vm_facts
module was renamed to vmware_vm_info.xenserver_guest_facts
module was renamed to xenserver_guest_info.zabbix_group_facts
module was renamed to zabbix_group_info.zabbix_host_facts
module was renamed to zabbix_host_info.folder
parameter to place dvswitch in user defined folder. This option makes datacenter
as an optional parameter.folder
parameter to place datastore cluster in user defined folder. This option makes datacenter
as an optional parameter.db_list
parameter in addition to db
parameter. This db_list
parameter refers to list of database names. db
parameter will be deprecated in version 2.13.instance
, username
and password
parameters. This change marks these parameters as optional.force
option in win_firewall_rule
has been removed.ownca
provider creates authority key identifiers if not explicitly disabled with ownca_create_authority_key_identifier: no
. This is only the case for the cryptography
backend, which is selected by default if the cryptography
library is available.ownca
and selfsigned
providers create subject key identifiers if not explicitly disabled with ownca_create_subject_key_identifier: never_create
resp. selfsigned_create_subject_key_identifier: never_create
. If a subject key identifier is provided by the CSR, it is taken; if not, it is created from the public key. This is only the case for the cryptography
backend, which is selected by default if the cryptography
library is available.mode
, owner
, group
, and so on). If you need to change permissions / ownership on one key, use the file to modify it after it is created.redis_kv
use redis instead.No notable changes
Ansible 2.9 introduced the first batch of network resource modules. Sections of a network device’s configuration can be thought of as a resource provided by that device. Network resource modules are intentionally scoped to configure a single resource and you can combine them as building blocks to configure complex network services. The older modules are deprecated in Ansible 2.9 and will be removed in Ansible 2.13. You should scan the list of deprecated modules above and replace them with the new network resource modules in your playbooks. See Ansible Network Features in 2.9 for details.
gather_facts
support for network devicesIn Ansible 2.9, the gather_facts
keyword now supports gathering network device facts in standardized key/value pairs. You can feed these network facts into further tasks to manage the network device. You can also use the new gather_network_resources
parameter with the network *_facts
modules (such as eos_facts) to return just a subset of the device configuration. See Gathering facts from network devices for an example.
Top-level connection arguments like username
, host
, and password
are removed in version 2.9.
OLD In Ansible < 2.4
- name: example of using top-level options for connection properties ios_command: commands: show version host: "{{ inventory_hostname }}" username: cisco password: cisco authorize: yes auth_pass: cisco
Change your playbooks to the connection types network_cli
and netconf
using standard Ansible connection properties, and setting those properties in inventory by group. As you update your playbooks and inventory files, you can easily make the change to become
for privilege escalation (on platforms that support it). For more information, see the using become with network modules guide and the platform documentation.
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/porting_guides/porting_guide_2.9.html