Ansible 2.10 移植指南

警告

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

本节讨论 Ansible 2.9 和 Ansible 2.10 之间的行为更改。

它旨在帮助更新您的 Playbook、插件和 Ansible 基础架构的其他部分,以便它们可以与此版本的 Ansible 一起工作。

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

自 2.10 起,Ansible 由两部分组成

  • ansible-base,其中包括命令行工具以及少量插件和模块,以及

  • 一组集合

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

Playbook

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

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

命令行

  • 已经删除了ansible-galaxy login 命令,因为它用于 GitHub 身份验证的底层 API 正在被关闭。现在,通过 ansible-galaxy 将角色或集合发布到 Galaxy,需要将 Galaxy API 令牌通过令牌文件(默认位置 ~/.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 参数的基于文件的任务中指定 mode 参数。

  • dnfyum - 从 2.10.1 版本开始,dnf 模块(以及当它使用 dnfyum 操作)现在正确验证软件包的 GPG 签名 (CVE-2020-14365)。如果您看到诸如 Failed to validate GPG signature for [软件包名称] 之类的错误,请确保您已导入您使用的 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-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 或更早版本 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 时间的 EPOCH 以来的秒数,以便镜像 POSIX 事实。 ansible_date_time.epoch_local 包含自本地时区 EPOCH 以来的秒数,以便向后兼容

  • 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 现在是 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 - 不需要 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_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 调用。

  • 现在通过使其成为带有 id 键的字典,来传递通过 Ansible Jinja 过滤器传递的整数,该过滤器用于 data 中需要查询端点的键。之前的行为是只传递一个整数,并且在规范化数据时会进行转换,但是有些人可能有都是整数的名称,并且这些名称被错误地转换了,所以我们决定更改方法,以便为 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 module_utils - AWSRetry 装饰器默认不再捕获 NotFound 异常。NotFound 异常需要使用 catch_extra_error_codes 显式添加。由于 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,则 network_mode 选项将默认设置为 networks 中第一个网络的名称(将从 community.general 2.0.0 开始默认)。如果您指定网络并将 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 方便获取 fabric 中所有 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 方便配置服务质量属性,包括 policy-map 和 class-map。

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

  • 新角色 os10_route_map 方便配置 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 的 phonehome 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 的 phone home 设置

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

  • purefb_proxy - 管理 FlashBlade 的 phone home 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 - 移除 AnsibleModuleAzureModuleUTMModule 中对 check_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

  • 使用 DefaultCallback 而不使用相应的 doc_fragment 或复制文档。

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

  • script inventory plugin - '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 - ensure 选项作为 state 选项的别名已被弃用,并将在以后的版本中删除。请使用 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 - 如果指定了至少一个网络且 networks_cli_compatibletrue,则 network_mode 的默认值将在 community.general 3.0.0 中更改。有关更多详细信息,请参阅移植指南、模块文档或弃用警告。

  • 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 模块名称