我已在 Mac OS 上使用自制软件将我的 ansible 设置从 ansible 2.10 升级到 ansible 2.12(从 ansible 5)。从那时起,剧本就不再产生工作成果。
- name: Assemble consul cluster
become: true
hosts: consul_nodes
roles:
- role: consul
vars:
consul_version: "1.11.1"
consul_install_upgrade: true
consul_group_name: "consul_nodes"
consul_addresses:
dns: !unsafe '169.254.1.1 127.0.0.1 {{ GetPrivateIP }} {{ GetInterfaceIP \"docker0\" }}'
http: !unsafe '169.254.1.1 {{ GetPrivateIP }} {{ GetInterfaceIP \"docker0\" }}'
https: !unsafe '127.0.0.1 {{ GetPrivateIP }}'
grpc: "127.0.0.1"
consul_client_address: "169.254.1.1"
consul_node_role: server
consul_bootstrap_expect_value: 3
consul_bootstrap_expect: true
playbook 包含不应模板化的不安全变量值,因为它们的值应传递到写入磁盘的 JSON 配置文件。
在升级到 ansible 2.12 之前它工作正常
ansible [core 2.12.1]
config file = None
configured module search path = ['/Users/martin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/Cellar/ansible/5.1.0/libexec/lib/python3.10/site-packages/ansible
ansible collection location = /Users/martin/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible
python version = 3.10.1 (main, Dec 6 2021, 23:20:29) [Clang 13.0.0 (clang-1300.0.29.3)]
jinja version = 3.0.3
libyaml = True
现在剧本正在创建的整个 JSON 无效。引号 (") 转义为 (")。
我怀疑这个问题与不安全的变量有关,就像工作中的 ansible 2.10 版一样,我在不使用!unsafe
. 这可能只是一个巧合。