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

fatal: [192.168.1.101]: FAILED! => {"changed": false, "msg": "No package matching 'php5' is available"}

Olá, já tentei pesquisar uma solução para esse problema, mas não tive sucesso.

Alguém faz ideia de como resolver?

vagrant@control-node ~>
sudo ansible-playbook /vagrant/workspace_ansible/provisioning.yml -u vagrant -i /vagrant/hosts --private-key /vagrant/.vagrant/machines/node_wordpress/virtualbox/private_key

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

TASK [Gathering Facts] *********************************************************
ok: [192.168.1.101]

TASK [Task instala o PHP5] *****************************************************
fatal: [192.168.1.101]: FAILED! => {"changed": false, "msg": "No package matching 'php5' is available"}
        to retry, use: --limit @/vagrant/workspace_ansible/provisioning.retry

PLAY RECAP *********************************************************************
192.168.1.101              : ok=1    changed=0    unreachable=0    failed=1   
20 respostas

PQ NÃO CONSIGO ADICIONAR RESPOSTAS NESTE TÓPICO?

Opa, ainda não. Estou parado no curso devido ao problema reportado. Já cobrei a Alura pelo Facebook e e-mail, mas até agora nada.

Olá Thiago, tudo bem? Você poderia colocar o arquivo provisioning.yml aqui pra gente poder analisar e encontrar uma solução para o problema!

Bom dia @jonilsons9, segue arquivo.

---
- hosts: all
  tasks:
    - name: 'Task instala o PHP5'
      apt:
        name: php5
        state: latest
      become: yes
    - name: 'Task instala o Apache2'
      apt:
        name: apache2
        state: latest
      become: yes
    - name: 'Task instala o ModPHP'
      apt:
        name: libapache2-mod-php5
        state: latest
      become: yes

Obrigado!

Aparentemente seu código está correto, testei aqui também e consegui instalar o PHP 5, então vejo que o problema pode estar relacionado ao sistema operacional do host, você poderia colocar aqui também o código do seu arquivo "Vagrantfile", o sistema operacional deve ser a causa do problema, verifica se o config box está dessa forma: config.vm.box = "ubuntu/trusty64". Versões posteriores ao Ubuntu 14.04 só tem as versões 7 ou posteriores do PHP.

Estou utilizando uma versão diferente.

config.vm.box = "ubuntu/bionic64"


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

  config.vm.box = "ubuntu/bionic64"

  config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 1
  end


  config.vm.define "control_node" do |control_node|
    control_node.vm.provider "virtualbox" do |v|
      v.name = "alura-ansible-control-node"
    end
    control_node.vm.network "public_network", ip: "192.168.1.100", bridge: "wlp2s0"
    control_node.vm.hostname = "control-node"
    control_node.vm.provision "shell", path: "script_control_node.sh"
  end

  config.vm.define "node_wordpress" do |node_wordpress|
    node_wordpress.vm.provider "virtualbox" do |v|
      v.name = "alura-ansible-node-wordpress"
    end  
    node_wordpress.vm.network "public_network", ip: "192.168.1.101", bridge: "wlp2s0"
    node_wordpress.vm.hostname = "node-wordpress"
    node_wordpress.vm.provision "shell", path: "script_node.sh"
  end



end

Este é o problema Thiago, essa versão "ubuntu/bionic64" é a versão Ubuntu 18.04 LTS (Bionic Beaver), porém o PHP 5 não está mais disponível para o Ubuntu 14.04. Com tudo como o foco é aprender sobre o Ansible e quanto o mesmo pode nos ajudar a provisionar nossos ambientes de maneiras rápidas e padronizadas, acho que você poderia utilizar a versão "ubuntu/trusty64" para continuar o curso sem problemas, assim você vai conseguir seguir o curso tranquilamente!

Espero ter ajudado!

Fiz as alterações, mas agora ao executar o comando abaixo, recebo outro erro.

vagrant@control-node ~> 
sudo ansible-playbook /vagrant/workspace_ansible/provisioning.yml -u vagrant -i /vagrant/hosts --private-key /vagrant/.vagrant/machines/node_wordpress/virtualbox/private_key

ERROR: become is not a legal parameter in an Ansible task or handler

Apenas para conhecimento, fiz um outro teste para comunicação.

vagrant@control-node ~> 
sudo ansible group_node_wordpress -u vagrant --private-key /vagrant/.vagrant/machines/node_wordpress/virtualbox/private_key -i /vagrant/hosts -m shell -a 'echo Hello World'
previous known host file not found

The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established.
ECDSA key fingerprint is blablablalba.
Are you sure you want to continue connecting (yes/no)? yes

192.168.1.101 | success | rc=0 >>
Hello World

Thiago, você poderia colocar o seu novo código aqui pra gente poder verificar, mas pelo erro deve ser só questão de indentação, já que o Ansible é muito criterioso quanto a isso.

vagranfile local: /home/user/workspace/alura/formacao-devops/ansible/workspace_vagrant/Vagrantfile

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

  config.vm.box = "ubuntu/trusty64"

  config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 1
  end


  config.vm.define "control_node" do |control_node|
    control_node.vm.provider "virtualbox" do |v|
      v.name = "alura-ansible-control-node"
    end
    control_node.vm.network "public_network", ip: "192.168.1.100", bridge: "wlp2s0"
    control_node.vm.hostname = "control-node"
    control_node.vm.provision "shell", path: "script_control_node.sh"
  end

  config.vm.define "node_wordpress" do |node_wordpress|
    node_wordpress.vm.provider "virtualbox" do |v|
      v.name = "alura-ansible-node-wordpress"
    end  
    node_wordpress.vm.network "public_network", ip: "192.168.1.101", bridge: "wlp2s0"
    node_wordpress.vm.hostname = "node-wordpress"
    node_wordpress.vm.provision "shell", path: "script_node.sh"
  end



end

hosts local: /home/user/workspace/alura/formacao-devops/ansible/workspace_vagrant/hosts

[group_node_wordpress]
192.168.1.101

provisioning.yml local: /home/user/workspace/alura/formacao-devops/ansible/workspace_vagrant/workspace_ansible/provisioning.yml

---
- hosts: all
  tasks:
    - name: 'Task instala o PHP5'
      apt:
        name: php5
        state: latest
      become: yes
    - name: 'Task instala o Apache2'
      apt:
        name: apache2
        state: latest
      become: yes
    - name: 'Task instala o ModPHP'
      apt:
        name: libapache2-mod-php5
        state: latest
      become: yes

script_control_node.sh local: /home/user/workspace/alura/formacao-devops/ansible/workspace_vagrant/script_control_node.sh

#!/bin/bash

sudo apt-get update  && \
sudo apt install ansible -y && \
sudo apt-get install -y fish && \
sudo apt-get install -y python3
~                                 

script_node.sh local: /home/user/workspace/alura/formacao-devops/ansible/workspace_vagrant/script_node.sh

#!/bin/bash

sudo apt-get update  && \
sudo apt install ansible -y && \
sudo apt-get install -y fish && \
sudo apt-get install -y python3

Tenta esse código:

---
  - hosts: all

    tasks:
      - name: 'Task instala o PHP5'
        apt:
          name: php5
          state: latest
        become: yes

      - name: 'Task instala o Apache2'
        apt:
          name: apache2
          state: latest
        become: yes

      - name: 'Task instala o ModPHP'
        apt:
          name: libapache2-mod-php5
          state: latest
        become: yes

Olha se fica igual a essa imagem!

Mesmo erro :(

ERROR: become is not a legal parameter in an Ansible task or handler

Sinto muito por não ter funcionado Thiago :(

Mas vamos tentar outras soluções aqui até resolvermos esse problema. A primeira solução que você deve tentar é apagar a máquina virtual do vagrant e recriá-la novamente, para isso use o comando:

vagrant destroy -f && vagrant up

Depois você tenta executar o ansible com o comando:

ansible-playbook /vagrant/workspace_ansible/provisioning.yml -u vagrant -i /vagrant/hosts --private-key /vagrant/.vagrant/machines/node_wordpress/virtualbox/private_key

Caso o erro persistir ainda, vamos ter que analisar outras coisas! Mas tenta fazer esse procedimento primeiro.

Outra coisa que eu não entendi muito bem foi a parte dessa máquina node, você está provisionar uma máquina pra executar o NodeJS é isso?

Olá Jonilson,

Apenas para ciência, criei um issue no github da alura para sugerir um chat nessa área de fórum, assim ficaria mais dinâmico, depois se puder dar uma força, seria legal. :)

Referente ao padrão de nomeação das máquinas, foi apenas para questão de organização e facilitar a identificação e meu entendimento no conceito servidro e cliente do ansible, mas resumindo: control_node = server node_wordpress = client

user@notebook ~/w/a/f/a/workspace_vagrant> vagrant destroy -f
==> node_wordpress: Forcing shutdown of VM...
==> node_wordpress: Destroying VM and associated drives...
==> control_node: Forcing shutdown of VM...
==> control_node: Destroying VM and associated drives...
user@notebook ~/w/a/f/a/workspace_vagrant> vagrant status
Current machine states:

control_node              not created (virtualbox)
node_wordpress            not created (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.

log do vagrant up

vagrant@control-node:~$ sudo ansible-playbook /vagrant/workspace_ansible/provisioning.yml -u vagrant -i /vagrant/hosts --private-key /vagrant/.vagrant/machines/node_wordpress/virtualbox/private_key
ERROR: become is not a legal parameter in an Ansible task or handler

Thiago, qual a versão do seu sistema operacional? E qual a versão do Ansible você está utilizando?

Você já criou alguma outra máquina com Ansible usando o atributo become? Porque esse erro acontece geralmente quando a versão do Ansible não é mais recente já que o become foi introduzido a partir da versão 1.9.4.

Jonilson,

Estou usando o host control_node para controlar o host node_wordpress.

Em ambos os hots, estou usando Sistema Operacional > config.vm.box = "ubuntu/trusty64"

Não estou usando o meu notebook para interagir no lab, estou usando os dois hosts através do vagrant. E o comando do ansible estou executando a partir do host control_node.

Versão do ansible

vagrant@control-node:~$ ansible --version
ansible 1.5.4```
solução!

Thiago o problema é a versão mesmo, como eu disse o become só foi introduzido a partir da versão 1.9.4 do Ansible, por isso acontece esse erro. O "ubuntu/trusty64" é o Ubuntu 14.04 e por padrão não tem nos repositórios a versão mais recente do Ansible que tem que ser acima da versão 1.9.4, eu recomendo você utilizar a versão mais recente que é a 2.9.2. E para isso fica melhor você utilizar a versão do Ubuntu 18.04 na sua máquina host, no caso na máquina que vai ter o Ansible instalado.

A ideia é que a máquina que você instalar o Ansible tenha o Ubuntu 18.04 e o Ansible na versão 2.9.2 (que vai ser a versão que ele vai baixar automaticamente porque os repositórios estão atualizados) e a máquina em que você vai provisionar o ambiente você coloca o"ubuntu/trusty64" (Ubuntu 14.04).

Digo isso porque é a mesma configuração que tenho na minha máquina. Utilizo o Ubuntu 18.04 e Ansible na versão 2.9.2 e a máquina virtual que provisiono com o "ubuntu/trusty64" (Ubuntu 14.04).

Jonilson,

Muito obrigado pelo suporte. Sugiro que essa informação seja acrescentada com um taga importante na própria transcrição das aulas!

vagrant@control-node:~$ sudo ansible-playbook /vagrant/workspace_ansible/provisioning.yml -u vagrant -i /vagrant/hosts --private-key /vagrant/.vagrant/machines/node_wordpress/virtualbox/private_key

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

TASK [Gathering Facts] **********************************************************************************************
The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established.
ECDSA key fingerprint is SHA256:blablabla.
Are you sure you want to continue connecting (yes/no)? yes
ok: [192.168.1.101]

TASK [Task instala o PHP5] ******************************************************************************************
changed: [192.168.1.101]

TASK [Task instala o Apache2] ***************************************************************************************
ok: [192.168.1.101]

TASK [Task instala o ModPHP] ****************************************************************************************
ok: [192.168.1.101]

PLAY RECAP **********************************************************************************************************
192.168.1.101              : ok=4    changed=1    unreachable=0    failed=0   

Para conhecimento, deixei o arquivo Vagrantfile da seguinte forma:


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

  config.vm.box = "ubuntu/trusty64"

  config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 1
  end


  config.vm.define "control_node" do |control_node|
    control_node.vm.box = "ubuntu/bionic64"
    control_node.vm.provider "virtualbox" do |v|
      v.name = "alura-ansible-control-node"
    end
    control_node.vm.network "public_network", ip: "192.168.1.100", bridge: "wlp2s0"
    control_node.vm.hostname = "control-node"
    control_node.vm.provision "shell", path: "script_control_node.sh"
  end

  config.vm.define "node_wordpress" do |node_wordpress|
    node_wordpress.vm.provider "virtualbox" do |v|
      v.name = "alura-ansible-node-wordpress"
    end  
    node_wordpress.vm.network "public_network", ip: "192.168.1.101", bridge: "wlp2s0"
    node_wordpress.vm.hostname = "node-wordpress"
    node_wordpress.vm.provision "shell", path: "script_node.sh"
  end



end