Senhas ansible_hosts
Particularmente, eu prefiro o uso do arquivo
ansible_hosts com usuário e senhas. Mas, se quiseres usar por chave mesmo, eu recomendo o seguinte: se a quantidade de servidores for muito grande (como é o caso de vocês), coloquem a senha no
ansible_hosts, como no exemplo que mandei, rodem os comandos abaixo:
1. Enviando sua chave somente para o servidor
nova:
ansible all --limit nova -m copy -a 'src=~/.ssh/id_rsa.pub dest=~/minhachave.pub'
2. Verifique se o servidor realmente tem o diretório
.ssh com a chave privada:
ansible all --limit nova -m shell -a 'ls .ssh -al'
nova | FAILED | rc=2 >>
ls: cannot access .ssh: No such file or directory
Nesse caso, não tem. Então, vou mandar criar remotamente a chave:
ansible all --limit nova -m shell -a "ssh-keygen -P 'f0rm1g@' -f /home/operador/.ssh/id_rsa"
2. Agora sim, você pode adicionar sua chave copiada no passo 1 para o servidor:
ansible all --limit nova -m shell -a "cat minhachave.pub >>.ssh/authorized_keys"
3. Garantindo que o arquivo
authorized_keys esteja com as permissões corretas:
ansible all --limit nova -m shell -a "chmod 644 .ssh/authorized_keys"
Nesse ponto, você já deveria conseguir fazer SSH para o servidor sem precisar de senha. Agora, retire as senhas do
ansible_hosts.
Ou, então, deixe apenas uma pessoa com o arquivo com senhas, responsável por enviar as chaves para os servidores e os outros conectam apenas por chave.
P.S.: lembre-se que, se o arquivo
ansible_hosts está sem as senhas, será preciso adicionar "
--ask-pass" nas chamadas do Ansible, para que ele peça a senha.
Criando arquivo Ansible Host
Para criação do arquivo
ansible_host, é necessário editar o arquivo:
Obs.: coloquei as barras como comentários no arquivo.
[centos] // Nome do Grupo de Host
34 ansible_ssh_host=172.25.137.34 ansible_ssh_user=root ansible_ssh_pass=xxxx23
101 ansible_ssh_host=172.25.137.101 ansible_ssh_user=root ansible_ssh_pass=xxxx23
129 ansible_ssh_host=172.25.137.129 ansible_ssh_user=root ansible_ssh_pass=xxxx23
132 ansible_ssh_host=172.25.137.132 ansible_ssh_user=root ansible_ssh_pass=xxxx23
Na ordem de leitura e composta de:
- Nome do host.
- IP ou DNS de destino onde será executado o procedimento.
- Usuário que irá conectar ao host.
- Senha de acesso ao host.
Referências
Documentação:
Agradeço ao meu colega Delberto, que me apresentou essa bela ferramenta e passou seu conhecimento e aprendizado.