Esta é uma variante da dica fornecida aqui http://stackoverflow.com/a/16446163/12754 e anteriores em https://coderwall.com/p/yez9yw
Meu objetivo era garantir que nenhuma senha fosse armazenada em arquivos de texto simples em qualquer lugar do servidor
Solução:
- name: update mysql root password for all root accounts from local servers
mysql_user: login_user=root login_password={{ current_password }} name=root host=$item password={{ new_password }} priv=*.*:ALL,GRANT
with_items:
- $ansible_hostname
- 127.0.0.1
- ::1
- localhost
E no arquivo vars
current_password=foobar
new_password={{ current_password }}
Quando não alterar a senha do mysql, execute o ansible playbook na linha de comando como de costume.
Ao alterar a senha do mysql, adicione o seguinte à linha de comando. Especificá-lo na linha de comando permite que o parâmetro definido na linha de comando tenha precedência sobre aquele padronizado no arquivo vars.
$ ansible-playbook ........ --extra-vars "new_password=buzzz"
Depois de executar o comando, altere o arquivo vars como segue
current_password=buzzz
new_password={{ current_password }}