No Ansible, gostaria de substituir isto:
pgsql:
useCluster: false
addr: 127.0.0.1:5432
password: ""
email:
to: [email protected]
port: 465
password: ""
substitua por isso:
pgsql:
useCluster: false
addr: 127.0.0.1:5432
password: "2024xxx"
email:
to: [email protected]
port: 465
password: ""
Como há duas variáveis idênticas que não podem ser substituídas, eu uso esse método. Mas isso não pode ser alcançado. Como todos devem lidar com isso?
replace:
path: "config.yaml"
regexp: '(redis:[^<]*)password: ""'
replace: '\1password: "2024xxx"'
Use o módulo Ansible de modelo em vez de substituir.
Edite manualmente o documento de origem para ter expressões Jinja onde os valores deveriam estar.
Onde
thing
é um prefixo curto para sua organização ou projeto, tornando os nomes menos propensos a colidir. E o nome da variável é de alguma pesquisa de armazenamento secreto, dado que é uma senha. O filtro padrão no final é opcional, dependendo se você quer um valor se a variável não estiver definida, ou um erro.O módulo template é diferente porque ele tem que renderizar o arquivo de origem no localhost, o controlador Ansible. Se você dependia anteriormente do host remoto contendo valores neste arquivo, talvez queira se ajustar para o host gerenciado não ser mais a fonte da verdade.