Ansible-Playbook
從 ansible 2.10 升級到 ansible 2.12(從 ansible 5)後,包含不安全變數值的劇本會中斷
我已在 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
. 這可能只是一個巧合。
看起來這是一個已報告給項目的錯誤,他們正在研究解決方案: