Ansible 2.3 移植指南
本节讨论 Ansible 2.2 和 Ansible 2.3 之间的行为变更。
目的是帮助您更新剧本、插件和 Ansible 基础设施的其他部分,使其与 Ansible 的这个版本兼容。
建议您阅读此页面以及 Ansible 2.3 的变更日志,以了解您可能需要进行的更新。
本文件是移植集合的一部分。移植指南的完整列表可以在 移植指南 中找到。
剧本
重构异步以支持操作插件
在 Ansible 2.2(以及可能更早的版本)中,async: 关键字不能与操作插件(如 service)一起使用。此限制已在 Ansible 2.3 中移除。
新功能 Ansible 2.3
- name: Install nginx asynchronously
service:
name: nginx
state: restarted
async: 45
OpenBSD 版本信息
在 Ansible 2.2 及更早版本中,OpenBSD 主机上的 ansible_distribution_release 和 ansible_distribution_version 信息是反转的。现在已更改,使版本包含数字部分,而版本发布包含发行版的名称。
旧功能 Ansible 2.2(及更早版本)
"ansible_distribution": "OpenBSD"
"ansible_distribution_release": "6.0",
"ansible_distribution_version": "release",
新功能 Ansible 2.3
"ansible_distribution": "OpenBSD",
"ansible_distribution_release": "release",
"ansible_distribution_version": "6.0",
命名块
块现在可以有名称,这使您可以避免使用难看的 # 此块用于… 注释。
新功能 Ansible 2.3
- name: Block test case
hosts: localhost
tasks:
- name: Attempt to setup foo
block:
- debug: msg='I execute normally'
- command: /bin/false
- debug: msg='I never execute, cause ERROR!'
rescue:
- debug: msg='I caught an error'
- command: /bin/false
- debug: msg='I also never execute :-('
always:
- debug: msg="this always executes"
其他注意事项
以下是更新时可能遇到的几种罕见情况。这些情况主要是由更严格的解析器验证以及对以前忽略的错误的捕获造成的。
使
any_errors_fatal
可从剧本继承到任务,以及两者之间的所有其他对象。
模块
此版本中没有重大变更。
已移除模块
此版本中没有重大变更。
弃用通知
以下模块将在 Ansible 2.5 中移除。请相应地更新您的剧本。
ec2_vpc
cl_bond
cl_bridge
cl_img_install
cl_interface
cl_interface_policy
cl_license
cl_ports
nxos_mtu 请使用 nxos_system 替代
注意
这些模块在当前版本中可能不再有文档。如果您需要了解它们是如何工作的以移植您的剧本,请参阅 Ansible 2.3 模块文档。
值得注意的模块变更
AWS lambda
先前忽略的变更,这些变更只影响一个参数。现有部署可能存在此错误修复会应用的未完成变更。
挂载
挂载:一些修复程序可确保绑定挂载在每次剧本运行时不会被挂载。
插件
此版本中没有重大变更。
移植自定义脚本
此版本中没有重大变更。
网络
网络模块操作方式已经发生了一些变更。
剧本仍然应该使用 connection: local
。
以下变更适用于
dellos6
dellos9
dellos10
eos
ios
iosxr
junos
sros
vyos
顶级连接参数弃用
旧功能 Ansible 2.2
- name: example of using top-level options for connection properties
ios_command:
commands: show version
host: "{{ inventory_hostname }}"
username: cisco
password: cisco
authorize: yes
auth_pass: cisco
将导致
[WARNING]: argument username has been deprecated and will be removed in a future version
[WARNING]: argument host has been deprecated and will be removed in a future version
[WARNING]: argument password has been deprecated and will be removed in a future version
新功能 Ansible 2.3
- name: Gather facts
eos_facts:
gather_subset: all
provider:
username: myuser
password: "{{ networkpassword }}"
transport: cli
host: "{{ ansible_host }}"
ProxyCommand 替代 delegate_to
Ansible 2.3 中用于网络模块的新连接框架使用 cli
传输,不再支持使用 delegate_to
指令。为了通过 cli
传输使用堡垒或中间跳转主机连接到网络设备,网络模块现在支持使用 ProxyCommand
。
要使用 ProxyCommand
,请在 Ansible 库存文件中配置代理设置,以通过 ansible_ssh_common_args
指定代理主机。
有关如何执行此操作的详细信息,请参阅 网络代理指南。