Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Vagrant + Ansible: UNREACHABLE! Permission denied

Estou tentando utilizar o ANSIBLE na minha maquina virtual mas está retornando o seguinte erro:

vagrant@ubuntu-bionic:~$ ansible-playbook -i /configs/ansible/hosts /configs/ansible/playbook.yml

PLAY [all] *******************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************
fatal: [192.168.1.26]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: vagrant@192.168.1.26: Permission denied (publickey).", "unreachable": true}

PLAY RECAP *******************************************************************************************************************************
192.168.1.26               : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0   

Meu Vagrantfile:

Vagrant.configure("2") do |config|

  config.vm.synced_folder "./configs", "/configs"
  config.vm.synced_folder ".", "/vagrant", disabled: true

  config.vm.define "wordpress" do |wordpress|
    wordpress.vm.box = "ubuntu/bionic64"

    wordpress.vm.network "public_network", ip: "192.168.1.26"
    wordpress.vm.provision "shell"
      inline: "cat /configs/ssh-keys/vagrant_id_rsa.pub >> .ssh/authorized_keys"
    wordpress.vm.provision "shell",
      inline: "apt-get update && \
               apt-get install -y software-properties-common && \
               apt-add-repository --yes --update ppa:ansible/ansible && \
               apt-get install -y ansible"

    wordpress.vm.provision "shell",
      inline: "cp /configs/ssh-keys/vagrant_id_rsa  /home/vagrant && \
              chmod 600 /home/vagrant/vagrant_id_rsa && \
              chown vagrant:vagrant /home/vagrant/vagrant_id_rsa"    
  end
end

Meu hosts:

[wordpress]
192.168.1.26

[wordpress:vars]
ansible_user=vagrant
ansible_ssh_private_key_file=/home/vagrant/vagrant_id_rsa
ansible_python_interpreter=/usr/bin/python3
ansible_ssh_common_args='-o StrictHostKeyChecking=no'

A pasta "configs" do projeto está sendo sincronizada com a maquina virtual, portanto, o arquivo "/configs/ssh-keys/vagrant_id_rsa" e "/configs/ssh-keys/vagrant_id_rsa.pub" estão dentro dela.

Também realizei todo o procedimento descrito no link abaixo mas sem sucesso:

https://cursos.alura.com.br/course/infraestrutura-como-codigo-com-ansible/task/46792

Quando executo o comando:

ansible wordpress -i /configs/ansible/hosts -u vagrant --private-key /configs/ssh-key/vagrant_id_rsa -m ping -m shell -a 'echo Hello, World'

..sempre é retornado o seguinte erro:

192.168.1.26 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: vagrant@192.168.1.26: Permission denied (publickey).", 
    "unreachable": true
}

Já olhei no Forum também e vi que muitas pessoas possuem esse mesmo problema, mas com nenhuma daquelas respostas consegui solucionar meu problema.

Alguém pode me ajudar?

Desde ja agradeço.

Roberto

3 respostas

Olá Roberto, tudo bem? Quando você executa o comando:

ansible wordpress -i /configs/ansible/hosts -u vagrant --private-key /configs/ssh-key/vagrant_id_rsa -m ping -m shell -a 'echo Hello, World'

Você tentou usar o caminho completo da chave privada? Colocando todas as pastas anteriores, algo como:

ansible wordpress -i /home/SEU_NOME_DE_USUARIO/OUTRA_PASTA/configs/ansible/hosts -u vagrant --private-key /configs/ssh-key/vagrant_id_rsa -m ping -m shell -a 'echo Hello, World'

Você poderia tentar dessa forma e falar pra gente qual foi o resultado!

Ola Jonilson,

eu estou entrando via "vagrant ssh" na maquina virtual para executar o ansible e é nesse momento que está gerando o erro UNREACHABLE.

Portanto, as chaves pública e privada, estão sendo enviadas do meu mac (onde eu gerei através dos comandos ssh-keygen) para a maquina virtual vagrant@ubuntu-bionic cujo ip é o 192.168.1.26.

config.vm.synced_folder "./configs", "/configs"

Por isso que eu executo o comando com este caminho na chave privada:

ansible wordpress -i /configs/ansible/hosts -u vagrant --private-key /configs/ssh-key/vagrant_id_rsa -m ping -m shell -a 'echo Hello, World'

Mas, eu copiei os arquivos que foram sincronizados da pasta /configs para a pasta /home/vagrant na maquina virtual e obtive o mesmo erro:

vagrant@ubuntu-bionic:~$ ansible wordpress -i /home/vagrant/configs/ansible/hosts -u vagrant --private-key /home/vagrant/vagrant_id_rsa -m ping -m shell -a 'echo Hello, World'
192.168.1.26 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: vagrant@192.168.1.26: Permission denied (publickey).", 
    "unreachable": true
}
solução!

Roberto, fui pensar sobre seu cenário, e não estou entendo uma parte, você tem duas máquinas virtuais é isso? Porque pelo Vagrantfile que você postou aqui você só tem uma máquina virtual, e não tem como executar o Ansible, você só consegue instalar ele na máquina. Para funcionar você precisa de uma máquina virtual com o Ansible e outra máquina que vai ser provisionada (instalada coisas e configuradas). Você já viu a aula sobre Ansible no curso? Bem o instrutor explica bem detalhadamente o processo.

Basicamente, é preciso uma máquina pronta com o Ansible instalado e outra máquina sem nada (no seu caso a máquina com Wordpress), apenas a chave SSH pública da máquina Ansible assim a máquina Ansible vai poder conectar a outra máquina (máquina com Wordpress) e então fazer todo o processo. Acho que você poderia dar uma olhada na aula 06. Usando o Ansible desse curso de Vagrant mesmo e tentar novamente.

E fala pra gente se deu certo!