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 令牌通过令牌文件传递到 CLI(默认位置 ~/.ansible/galaxy_token)或(不安全地)通过 --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 上成为非特权用户以及如果当前工作目录可由恶意用户写入则减轻任何攻击媒介。将运行 Ansible 模块所需的任何 Python 模块安装在系统范围的位置或 remote_user$PYTHONPATH 中的其他目录中,并且 become_user 可读。

插件

查找插件名称大小写敏感

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

值得注意的插件更改

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

  • 已删除 FILE_COMMON_ARGUMENTS 中的一些未公开的参数;使用这些参数的插件,特别是 action 插件,需要进行调整。已删除的未公开参数为 srcfollowforcecontentbackupremote_srcregexpdelimiterdirectory_mode

执行模块的 Action 插件应使用完全限定的模块名称

  • 调用模块的 Action 插件应尽可能地将显式、完全限定的模块名称传递给 _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 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 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 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 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 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 2.10 或更高版本的用户无需进行任何更改。

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

    如果您使用 ansible-base 并手动安装了 community.general 且依赖于 hashi_vault lookup 插件,则必须确保也安装 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 - 允许通过环境变量查找 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 或更早版本使用 pip install --upgrade 升级到 ansible-2.10 或更高版本。相反,您必须在 pip 安装新版本之前显式使用 pip uninstall ansible。如果您尝试在不先卸载的情况下使用 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,因为 message 在 Ansible Core 引擎中用于内部使用。

  • 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 - 现在将在链接本地地址的 IPv6 范围内添加 ansible_ip_addresses

  • 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 现在为 int 而不是字符串。

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

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

community.general

  • oc.py 连接插件的身份验证上下文的环境变量已更正 (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 - 使用state: absent传递name: *将不再删除系统中所有已安装的软件包。现在它是一个空操作。(https://github.com/ansible-collections/community.general/pull/569)。

  • pkgng - 使用state: lateststate: present传递name: *将不再从配置的软件包存储库安装所有软件包。相反,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 - 不再需要虚拟机名称,该名称是 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_addresseshttps://github.com/netbox-community/ansible_modules/issues/139

  • netbox_tenant.py中的group更改为tenant_grouphttps://github.com/netbox-community/ansible_modules/issues/9

  • netbox_prefix.py中的role更改为prefix_rolehttps://github.com/netbox-community/ansible_modules/issues/9

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

  • netbox_interface重命名为netbox_device_interfacehttps://github.com/netbox-community/ansible_modules/issues/9

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

  • 现在可以通过在需要查询端点的data中的键的整数通过 Ansible Jinja 过滤器传递,方法是将其设置为包含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 的 help 命令都会出错。所有通过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 - 配置无线射频配置文件。

  • 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 - productid 选项的 product_id 别名已弃用,将在后续版本中移除。请使用 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 设置为被动时,弃用 interface 子选项 typemain。请确保从您的 playbook 中删除这些子选项,因为它们从一开始就从未被 Zabbix 支持。

f5networks.f5_modules

  • 已弃用 bigip_appsvcs_extension 模块

  • 已弃用 bigip_device_facts 模块名称

  • 已弃用 bigiq_device_facts 模块名称