Some (disjointed) notes on provisioning Vagrant with Ansible
Configuring Vagrant to provision using Ansible is easy enough:
config.vm.provision "ansible" do |ansible| ansible.playbook = "provisioning/playbook.yml" end
Note however, that unlike Puppet, Ansible needs to be installed on your local computer, not within the virtual machine. On OS X, you use pip:
sudo easy_install pip sudo pip install -U ansible
Ansible uses roles which are re-usable sets of configuration commands. The easiest way to create a new playbook is to use the ansible-galaxy command line tool:
ansible-galaxy init my_new_role
This will create a skeleton role with a main.yml in each subdirectory for you.
Ansible Galaxy is the repository for finding reusable roles. Ansible doesn’t seem to have any distribution-independence. I’m unclear if this is a problem or not, but I kept finding roles on Galaxy that were for Centos only which was annoying. Also, roles installed via the ansible-galaxy command line tool are automatically installed globally, rather than in my vagrant project. I suspect that this fits better with its main purpose of managing servers rather than being a provisioner for Vagrant.
There are useful resources that I will want to find again: