4
respostas

Não consigo rodar o Paybook

Boa tarde.

Quando tento rodar o comando

ansible-playbook -i /vagrant/configs/ansible/hosts /vagrant/configs/ansible/playbook.yml

O terminal me retorna o seguinte recado:

fatal: [192.168.50.7]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '192.168.50.7' (ECDSA) to the list of known hosts.\r\nno such identity: /home/vagrant/id_bionic: No such file or directory\r\nvagrant@192.168.50.7: Permission denied (publickey,password).", "unreachable": true}
4 respostas

Olá Diego, tudo bem? O erro em si é:

Failed to connect to the host via ssh: Warning: Permanently added '192.168.50.7' (ECDSA) to the list of known hosts.\r\nno such identity: /home/vagrant/id_bionic: No such file or directory\r\nvagrant@192.168.50.7: Permission denied (publickey,password)

Ele indica que não conseguiu encontrar o diretório /home/vagrant/id_bionic, então talvez seja o diretório compartilhado (synced_folder) que não esteja corretamente configurado ou com algum problema, então você poderia falar pra gente se a chave id_bionic está realmente na pasta que o Vagrantfile está? E também poderia colocar aqui o conteúdo do seu Vagrantfile para que eu possa verificar melhor e tentar ti ajudar da melhor forma possível?

Fico aguardando retorno!

Boa tarde!

Segue os dados:

Pasta onde está

id_bionic.pub e id_bionic
C:\Users\diego.neto\ambiente_dev\bionic

Meu vagrant file

$script_mysql = <<-SCRIPT
  apt-get update && \
  apt-get install -y mysql-server-5.7 && \
  mysql -e "create user 'phpuser'@'%' identified by 'pass';"
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/bionic64"



   config.vm.define "mysqlserver" do |mysqlserver|
    mysqlserver.vm.network "private_network", ip: "192.168.50.6"   

    mysqlserver.vm.provision "shell",
      inline: "cat /vagrant/id_bionic.pub >> .ssh/authorized_keys"
   end

   config.vm.define "ansible" do |ansible|
    ansible.vm.network "private_network", ip: "192.168.50.7"
    ansible.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"    
     ansible.vm.provision "shell",
      inline: "      cp /vagrant/id_bionic.pub /home/vagrant && \
                     chmod 600 /home/vagrant/id_bionic.pub && \
                     chown vagrant:vagrant /home/vagrant/id_bionic.pub"

    end

    config.vm.define "mysql" do |mysql|
    mysql.vm.network "public_network", ip: "192.168.50.4"

    mysql.vm.provision "shell",
      inline: "cat /vagrant/configs/id_bionic.pub >> .ssh/authorized_keys"
    mysql.vm.provision "shell", inline: $script_mysql
    mysql.vm.provision "shell",
      inline: "cat /vagrant/configs/mysqld.cnf > /etc/mysql/mysql.conf.d/mysql.cnf"
    mysql.vm.provision "shell", inline: "service mysql restart"

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

    end

  config.vm.define "phpweb" do |phpweb|
    phpweb.vm.network "forwarded_port", guest: 8888, host: 8888
    phpweb.vm.network "public_network", ip: "192.168.50.5"

    phpweb.vm.provision "shell",
      inline: "apt-get update && apt-get install -y puppet"


    phpweb.vm.provision "puppet" do |puppet|
      puppet.manifests_path = "./configs/manifest"
      puppet.manifest_file = "phpweb.pp"
   end
end
end

Meu arquivo hosts

[mysqlserver]
192.168.50.6

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

meu playbook

- hosts: all
  handlers:
    - name: restart mysql
      service:
        name: mysql
        state: restarted
      become: yes

  tasks:
    - name: 'Instalar MySQL Server'
      apt:
        update_cache: yes
        cache_valid_time: 3600 #1 hora
        name: ["mysql-server-5.7", "python3-mysqldb"]
        state: latest
      become: yes

    - name: 'Criar usuario no MySQL'
      mysql_user:
        login_user: root
        name: phpuser
        password: pass
        priv: '*.*:ALL'
        host: '%'
        state: present
      become: yes

    - name: 'Copiar arquivo mysqld.cnf'
      copy:
        src: /vagrant/configs/mysqld.cnf
        dest: /etc/mysql/mysql.conf.d/mysqld.cnf
        owner: root
        group: root
        mode: 0644
      become: yes
      notify:
        - restart mysql

Eu de fato estava colocando o IP e diretório errados.

Alterei e coloquei as chaves no diretório do vagrant.file.

Rodei o comando novamente e deu esse erro:

fatal: [192.168.50.6]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '192.168.50.6' (ECDSA) to the list of known hosts.\r\nno such identity: /home/vagrant/id_bionic: No such file or directory\r\nvagrant@192.168.50.6: Permission denied (publickey,password).", "unreachable": true}

Uma dúvida: Eu preciso gerar uma chave?

Então Diego, posso estar enganado, mas acho que o erro está na linha:

ansible.vm.provision "shell",
      inline: "      cp /vagrant/id_bionic.pub /home/vagrant && \
                     chmod 600 /home/vagrant/id_bionic.pub && \
                     chown vagrant:vagrant /home/vagrant/id_bionic.pub"

Que deveria ser utilizando a chave privada:

ansible.vm.provision "shell",
            inline: "cp /vagrant/id_bionic /home/vagrant && \
                        chmod 600 /home/vagrant/id_bionic && \
                        chown vagrant:vagrant /home/vagrant/id_bionic"

Tenta fazer essa alteração e fala pra gente se deu certo!