Como lembrar / armazenar em cache ou especificar senha de chave privada para Ansible

3

Apenas começando com Ansible, configurei um usuário Asible na máquina cliente e criei um conjunto de chaves a partir do OpenSSL. Estou executando o Ansible com minha própria conta. Eu especifiquei o arquivo de chave privada e de usuário na configuração Ansible. Eu quero que os comandos remotos para executar como este usuário e este usuário sudo para fazer comandos que exigem elevação.

/etc/ansible/ansible.cfg

private_key_file = /etc/ansible/pka/confman.crt
remote_user = confman

Comandos como este não pedem senhas após a entrada inicial da frase secreta:

ansible all -m ping

O seguinte aviso para uma senha toda vez que eu os executo:

ansible all -m ping -b
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)

ansible all -m ping --sudo
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)

ansible all -a "cat /etc/redhat-release"
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)

Por quê?

Existe alguma maneira de definir a frase secreta? Existe uma maneira mais segura? Eu pretendo rodar ansible remotamente e via cron e via outras ferramentas de automação, onde inserir uma senha não é uma opção.

Como contexto, eu nunca precisei de SSH entre servidores Linux, sempre de uma máquina Windows usando ferramentas como putty, RoyalTS e mRemoteNG, então meu conhecimento ssh é ... esparso. Eu suponho que estou perdendo algo óbvio.

    
por AirCombat 19.02.2016 / 17:33

1 resposta

5

O recurso é chamado de ssh-agent :

$ eval 'ssh-agent'  # you might have agent already running so this might not be needed
$ ssh-add /etc/ansible/private_keys/confman.crt

agora ansible deve ser capaz de encontrar a chave no agente e autenticar sem pedir senha todas as vezes. De: Documentação: Seus primeiros comandos

    
por 19.02.2016 / 18:33