Ansible is a fantastic tool for provisioning servers. I personally prefer it over Chef, Puppet and Salt. Here's how to get an Ansible project started.
Ansible is officially available via pip
.
brew install ansible # OSX
[sudo] pip install ansible # elsewhere
Make the directory. Put this under version control, preferrably.
~$ mkdir setup
~$ cd setup
This is a list of hosts you want to manage, grouped into groups. (Hint: try using 127.0.0.1 to deploy to your local machine)
# ~/setup/hosts
[sites]
127.0.0.1
192.168.0.1
192.168.0.2
192.168.0.3
A playbook is just a YAML file.
# ~/setup/playbook.yml
- hosts: 127.0.0.1
user: root
tasks:
- name: install nginx
apt: pkg=nginx state=present
- name: start nginx every bootup
service: name=nginx state=started enabled=yes
- name: do something in the shell
shell: echo hello > /tmp/abc.txt
- name: install bundler
gem: name=bundler state=latest
Use the ansible-playbook
command.
~/setup$ ls
hosts
playbook.yml
~/setup$ ansible-playbook -i hosts playbook.yml
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [127.0.0.1]
TASK: [install nginx] *********************************************************
ok: [127.0.0.1]
TASK: [start nginx every bootup] **********************************************
ok: [127.0.0.1]
...
Ansible's source is available via GitHub: ansible/ansible.