Ansible 2.10 移植指南

警告

在 Ansible 2.10 中,许多插件和模块已迁移到 Ansible Galaxy 上的集合。您的剧本应该无需任何更改即可继续工作。我们建议您开始在剧本中使用全限定集合名称 (FQCN),作为指示使用哪个集合的明确且权威的指示符,因为某些集合可能包含重复的模块名称。您可以搜索 所有模块的索引 以查找模块已重新定位到的集合。

本节讨论 Ansible 2.9 和 Ansible 2.10 之间的行为变化。

它旨在帮助您更新您的剧本、插件和 Ansible 基础架构的其他部分,以便它们能够与该版本的 Ansible 兼容。

我们建议您阅读此页面以及 Ansible 2.10 的变更日志,以了解您可能需要进行哪些更新。

从 2.10 开始,Ansible 包含两个部分

  • ansible-base,其中包括带有一小部分插件和模块的命令行工具,以及

  • 一组 集合

Ansible-base 2.10 移植指南 包含在本移植指南中。完整的移植指南列表可以在 移植指南 中找到。

剧本

  • 修复了布尔关键字上的一个错误,该错误导致随机字符串返回“False”,现在如果它们不是正确的布尔值,则应返回错误。例如:diff: yes- 返回 False

  • 一个新的事实,ansible_processor_nproc 反映了可用于进程的 vcpu 数量(回退到可用于调度程序的 vcpu 数量)。

命令行

  • ansible-galaxy login 命令已被删除,因为它使用的用于 GitHub 身份验证的基础 API 即将关闭。现在,通过 ansible-galaxy 将角色或集合发布到 Galaxy 需要将 Galaxy API 令牌通过令牌文件(默认位置 ~/.ansible/galaxy_token)传递到 CLI,或者(不安全地)通过 --token 参数传递到 ansible-galaxy

已弃用

模块

警告

此页面上的链接可能不会指向模块的最新版本。我们将在稍后更新它们。

  • ansible-base 的 2.10.0 版本将基于文件的任务的默认模式更改为 0o600 & ~umask,当用户未在基于文件的任务上指定 mode 参数时。这是为了响应 CVE 报告,我们对此进行了重新考虑。因此,模式更改已在 2.10.1 中恢复,并且模式现在将默认为 0o666 & ~umask,如 Ansible 的先前版本中一样。

  • 如果您在使用 2.10.0 时更改了任何任务以指定权限较低的权限,则这些更改在 2.10.1 中将不再需要(但不会造成任何损害)。

  • 为了避免 CVE-2020-1736 中提出的问题,请在所有接受它的基于文件的任务中指定 mode 参数。

  • dnfyum - 从 2.10.1 版本开始,dnf 模块(以及当它使用 dnf 时的 yum 操作)现在可以正确验证软件包的 GPG 签名(CVE-2020-14365)。如果您看到类似于 Failed to validate GPG signature for [package name] 的错误,请确保您已为正在使用的 DNF 存储库和/或软件包导入了正确的 GPG 密钥。一种方法是使用 rpm_key 模块。尽管我们不鼓励这样做,但在某些情况下可能需要禁用 GPG 检查。这可以通过在您的 dnfyum 任务中显式添加 disable_gpg_check: yes 来完成。

值得注意的模块更改

  • 使用 add_file_common_args=True 创建的 Ansible 模块添加了许多未记录的参数,这些参数主要用于简化某些操作插件的实现。未记录的参数 srcfollowforcecontentbackupremote_srcregexpdelimiterdirectory_mode 现在不再添加。依赖于添加这些选项的模块需要自行指定它们。

  • 当运行 Ansible 模块时,Ansible 不再在当前工作目录(通常是 remote_user 的主目录)中查找 Python 模块。这是为了修复在 OpenBSD 上成为非特权用户以及在当前工作目录可由恶意用户写入时减轻任何攻击载体。在托管节点上的系统范围位置或 remote_user$PYTHONPATH 中的其他目录中安装运行 Ansible 模块所需的任何 Python 模块,并且 become_user 可读。

插件

查找插件名称大小写敏感性

  • 在 Ansible 2.10 之前,作为 lookup() 函数参数传递的查找插件名称被视为不区分大小写,而通过 with_<lookup_name> 调用的查找则区分大小写。2.10 版本使 lookup()with_ 都保持一致,均区分大小写。

值得注意的插件更改

  • 集合中的缓存插件可用于缓存来自清单插件的数据。以前,集合中的缓存插件只能用于事实缓存。

  • 已删除 FILE_COMMON_ARGUMENTS 中一些未记录的参数;使用这些参数的插件,特别是动作插件,需要进行调整。已删除的未记录参数包括 srcfollowforcecontentbackupremote_srcregexpdelimiterdirectory_mode

执行模块的动作插件应使用模块的全限定名

  • 动作插件在调用模块时,应尽可能地向 _execute_module() 传递显式、全限定的模块名称(例如,ansible.builtin.file 而不是 file)。这可确保不会使用任务的集合搜索顺序来解析模块。否则,可能会意外地使用搜索路径中较早的集合中的模块。

移植自定义脚本

无重大更改

v2.10.7 移植指南

重大更改

community.general

主要更改

  • 将 community.okd 集合的版本限制为 1.0.0。先前包含的版本 1.0.1 依赖于 kubernetes.core,因此需要安装 Ansible 2.10 中未包含的其他集合。版本 1.0.0 与 1.0.1 基本相同,只是它使用 Ansible 2.10 中包含的 community.kubernetes。

ovirt.ovirt

servicenow.servicenow

  • 添加新的测试(查找无结果、搜索多个)

  • 添加相关测试

  • 添加对 ServiceNOW 表格 API display_value、exclude_reference_link 和 suppress_pagination_header 的支持

  • 使用 pysnow >=0.6.0 的新 API

已弃用的功能

cisco.nxos

  • 已弃用 nxos_bgpnxos_bgp_neighbor 模块,建议使用 nxos_bgp_global 资源模块。

community.vmware

  • vmware_host_firewall_manager - 在 2.0.0 版本发布后,将不允许在 allowed_hosts 字典中创建没有 allowed_ip 条目的新规则。

v2.10.6 移植指南

主要更改

community.general

  • 对于 community.general 2.0.0,kubevirt 模块将移至 community.kubevirt 集合。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 kubevirt 模块,则需要调整您的 playbook 和角色以使用以 community.kubevirt. 开头的 FQCN,而不是 community.general.,例如,将任务中的 community.general.kubevirt_vm 替换为 community.kubevirt.kubevirt_vm

    如果您使用 ansible-base 并手动安装了 community.general 并依赖于 kubevirt 模块,则必须确保也安装了 community.kubevirt 集合。如果您使用 FQCN,例如 community.general.kubevirt_vm 而不是 kubevirt_vm,它将继续工作,但我们仍然建议您调整 FQCN。

community.network

  • 对于 community.network 2.0.0,Cisco NSO 模块将移至 cisco.nso 集合。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 Cisco NSO 模块,则需要调整您的 playbook 和角色以使用以 cisco.nso. 开头的 FQCN,而不是 community.network.,例如,将任务中的 community.network.nso_config 替换为 cisco.nso.nso_config

    如果您使用 ansible-base 并手动安装了 community.network 并依赖于 Cisco NSO 模块,则必须确保也安装了 cisco.nso 集合。如果您使用 FQCN,例如 community.network.nso_config 而不是 nso_config,它将继续工作,但我们仍然建议您调整 FQCN。

  • 对于 community.network 2.0.0,FortiOS 模块将移至 community.fortios 集合。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 FortiOS 模块,则需要调整您的 playbook 和角色以使用以 community.fortios. 开头的 FQCN,而不是 community.network.,例如,将任务中的 community.network.fmgr_device 替换为 community.fortios.fmgr_device

    如果您使用 ansible-base 并手动安装了 community.network 并依赖于 FortiOS 模块,则必须确保也安装了 community.fortios 集合。如果您使用 FQCN,例如 community.network.fmgr_device 而不是 fmgr_device,它将继续工作,但我们仍然建议您调整 FQCN。

f5networks.f5_modules

  • 向 bigip_ucs_fetch 模块添加了 async_timeout 参数,以允许自定义模块等待异步接口。

  • 更改 bigip_ucs_fetch 模块,使其在生成 UCS 文件时使用异步接口。

v2.10.5 移植指南

重大更改

community.hashi_vault

主要更改

community.general

  • 对于 community.general 2.0.0,Google 模块将移至 community.google 集合。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 Google 模块,则需要调整您的 playbook 和角色以使用以 community.google. 开头的 FQCN,而不是 community.general.,例如,将任务中的 community.general.gcpubsub 替换为 community.google.gcpubsub

    如果您使用 ansible-base 并手动安装了 community.general 并且依赖于 Google 模块,则必须确保也安装了 community.google 集合。如果您使用 FQCN,例如 community.general.gcpubsub 而不是 gcpubsub,它将继续工作,但我们仍然建议您调整 FQCN。

  • 对于 community.general 2.0.0,OC 连接插件将移至 community.okd 集合。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 OC 连接插件,则需要调整您的 playbook 和角色以使用 FQCN community.okd.oc,而不是 community.general.oc

    如果您使用 ansible-base 并手动安装了 community.general 并且依赖于 OC 连接插件,则必须确保也安装了 community.okd 集合。如果您使用 FQCN,换句话说,使用 community.general.oc 而不是 oc,它将继续工作,但我们仍然建议您调整此 FQCN。

  • 对于 community.general 2.0.0,hashi_vault 查找插件将移至 community.hashi_vault 集合。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 hashi_vault 查找插件,则需要调整您的 playbook 和角色以使用 FQCN community.hashi_vault.hashi_vault,而不是 community.general.hashi_vault

    如果您使用 ansible-base 并手动安装了 community.general 并且依赖于 hashi_vault 查找插件,则必须确保也安装了 community.hashi_vault 集合。如果您使用 FQCN,换句话说,使用 community.general.hashi_vault 而不是 hashi_vault,它将继续工作,但我们仍然建议您调整此 FQCN。

netbox.netbox

  • nb_inventory - 添加 dns_name 选项,当 True 且设备具有主 IP 地址时,将 dns_name 添加到主机。(#394)

  • nb_inventory - 添加 status 作为 group_by 选项。(398)

  • nb_inventory - 将 extracted_primary_ip 移动以允许 config_contextcustom_field 覆盖。(#377)

  • nb_inventory - 由于 NetBox 2.10 的更改,服务现在是整数列表。(#396)

  • nb_lookup - 允许传递 ID 并使用 .get 而不是 .filter。(#376)

  • nb_lookup - 允许通过 env 查找 api_endpointtoken。(#391)

已弃用的功能

community.aws

community.docker

community.hashi_vault

v2.10.4 移植指南

重大更改

community.hrobot

主要更改

community.general

  • 对于 community.general 2.0.0,Hetzner Robot 模块将移至 community.hrobot 集合。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 Hetzner Robot 模块,则需要调整您的 playbook 和角色以使用以 community.hrobot. 开头的 FQCN,而不是 community.general.hetzner_,例如,将任务中的 community.general.hetzner_firewall_info 替换为 community.hrobot.firewall_info

    如果您使用 ansible-base 并手动安装了 community.general 并且依赖于 Hetzner Robot 模块,则必须确保也安装了 community.hrobot 集合。如果您使用 FQCN,即使用 community.general.hetzner_failover_ip 而不是 hetzner_failover_ip,它将继续工作,但我们仍然建议您调整 FQCN。

  • 对于 community.general 2.0.0,docker 模块和插件将移至 community.docker 集合。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 docker 内容,则需要调整您的 playbook 和角色以使用以 community.docker. 开头的 FQCN,而不是 community.general.,例如,将任务中的 community.general.docker_container 替换为 community.docker.docker_container

    如果您使用 ansible-base 并手动安装了 community.general 并且依赖于 docker 内容,则必须确保也安装了 community.docker 集合。如果您使用 FQCN,即使用 community.general.docker_container 而不是 docker_container,它将继续工作,但我们仍然建议您调整 FQCN。

  • 对于 community.general 2.0.0 版本,postgresql 模块和插件将迁移至 community.postgresql 集合。系统会插入重定向,因此使用 Ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 postgresql 内容,则需要调整您的 playbook 和角色,使用以 community.postgresql. 开头的 FQCN,而不是 community.general.,例如,将任务中的 community.general.postgresql_info 替换为 community.postgresql.postgresql_info

    如果您使用 ansible-base 并手动安装了 community.general 且依赖于 postgresql 内容,则必须确保也安装了 community.postgresql 集合。如果您使用 FQCN,即 community.general.postgresql_info 而不是 postgresql_info,它将继续工作,但我们仍然建议您调整 FQCN。

  • community.general 集合不再依赖于 ansible.posix 集合 (https://github.com/ansible-collections/community.general/pull/1157).

community.network

  • 对于 community.network 2.0.0 版本,routeros 模块和插件将迁移至 community.routeros 集合。系统会插入重定向,因此使用 Ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式地使用此集合中的 routeros 内容,则需要调整您的 playbook 和角色,使用以 community.routeros. 开头的 FQCN,而不是 community.network.routeros_,例如,将任务中的 community.network.routeros_api 替换为 community.routeros.api

    如果您使用 ansible-base 并手动安装了 community.network 且依赖于 routeros 内容,则必须确保也安装了 community.routeros 集合。如果您使用 FQCN,即 community.network.routeros_command 而不是 routeros_command,它将继续工作,但我们仍然建议您调整 FQCN。

  • 在 community.network 2.0.0 版本中,fortimanager httpapi 插件将被移除,并替换为指向 fortios.fortimanager 集合中相应插件的重定向。对于 Ansible 2.10 和 ansible-base 2.10 用户,这意味着它将继续工作,前提是安装了该集合。对于 Ansible 2.9 用户,这意味着他们必须将 FQCN 从 community.network.fortimanager 调整为 fortios.fortimanager.fortimanager (https://github.com/ansible-collections/community.network/pull/151).

community.okd

已移除的功能

community.docker

已弃用功能

community.general

community.network

v2.10.2 移植指南

重大更改

Ansible-base

主要更改

f5networks.f5_modules

  • 将电话回家 Teem 集成添加到所有模块中,可以通过设置 F5_TEEM 环境变量或 no_f5_teem 提供程序参数来禁用此功能。

ovirt.ovirt

已移除功能

f5networks.f5_modules

  • 已从 bigip_virtual_address 模块中移除 arp_state 参数。

已弃用功能

cisco.nxos

  • 已弃用 nxos_interface_ospf,推荐使用 nxos_ospf_interfaces 资源模块。

v2.10.1 移植指南

主要更改

community.kubernetes

已弃用功能

cisco.nxos

  • 已弃用 nxos_smu,推荐使用 nxos_rpm 模块。

  • 已弃用 nxos_ospf_vrf 模块,推荐使用 nxos_ospfv2nxos_ospfv3 资源模块。

v2.10.0 移植指南

已知问题

  • 由于 pip 的限制,您无法从 ansible-2.9 或更早版本升级到 ansible-2.10 或更高版本。您必须先使用 pip uninstall ansible 卸载,然后才能使用 pip 安装新版本。如果您尝试在不先卸载的情况下使用 pip 升级 Ansible,安装程序会警告您先卸载。

  • 构成 ansible-2.10.0 软件包的各个集合可以独立查看。但是,ansible-galaxy 目前未列出它们。要使用 ansible-galaxy 查看这些集合,请明确指定 ansible 已安装集合的位置 - COLLECTION_INSTALL=$(python -c 'import ansible, os.path ; print("%s/../ansible_collections" % os.path.dirname(ansible.__file__))') ansible-galaxy collection list -p "$COLLECTION_INSTALL"

  • 这些 fortios 模块不会自动从其 2.9.x 名称重定向到集合中的新 2.10.x 名称。您必须修改您的 playbook 以使用它们的完全限定集合名称。您可以使用文档(https://docs.ansible.org.cn/ansible/2.10/collections/fortinet/fortios/)了解 fortinet.fortios 集合的完全限定集合名称。

    • fortios_address

    • fortios_config

    • fortios_firewall_DoS_policy

    • fortios_firewall_DoS_policy6

    • fortios_ipv4_policy

    • fortios_switch_controller_802_1X_settings

    • fortios_switch_controller_security_policy_802_1X

    • fortios_system_firmware_upgrade

    • fortios_system_nd_proxy

    • fortios_webfilter

community.grafana

  • grafana_datasource 未正确设置密码(#113)。

重大更改

  • cisco.nxos.nxos_igmp_interface - 不再支持已弃用的 oif_prefixoif_source 选项。它们已被 oif_ps 取代。

  • community.grafana.grafana_dashboard - 参数 message 已重命名为 commit_message,因为 Ansible Core 引擎内部使用 message

  • purestorage.flashblade.purefb_fs - 不再支持已弃用的 nfs 选项。它已被 nfsv3 取代。

amazon.aws

  • aws_s3 - 现在即使版本化的存储桶不为空也可以删除它们 - 将模式设置为删除以删除版本化的存储桶及其中的所有内容。

ansible.windows

  • setup - 确保 ansible_date_time.epoch 是自 UTC 中的纪元以来的秒数,以镜像 POSIX 事实。 ansible_date_time.epoch_local 包含自本地时区中的纪元以来的秒数,以实现向后兼容性。

  • setup - 现在将在链路本地地址的 ansible_ip_addresses 中添加 IPv6 范围。

  • setup - ansible_processor 现在将在其他值之前返回索引,以匹配 POSIX 事实行为。

  • win_find - 不再按目录大小进行过滤,此功能存在大量错误,降低了模块速度,并且不是 find 模块支持的方案。

  • win_find - 模块已重构以更好地匹配 find 模块的行为。以下是更改的内容:
    • 当由 paths 指定的目录不存在或为文件时,它将不再失败,而只会警告用户。

    • 联接点不再报告为 islnk,请使用 isjunction 正确报告这些文件。此行为与 win_stat 模块匹配。

    • 目录不再返回 size,这与 statfind 的行为匹配,并且由于难以正确报告目录大小而被删除。

  • win_user - 将 description 的幂等性检查更改为区分大小写。

  • win_user - 将 fullname 的幂等性检查更改为区分大小写。

cisco.meraki

  • meraki_device - 将标签从字符串类型更改为列表类型

  • meraki_device - 移除 serial_lldp_cdp 参数

  • meraki_device - 移除 serial_uplink 参数

  • meraki_intrusion_prevention - 将 whitedlisted_rules 重命名为 allowed_rules

  • meraki_mx_l3_firewall - 规则响应现在位于 rules 列表中

  • meraki_mx_l7_firewall - 将 blacklisted_countries 重命名为 blocked_countries

  • meraki_mx_l7_firewall - 将 whitelisted_countries 重命名为 allowed_countries

  • meraki_network - 在网络创建期间无法设置本地和远程状态页面设置

  • meraki_network - disableRemoteStatusPage 响应现在为 remote_status_page_enabled

  • meraki_network - disable_my_meraki_com 响应现在为 local_status_page_enabled

  • meraki_network - disable_my_meraki 已弃用

  • meraki_network - enable_my_meraki 现在称为 local_status_page_enabled

  • meraki_network - enable_remote_status_page 现在称为 remote_status_page_enabled

  • meraki_network - VLAN 状态的 enabled 响应现在为 vlans_enabled

  • meraki_network - tagstype 现在返回列表

  • meraki_snmp - peer_ips 现在为列表

  • meraki_switchport - access_policy_number 现在为整数,而不是字符串

  • meraki_switchport - tags 现在为列表,而不是字符串

  • meraki_webhook - 查询测试状态现在使用查询的状态。

community.general

  • 用于 oc.py 连接插件的 auth 上下文的环境变量已更正 (K8S_CONTEXT)。它错误地使用了初始小写字母 k。(https://github.com/ansible-collections/community.general/pull/377)。

  • bigpanda - 参数 message 已重命名为 deployment_message,因为 message 在 Ansible Core 引擎内部使用。

  • cisco_spark - 模块选项 message 已重命名为 msg,因为 message 在 Ansible Core 引擎内部使用 (https://github.com/ansible/ansible/issues/39295)

  • datadog - 参数 message 已重命名为 notification_message,因为 message 在 Ansible Core 引擎内部使用。

  • docker_container - 不再将非匿名卷或绑定信息作为 Volumes 传递给 Docker 守护程序。这提高了与 docker CLI 程序的兼容性。请注意,如果您在 comparisons 中指定 volumes: strict,这可能会导致使用 Ansible 2.9 或更早版本中的 docker_container 创建的现有容器重新启动。

  • docker_container - 对端口范围的支持已调整为与 docker 命令行实用程序更兼容:一个端口容器范围与多个端口主机范围相结合将不再导致仅使用第一个主机端口,而是将整个范围传递给 Docker,以便使用该范围内的空闲端口。

  • hashi_vault lookup - 现在在使用 KV v2 密钥引擎时返回最新版本。以前,它返回了密钥的所有版本,这需要额外的步骤来提取和筛选所需的版本。

  • log_plays callback - 向回调插件生成的日志添加缺失的信息。这更改了日志消息格式 (https://github.com/ansible-collections/community.general/pull/442)。

  • pkgng - 使用 name: *state: absent 将不再从系统中删除所有已安装的软件包。现在它是一个空操作。(https://github.com/ansible-collections/community.general/pull/569)。

  • pkgng - 使用 name: *state: lateststate: present 将不再从配置的软件包存储库中安装所有软件包。相反,name: *, state: latest 将升级所有已安装的软件包,而 name: *, state: present 是一个空操作。(https://github.com/ansible-collections/community.general/pull/569)。

community.network

community.vmware

  • vmware_datastore_maintenancemode - 现在返回 datastore_status 而不是 Ansible 内部密钥 results

  • vmware_guest_custom_attributes - 不需要 VM 名称,该名称是 Ansible 2.10 之前版本的必填参数。

  • vmware_guest_find - 已删除 datacenter 选项。

  • vmware_host_kernel_manager - 现在返回 host_kernel_status 而不是 Ansible 内部密钥 results

  • vmware_host_ntp - 现在返回 host_ntp_status 而不是 Ansible 内部密钥 results

  • vmware_host_service_manager - 现在返回 host_service_status 而不是 Ansible 内部密钥 results

  • vmware_tag - 现在返回 tag_status 而不是 Ansible 内部密钥 results

  • vmware_vmkernel - 已删除 ip_addresssubnet_mask 选项;请改用 network 选项的子选项 ip_addresssubnet_mask

community.windows

  • win_pester - 由于它执行了潜在的未知脚本,因此不再运行指定目录中的所有 *.ps1 文件。它将遵循仅为类似于 *.tests.ps1 的文件运行测试的默认行为,该行为内置于 Pester 本身。

community.zabbix

  • zabbix_javagateway - 选项 javagateway_pidfilejavagateway_listenipjavagateway_listenportjavagateway_startpollers 重命名为 zabbix_javagateway_xyz(请参阅 UPGRADE.md)。

netbox.netbox

  • 将 netbox 清单插件中的 ip-addresses 键更改为 ip_addresses (https://github.com/netbox-community/ansible_modules/issues/139)

  • group 更改为 tenant_groupnetbox_tenant.py 中 (https://github.com/netbox-community/ansible_modules/issues/9)

  • role 更改为 prefix_rolenetbox_prefix.py 中 (https://github.com/netbox-community/ansible_modules/issues/9)

  • 未提供必需字段时模块失败 (https://github.com/netbox-community/ansible_modules/issues/24)

  • netbox_interface 重命名为 netbox_device_interface (https://github.com/netbox-community/ansible_modules/issues/9)

  • 此版本由于新的命名空间和集合名称而进行了一些重大更改。我认为有必要更改查找插件和清单插件的名称,只是为了避免使用非描述性命名空间调用它们。以下是一个示例:netbox.netbox.netbox 将用于清单插件和查找插件,但在不同的上下文中,因此不会发生冲突,但会造成混淆。我将查找插件重命名为 nb_lookup,因此它将与 FQCN netbox.netbox.nb_lookup 一起使用。清单插件现在将在清单文件中通过 netbox.netbox.nb_inventory 调用。

  • 通过 Ansible Jinja 过滤器为需要查询端点的 data 中的键传递整数现在通过将其作为具有 id 键的字典来完成。之前的行为是只传入一个整数,并在规范化数据时将其转换,但有些人可能拥有全部为整数的名称,并且这些名称被错误地转换了,因此我们决定更改方法以将 NetBox API 转换为整数。

    tasks:
      - name: Create device within NetBox with only required information
        netbox_device:
          netbox_url: http://netbox-demo.org:32768
          netbox_token: 0123456789abcdef0123456789abcdef01234567
          data:
            name: Test66
            device_type:
              id: "{{ some_jinja_variable }}"
            device_role: Core Switch
            site: Test Site
            status: Staged
          state: present
    
  • pynetbox 已更改为使用 requests.Session() 来管理 HTTP 会话,这破坏了在构建 NetBox API 客户端时传入 ssl_verify。此 PR 使 pynetbox 5.0.4+ 成为 Ansible 模块和查找插件的 pynetbox 的新必需版本。(https://github.com/netbox-community/ansible_modules/pull/269)。

theforeman.foreman

  • 所有模块都重命名以去除 foreman_katello_ 前缀。除了移除前缀之外,以下模块还进行了进一步的重命名

    • katello_upload 重命名为 content_upload

    • katello_sync 重命名为 repository_sync

    • katello_manifest 重命名为 subscription_manifest

    • foreman_search_facts 重命名为 resource_info

    • foreman_ptable 重命名为 partition_table

    • foreman_model 重命名为 hardware_model

    • foreman_environment 重命名为 puppet_environment

主要变更

Ansible-base

  • 对于返回文档无法解析为 YAML 的模块和插件,ansible-doc 和 ansible-console 的帮助命令将报错。所有通过 ansible-test sanity --test yamllint 测试的模块和插件不受此影响。

  • 集合可以声明集合支持/测试的 Ansible 版本列表。如果集合不支持加载它的 Ansible 版本,则会发出警告(也可以配置为静默或致命错误)。未声明支持的 Ansible 版本的集合不会发出警告/错误。

  • 插件路由允许集合为所有插件类型声明弃用、重定向目标和移除。

  • 导入 module_utils 和已移至集合的其他 ansible 命名空间的插件应该可以继续正常工作,无需修改。

  • 内置于 Ansible 2.10 中的路由数据确保 2.9 内容可以在 2.10 上正常工作,无需修改。以前包含的模块和插件已移至集合,只要安装了其目标集合,仍然可以通过其原始的非限定名称访问。

  • 当在代码中进行弃用时,需要指定 collection_name,以便弃用警告可以提及哪个集合 - 或 ansible-base - 正在弃用某个功能。这会影响所有 Display.deprecated()AnsibleModule.deprecate()Ansible.Basic.Deprecate() 调用,以及模块参数规范中的 removed_in_version/removed_at_datedeprecated_aliases

  • ansible-test 现在对 Ansible 集合使用不同的 default 测试容器。

amazon.aws

  • ec2 模块实用程序 - AWSRetry 装饰器默认不再捕获 NotFound 异常。需要使用 catch_extra_error_codes 显式添加 NotFound 异常。由于 AWS 的最终一致性模型,一些 AWS 模块可能会看到瞬态故障增加。

ansible.netcommon

ansible.posix

cisco.meraki

  • 重写版本 1.0 API 的请求方法并提高可读性

  • meraki_mr_rf_profile - 配置无线 RF 配置文件。

  • meraki_mr_settings - 配置无线网络设置。

  • meraki_ms_l3_interface - 新模块

  • meraki_ms_ospf - 配置 OSPF。

community.general

  • docker_container - 如果至少给定一个网络并且 networks_cli_compatibletrue(从 community.general 2.0.0 开始默认为 true),则 network_mode 选项将默认设置为 networks 中第一个网络的名称。如果您指定网络并将 networks_cli_compatible 设置为 true,则设置显式值以避免弃用警告。当前默认值(不指定它)等效于值 default

  • docker_container - 该模块有一个新的选项 container_default_behavior,其默认值将从 compatibility 更改为 no_defaults。设置显式值以避免弃用警告。

  • gitlab_user - 当 state=absent 时,不再需要 nameemailpassword 参数。

community.grafana

  • 为 ansible 2.10 添加变更日志管理 (#112)

  • grafana_datasource;添加 additional_json_data 参数

community.kubernetes

community.libvirt

  • 添加了通用的 libvirt 清单插件

  • 删除了 libvirt_lxc 清单脚本

dellemc.os10

  • 新增角色 os10_aaa - 方便配置身份验证授权和计费 (AAA)、TACACS 和 RADIUS 服务器。

  • 新增角色 os10_acl - 方便配置访问控制列表。

  • 新增角色 os10_bfd - 方便配置 BFD 全局属性。

  • 新增角色 os10_bgp - 方便配置边界网关协议 (BGP) 属性。

  • 新增角色 os10_copy_config - 此角色将备份运行配置推送到 OS10 设备。

  • 新增角色 os10_dns - 方便配置域名服务 (DNS)。

  • 新增角色 os10_ecmp - 方便配置 IPv4 的等成本多路径 (ECMP)。

  • 新增角色 os10_fabric_summary 方便获取结构中所有 OS10 交换机的系统信息。

  • 新增角色 os10_flow_monitor 方便配置基于 ACL 流的监控属性。

  • 新增角色 os10_image_upgrade 方便安装 OS10 软件镜像。

  • 新增角色 os10_interface 方便配置接口属性。

  • 新增角色 os10_lag 方便配置链路聚合组 (LAG) 属性。

  • 新增角色 os10_lldp 方便在全局和接口级别配置链路层发现协议 (LLDP) 属性。

  • 新增角色 os10_logging 方便配置全局日志属性和日志服务器。

  • 新增角色 os10_network_validation 方便验证布线连接、BGP 邻居、邻居之间的 MTU 和 VLT 对。

  • 新增角色 os10_ntp 方便配置网络时间协议 (NTP) 属性。

  • 新增角色 os10_prefix_list 方便配置 IP 前缀列表。

  • 新增角色 os10_qos 方便配置服务质量属性,包括策略映射和类映射。

  • 新增角色 os10_raguard 方便配置 IPv6 RA Guard 属性。

  • 新增角色 os10_route_map 方便配置路由映射属性。

  • 新增角色 os10_snmp 方便配置全局 SNMP 属性。

  • 新增角色 os10_system 方便配置主机名和哈希算法。

  • 新增角色 os10_template 该角色获取来自 OS10 设备 CLI 的原始字符串输入,并以 Python 字典的形式返回结构化文本。

  • 新增角色 os10_uplink 方便配置上行链路属性,如上行链路状态组。

  • 新增角色 os10_users 方便配置全局系统用户属性。

  • 新增角色 os10_vlan 方便配置虚拟 LAN (VLAN) 属性。

  • 新增角色 os10_vlt 方便配置虚拟链路中继 (VLT)。

  • 新增角色 os10_vrf 方便配置虚拟路由和转发 (VRF)。

  • 新增角色 os10_vrrp 方便配置虚拟路由冗余协议 (VRRP) 属性。

  • 新增角色 os10_vxlan 方便配置虚拟可扩展 LAN (VXLAN) 属性。

  • 新增角色 os10_xstp 方便配置 xSTP 属性。

f5networks.f5_modules

  • 将 bigip_device_auth_radius 拆分以在 bigip_device_auth_server 模块中实现 RADIUS 服务器配置。有关用法详细信息,请参阅模块文档。

  • 删除 f5_provider 中的冗余参数以修复文档和模块参数之间的差异。

gluster.gluster

ovirt.ovirt

purestorage.flasharray

  • purefa_console - 管理 FlashArray 的控制台锁定设置

  • purefa_endpoint - 管理 FlashArray 上的 VMware 协议端点

  • purefa_eula - 签署或重新签署 FlashArray EULA

  • purefa_inventory - 从 FlashArray 获取硬件清单信息

  • purefa_network - 管理 FlashArray 上的物理和虚拟网络设置

  • purefa_pgsched - 管理 FlashArray 上的保护组快照和复制计划

  • purefa_pod - 管理 FlashArray 中的 ActiveCluster Pod

  • purefa_pod_replica - 管理 FlashArray 中的 ActiveDR Pod 副本链接

  • purefa_proxy - 管理 FlashArray 的电话回拨 HTTPS 代理设置

  • purefa_smis - 管理 FlashArray 上的 SMI-S 设置

  • purefa_subnet - 管理 FlashArray 上的网络子网

  • purefa_timeout - 管理 FlashArray 上的 GUI 空闲超时

  • purefa_vlan - 管理 FlashArray 上的 VLAN 接口

  • purefa_vnc - 管理 FlashArray 上已安装应用程序的 VNC

  • purefa_volume_tags - 管理 FlashArray 上的卷标签

purestorage.flashblade

  • purefb_alert - 管理 FlashBlade 上的警报电子邮件设置

  • purefb_bladename - 管理 FlashBlade 名称

  • purefb_bucket_replica - 管理 FlashBlade 上的存储桶副本链接

  • purefb_connect - 管理 FlashBlade 之间的连接

  • purefb_dns - 管理 FlashBlade 上的 DNS 设置

  • purefb_fs_replica - 管理 FlashBlade 上的文件系统副本链接

  • purefb_inventory - 获取有关 FlashBlade 硬件清单的信息

  • purefb_ntp - 管理 FlashBlade 的 NTP 设置

  • purefb_phonehome - 管理 FlashBlade 的电话回拨设置

  • purefb_policy - 管理 FlashBlade 的文件系统快照策略

  • purefb_proxy - 管理 FlashBlade 的电话回拨 HTTP 代理设置

  • purefb_remote_cred - 管理 FlashBlade 上的对象存储远程凭据

  • purefb_snmp_agent - 修改 FlashBlade SNMP 代理

  • purefb_snmp_mgr - 管理 FlashBlade 上的 SNMP 管理器

  • purefb_target - 管理 FlashBlade 的远程支持 S3 的目标

  • purefb_user - 管理 FlashBlade 上的本地 pureuser 帐户密码

已移除的功能

Ansible-base

  • core - 移除对 AnsibleModuleAzureModuleUTMModulecheck_invalid_arguments 的支持。

ansible.netcommon

  • 已移除 module_utils.network.common.utils.ComplexDict

ansible.windows

  • win_stat - 已移除弃用的 get_md55 选项和 md5 返回值。

community.crypto

  • 已移除 letsencrypt 模块。请改用 acme_certificate

community.general

community.network

community.vmware

  • vmware_guest_find - 已移除弃用的 datacenter 选项

  • vmware_portgroup - 已移除“inbound_policy”和“rolling_order”弃用选项。

  • vmware_vmkernel - 已移除弃用的 ip_address 选项;请改用网络选项中的子选项 ip_address

  • vmware_vmkernel - 已移除弃用的 subnet_mask 选项;请改用网络选项中的子选项 subnet_mask

community.windows

  • win_disk_image - 已移除弃用的返回值 mount_path,改用 mount_paths

  • win_psexec - 已移除弃用的 extra_opts 选项。

f5networks.f5_modules

  • 移除 _bigip_iapplx_package 别名

  • 移除 _bigip_security_address_list 别名

  • 移除 _bigip_security_port_list 别名

  • 移除 _bigip_traffic_group 别名

  • 移除 bigip_appsvcs_extension 模块

  • 移除 bigip_asm_policy 模块

已弃用的功能

  • vyos.vyos.vyos_static_route 模块已弃用,将在以后的版本中移除;请改用 vyos.vyos.vyos_static_routes。

Ansible-base

  • 在没有对应 doc_fragment 或复制文档的情况下使用 DefaultCallback。

  • hash_behaviour - 弃用 hash_behaviour 以便将来移除。

  • 脚本清单插件 - “cache”选项已弃用,将在 2.12 中移除。由于它从未有任何作用,因此已从插件中删除其使用。

amazon.aws

  • 所有 AWS 模块 - 在 2022-06-01 之后,aws_access_keyaws_secret_keysecurity_token 将与 profile 互斥。

  • cloudformation - template_format 选项自 Ansible 2.3 以来一直无效,将在 2022-06-01 之后移除

  • cloudformation - template_format 选项已弃用,将在以后的版本中移除。自 Ansible 2.3 以来,该模块一直忽略它。

  • data_pipeline - version 选项无效,将在 2022-06-01 之后移除

  • ec2 - 在以后的版本中,groupgroup_id 选项将成为互斥的。目前,如果您同时传递这两个选项,则会忽略 group_id

  • ec2_ami - no_device 别名 NoDevice 已弃用,将在 2022-06-01 之后移除

  • ec2_ami - virtual_name 别名 VirtualName 已弃用,将在 2022-06-01 之后移除

  • ec2_eip - wait_timeout 选项无效,将在 2022-06-01 之后移除

  • ec2_key - wait_timeout 选项无效,将在 2022-06-01 之后移除

  • ec2_key - wait 选项无效,将在 2022-06-01 之后移除

  • ec2_key - wait_timeout 选项已弃用,将在以后的版本中移除。自 Ansible 2.5 以来,它一直无效。

  • ec2_key - wait 选项已弃用,将在以后的版本中移除。自 Ansible 2.5 以来,它一直无效。

  • ec2_lc - associate_public_ip_address 选项无效,将在 2022-06-01 之后移除

  • ec2_tag - 弃用 list 选项,改用 ec2_tag_info

  • ec2_tag - list 作为状态的支持已弃用,将在以后的版本中移除。可以使用 ec2_tag_info 获取 EC2 资源上的标签。

ansible.windows

  • win_domain_computer - 已弃用未公开的 log_path 选项。此选项将在 2022-07-01 之后的主要版本中移除。

  • win_domain_controller - log_path 选项已弃用,将在后续版本中移除。此选项未公开,仅与模块开发的调试信息相关。

  • win_package - state 选项的 ensure 别名已弃用,将在后续版本中移除。请使用 state 而不是 ensure

  • win_package - product_id 选项的 productid 别名已弃用,将在后续版本中移除。请使用 product_id 而不是 productid

  • win_package - usernamepassword 选项已弃用,将在后续版本中移除。可以使用 become: yesbecome_flags: logon_type=new_credentials logon_flags=netcredentials_only 在任务中实现相同的功能。

  • win_regedit - 已弃用使用正斜杠作为路径分隔符,请使用反斜杠以避免键名称中的正斜杠与路径分隔符之间的歧义。此功能将在 2021-07-01 之后的主要版本中移除。

community.aws

  • cloudformation - template_format 选项自 Ansible 2.3 以来一直无效,将在 2022-06-01 之后移除

  • data_pipeline - version 选项无效,将在 2022-06-01 后移除。

  • data_pipeline - version 选项已弃用,将在后续版本中移除。它一直被模块忽略。

  • ec2_eip - wait_timeout 选项无效,将在 2022-06-01 之后移除

  • ec2_eip - wait_timeout 选项已弃用,将在后续版本中移除。自 Ansible 2.3 以来,它一直无效。

  • ec2_key - wait_timeout 选项无效,将在 2022-06-01 之后移除

  • ec2_key - wait 选项无效,将在 2022-06-01 之后移除

  • ec2_lc - associate_public_ip_address 选项无效,将在 2022-06-01 之后移除

  • ec2_lc - associate_public_ip_address 选项已弃用,将在后续版本中移除。它一直被模块忽略。

  • elb_network_lb - state 选项的当前默认值已弃用,将在 2022-06-01 后从 absent 更改为 present。

  • elb_network_lb - 在后续版本中,state 选项的默认行为将从 absent 更改为 present。要保持现有行为,请显式将 state 设置为 absent

  • iam_managed_policy - fail_on_delete 选项无效,将在 2022-06-01 后移除。

  • iam_managed_policy - fail_on_delete 选项已弃用,将在后续版本中移除。它一直被模块忽略。

  • iam_policy - policy_document 将在 2022-06-01 后移除。要保持现有行为,请使用 policy_json 选项并使用 lookup 插件读取文件。

  • iam_policy - skip_duplicates 的默认值将在 2022-06-01 后从 true 更改为 false

  • iam_policy - 在后续版本中,skip_duplicates 选项的默认值将从 true 更改为 false。要保持现有行为,请显式将其设置为 true

  • iam_policy - policy_document 选项已弃用,将在后续版本中移除。要保持现有行为,请使用 policy_json 选项并使用 lookup 插件读取文件。

  • iam_role - purge_policies 的默认值已弃用,将在 2022-06-01 后从 true 更改为 false。

  • iam_role - 在后续版本中,purge_policies 选项(也称为 purge_policy)的默认值将从 true 更改为 false

  • s3_lifecycle - requester_pays 选项无效,将在 2022-06-01 后移除。

  • s3_lifecycle - requester_pays 选项已弃用,将在后续版本中移除。它一直被模块忽略。

  • s3_sync - retries 选项无效,将在 2022-06-01 后移除。

  • s3_sync - retries 选项已弃用,将在 2022-06-01 后移除。它一直被模块忽略。

community.crypto

  • openssl_csr - version 选项除 1 之外的所有值均已弃用。值 1 表示当前唯一标准化的 CSR 版本。

community.general

  • ldap_attr 模块已弃用,将在后续版本中移除;请改用 ldap_attrs。

  • airbrake_deployment - 为 token 参数和 v2 api 部署添加弃用通知。此功能将在 community.general 3.0.0 中移除。

  • clc_aa_policy - wait 选项无效,将在 community.general 3.0.0 中移除。

  • clc_aa_policy - wait 参数将被移除。它一直被模块忽略。

  • docker_container - trust_image_content 选项现已弃用,将在 community.general 3.0.0 中移除。它从未被模块使用。

  • docker_container - trust_image_content 选项将被移除。它一直被模块忽略。

  • docker_container - container_default_behavior 的默认值将在 community.general 3.0.0 中从 compatibility 更改为 no_defaults。将选项设置为显式值以避免弃用警告。

  • docker_container - network_mode 的默认值将在 community.general 3.0.0 中更改,前提是至少指定了一个网络并且 networks_cli_compatibletrue。有关更多详细信息,请参阅移植指南、模块文档或弃用警告。

  • docker_stack - 返回值 outerr 已弃用,将在 community.general 3.0.0 中移除。请改用 stdoutstderr

  • docker_stack - 返回值 errout 已弃用。请改用 stdoutstderr

  • helm - 将 helm 模块标记为已弃用。新的实现可在 community.kubernetes 集合中找到。

  • redfish_config - 已弃用 bios_attribute_namebios_attribute_value,取而代之的是新的 bios_attributes` 选项。

  • redfish_config - bios_attribute_namebios_attribute_value 选项将被移除。要保持现有行为,请改用 bios_attributes 选项。

  • redfish_config 和 redfish_command - 当存在多个 System、Manager 或 Chassis 资源时,选择第一个要修改的资源的行为将被移除。使用新的 resource_id 选项指定要修改的目标资源。

  • redfish_config、redfish_command - 当存在多个 System、Manager 或 Chassis 资源时,修改第一个资源的行为已弃用。使用新的 resource_id 选项指定要修改的目标资源。

  • xbps - force 选项从未有任何效果。它现在已弃用,并将从 3.0.0 中移除(https://github.com/ansible-collections/community.general/pull/568)。

community.vmware

  • vmware_dns_config 模块已弃用,将在后续版本中移除;请改用 vmware_host_dns。

  • vca - vca_fw、vca_nat、vca_app 已弃用,因为这些模块依赖于 Pyvcloud 库中已弃用的部分。

  • vmware_dns_config - 已弃用,取而代之的是新的模块 vmware_host_dns。

  • vmware_guest - 已弃用将 CDROM 配置指定为字典,请改用列表。

  • vmware_tag_info - 在后续版本中,模块将不会返回 tag_facts,因为它不会返回具有相同名称和不同类别 ID 的多个标签。要保持现有行为,请使用 tag_info,它是一个标签元数据的列表。

community.zabbix

  • zabbix_proxy(模块) - 当通过 status=passive 将代理类型设置为 passive 时,弃用 interface 子选项 typemain。请确保从您的剧本中删除这些子选项,因为它们最初从未被 Zabbix 支持。

f5networks.f5_modules

  • 已弃用 bigip_appsvcs_extension 模块。

  • 已弃用 bigip_device_facts 模块名称。

  • 已弃用 bigiq_device_facts 模块名称。