Defina a senha de root do mysql usando ansible

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 }}