0
votes

I am trying to provision a virtual machine with an Ansible playbook.

Following the documentation, I ended up with this simple Vagrant File:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/xenial64"
  config.vm.network "private_network", ip: "192.168.50.5"

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

As you can see, I am trying to provision a xenial64 machine (Ubuntu 16.04) from a playbook.yml file.

When I launch vagrant provision, here is what I get:

$ vagrant provision                                                                   
==> default: Running provisioner: ansible...
    default: Running ansible-playbook...
PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit="default" --inventory-file=/home/mmarteau/Code/ansible-arc/.vagrant/provisioners/ansible/inventory -vvv playbook.yml
Using /etc/ansible/ansible.cfg as config file
statically included: /home/mmarteau/Code/ansible-arc/roles/user/tasks/ho-my-zsh.yml
statically included: /home/mmarteau/Code/ansible-arc/roles/webserver/tasks/nginx.yml
statically included: /home/mmarteau/Code/ansible-arc/roles/webserver/tasks/php.yml
statically included: /etc/ansible/roles/geerlingguy.composer/tasks/global-require.yml
statically included: /etc/ansible/roles/geerlingguy.nodejs/tasks/setup-RedHat.yml
statically included: /etc/ansible/roles/geerlingguy.nodejs/tasks/setup-Debian.yml

PLAYBOOK: playbook.yml *********************************************************
1 plays in playbook.yml

PLAY RECAP *********************************************************************

So my file seems to be read because I get some statically included from roles into my playbook.yml file.

However, the script stops very quickly, and I don't have any information to debug or to see any errors.

How can I debug this process?

EDIT: More info

Here is my playbook.yml file:

---
- name: Installation du serveur

  # hosts: web
  hosts: test
  vars: 
    user: mmart
    apps: 
        dev:
            branch: development
            domain: admin.test.dev
        master:
            branch: master
            domain: admin.test.fr
    bitbucket_repository: [email protected]:Test/test.git
    composer_home_path: '/home/mmart/.composer'
    composer_home_owner: mmart
    composer_home_group: mmart
    zsh_theme: agnoster
    environment_file: arc-parameters.yml
    ssh_agent_config: arc-ssh-config

  roles: 
    - apt
    - user
    - webserver
    - geerlingguy.composer
    - geerlingguy.nodejs
    - deploy
    - deployer
...

Here is my host file:

[web]
XX.XX.XXX.XXX ansible_ssh_private_key_file=/somekey.pem ansible_become=true ansible_user=ubuntu

[test]

Here is the generated host file from vagrant in .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory :

# Generated by Vagrant

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='ubuntu' ansible_ssh_private_key_file='/home/mmart/Code/ansible-test/.vagrant/machines/default/virtualbox/private_key'

Is this correct? Shouldn't the ansible_ssh_user be set to vagrant ?

1
Weird. You could try adding a fourth v to your verbosity, and see if anything shows up. - Don Branson
I think it might have something to do with my ansible host file, what should I put in it? Or in the hosts var of my playbook - Hammerbot
My guess is that it's loading everything, then doesn't see anything to run. Can you include your playbook.yml? - Don Branson
I edited my question with more information - Hammerbot
And adding a fourth v does not change the information given by the command line - Hammerbot

1 Answers

3
votes

In your playbook use the default as hosts, as vagrant by default will only create an inventory element for that particular host:

---
- name: Installation du serveur

  hosts: default
  (...)