IV-GII / GII-2013

Repositorio para el material específico de cada clase, planificación y ejercicios.
Apache License 2.0
8 stars 67 forks source link

Problema con Vagrant y Ansible #137

Closed germaaan closed 10 years ago

germaaan commented 10 years ago

No consigo hacer funcionar Ansible con Vagrant, uso este Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.box = "debian"
  config.vm.network :private_network, ip: "192.168.2.50"

  config.vm.provision :ansible do |ansible| 
    ansible.playbook = "playbook.yml"
  end

end

Y este playbook:


---
- hosts: all
  sudo: yes
  tasks:
    - name: Instalar Nginx
      apt: name=nginx state=present
    - name: Comprobar Nginx
      command: service nginx restart && service nginx status

Pero cuando hago vagrant provision siempre me aparece el mismo error: eje08_img02

Se ve que no encuentra el archivo de inventario, en la documentación de Vagrant pone que no es necesario indicarlo, pero aún así, si lo indico con "ansible.inventory_path" el error es el mismo. Además también he comprobado que la máquina es accesible directamente por SSH usando el nombre de usuario y contraseña "vagrant".

JJ commented 10 years ago

Te está tratando de conectar a todos los hosts del mundo. Mira a ver qué tienes en el fichero de hosts y pon sólo al host que quieres que te conecte.

El 28 de enero de 2014, 18:50, German Martinez notifications@github.comescribió:

No consigo hacer funcionar Ansible con Vagrant, uso este Vagrantfile:

Vagrant.configure("2") do |config| config.vm.box = "debian" config.vm.network :private_network, ip: "192.168.2.50"

config.vm.provision :ansible do |ansible| ansible.playbook = "playbook.yml" end

end

Y este playbook:


  • hosts: all sudo: yes tasks:
    • name: Instalar Nginx apt: name=nginx state=present
    • name: Comprobar Nginx command: service nginx restart && service nginx status

Pero cuando hago vagrant provision siempre me aparece el mismo error: [image: eje08_img02]https://f.cloud.github.com/assets/5518719/2021805/49b3e002-8844-11e3-8c20-31185cc694a5.png

Se ve que no encuentra el archivo de inventario, en la documentación de Vagrant pone que no es necesario indicarlo, pero aún así, si lo indico con "ansible.inventory_path" el error es el mismo. Además también he comprobado que la máquina es accesible directamente por SSH usando el nombre de usuario y contraseña "vagrant".

Reply to this email directly or view it on GitHubhttps://github.com/IV-GII/GII-2013/issues/137 .

JJ

germaaan commented 10 years ago

En el archivo "/etc/hosts" de mi sistema he añadido 192.168.2.50 vagrant, en el playbook cambio hosts: vagrant y me dice que no hay hosts que coincidan. En el Vagrantfile justo antes de ansible.playbook = "playbook.yml" pongo ansible.inventory_path = "ansible_hosts", teniendo ese archivo:

[vagrant]
192.168.2.50

Y el resultado sigue siendo el mismo: skipping: no hosts matched.

JJ commented 10 years ago

Pon el camino completo a ansible_hosts y haz previamente un ping a ver si te puedes conectar correctamente. De todas formas, ¿dónde has visto que vagrant se meta en la sección vagrant de ansible_hosts? ¿No será mejor que dejes el fichero con sólo una entrada? Aquí te viene un ejemplo que es precisamente eso lo que hace.

germaaan commented 10 years ago

Lo de meter vagrant en la sección vagrant dentro de ansible_hosts ha sido por probar, ya que lo otro no funcionaba. Pero que mi archivo ansible_host es igual al archivo de inventario host al que se hace referencia en el enlace ese.

Por lo que parece poner ansible.inventory_path para indicar la ruta del archivo de inventario como indican en la documentación de Vagrant no sirve de nada, porque ponerlo o no ponerlo me ha dado el mismo resultado, solo ha cogido el archivo de inventario cuando le dado el valor de la ruta a la variable ANSIBLE_HOSTS como en el ejercicio de Ansible usando export ANSIBLE_HOSTS=~/ansible_hosts. La prueba del ping se realiza correctamente si se indica como nombre de usuario y contraseña "vagrant".

ping

Después de eso ya si ha funcionando, dando solo un fallo menor, y es que es necesario añadir una tarea previa a la instalación del paquete, que es actualizar la lista de paquetes con apt: update_cache=yes.

fin

¿Esto es suficiente para completar el ejercicio 8, no?

JJ commented 10 years ago

Claro.

germaaan commented 10 years ago

Ok, pues entonces ya todo problema solucionado.