Yearly Archives: 2014

Vagrant + Ansible provisioning add roles using Ansible Galaxy

This guide will show how to setup Nginx+php5-fpm development VM’s using Vagrant with Ansible as provisioner with added bonus using Ansible Galaxy for roles.

Requirements:
Ubuntu 12.04 or higher
Virtualbox 4.14+
Vagrant 1.4.3
Ansible 1.4+

Setup Ansible using VirtualEnv to isolate working environment:

$ virtualenv ansi_env
$ cd ansi_env
$ source bin/activate
$ pip install ansible
 

Assuming Virtualbox and vagrant are already installed:

$ mkdir ~/vagrant 
$ cd ~/vagrant 
$ vagrant box add precise64 http://files.vagrantup.com/precise64.box
$ git clone https://github.com/cocoy/vagrant_ansible.git 
$ cd vagrant_ansible
$ vagrant up web 

The commands will launch vagrant web vm with simply nginx installed.
The nice part is using Ansible Galaxy by adding more roles to speedup environment setup.

$ export ANSIBLE_ROLES_PATH=playbooks/roles/
$  ansible-galaxy install nbz4live.php-fpm

Edit playbook/web.xml under roles add the line below:

 ---
 - hosts: all
   roles:
    - common 
    - nginx
    - nbz4live.php-fpm

Now let’s provision the web server with php-fpm added:

$ vagrant provision web 
 

Now we can see nginx + php5-fpm installed. Let’s try adding site config and index.php then.

 ---
 - hosts: all
   roles:
    - common 
    - nginx
    - nbz4live.php-fpm
    - nginx-fpm-setup 

This time just run ansible provision web and hit localhost:8080 on your browser.
In summary Ansible Galaxy can ease our setup and ready to use Ansible roles!