Eu atualizei minha configuração ansible de ansible 2.10 para ansible 2.12 (de ansible 5) usando homebrew no Mac OS. Desde então, um playbook parou de produzir resultados funcionais.
- 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
O manual contém valores de variáveis não seguros que não devem ser modelados, pois seu valor deve ser passado para um arquivo de configuração JSON gravado em disco.
Estava funcionando bem antes de atualizar para o 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
Agora, todo o JSON que o manual está criando é inválido. Aspas ("") são escapadas como (").
Suspeito que o problema esteja relacionado às variáveis inseguras, pois com a versão 2.10 do ansible, obtive o mesmo resultado ruim ao não usar o !unsafe
. Isso pode ser apenas uma coincidência.
Parece que este é um bug que foi relatado ao projeto e eles estão trabalhando em uma solução:
template (o plugin de pesquisa) por meio de to_nice_json adiciona aspas duplas #76443