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 需要通过令牌文件(默认位置 ~/.ansible/galaxy_token)或(不安全地)通过 --token 参数传递给 ansible-galaxy 的 Galaxy API 令牌。

已弃用

模块

警告

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

  • 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 模块(以及当 yum 动作使用 dnf 时)现在可以正确验证软件包的 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 模块添加了许多未记录的参数,这些参数主要是为了方便实现某些 Action 插件。现在不再添加未记录的参数 srcfollowforcecontentbackupremote_srcregexpdelimiterdirectory_mode。依赖于这些选项添加的模块需要自行指定它们。

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

插件

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

  • 在 Ansible 2.10 之前,作为 lookup() 函数的参数传入的查找插件名称被视为不区分大小写,而不是通过 with_<lookup_name> 调用的查找。2.10lookup()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 使用新的 API >=0.6.0

已弃用功能

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 lookup 插件将被移动到 community.hashi_vault 集合中。将插入重定向,以便使用 ansible-base 2.10 或更高版本的用户无需进行任何更改。

    如果您使用 Ansible 2.9 并显式使用此集合中的 hashi_vault lookup 插件,则需要调整您的 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 - 允许通过 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 - 现在可以删除版本化存储桶,即使它们不是空的 - 将模式设置为 delete 以删除版本化存储桶及其中的所有内容。

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 而不是 string

  • 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 - 将 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)

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

  • netbox_prefix.py 中将 role 更改为 prefix_role (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 的 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 异常。需要使用 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 开始将为默认值),则 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 方便获取 fabric 中所有 OS10 交换机的 show system 信息。

  • 新角色 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 方便配置路由映射属性。

  • 新角色 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 方便配置虚拟可扩展局域网 (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 选项;请改用 network 选项中的子选项 ip_address

  • vmware_vmkernel - 删除了已弃用的 subnet_mask 选项;请改用 network 选项中的子选项 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 以便将来删除。

  • script inventory 插件 - ‘cache’ 选项已弃用,将在 2.12 中删除。它已从插件中删除,因为它从未产生任何影响。

amazon.aws

  • 所有 AWS 模块 - aws_access_keyaws_secret_keysecurity_token 将在 2022-06-01 之后与 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 - 如果至少指定了一个网络且 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 模块名称