Ansible is an open-source software platform for configuring and managing computers. It combines multi-node software deployment, ad hoc task execution, and configuration management. It manages nodes over SSH and requires Python (2.4 or later) to be installed on them. Modules work over JSON and standard output and can be written in any programming language. The system uses YAML to express reusable descriptions of systems.
Ansible is a DevOps tool for configuring, deploying, monitoring, and automating servers (among other things). This article will only discuss the Linux aspects. Most of the examples will use Vagrant. However, some of the examples/demos will include Rackspace, DigitalOcean, and Amazon's AWS as well.
In the following examples, lines starting with "
$" indicate a command to be run on the Ansible controlling machine (my laptop/local machine in most cases) and "
[remote] $" indicates a command to be run on one of the nodes.
- Setup your local Ansible environment:
$ mkdir -p $HOME/dev/ansible $ cd $HOME/dev/ansible $ git init
- Create your inventory file and add it to your git repo (we will call our development group of hosts "
$ cat << EOF > hosts [dev] 192.168.22.10 $ git add hosts
- Test that you can communicate with your vagrant VM (I like to sometimes add "
-vvvv" for extra verbosity whilst debugging/developing):
$ ansible dev -i hosts -u vagrant -vvvv -m command -a "uptime"
- Update your remote (vagrant VM, in this case) machine ("
-s" to use
$ ansible dev -i hosts -u vagrant -s -m command -a "apt-get update"
[remote] $ tailf /var/log/syslog Jun 10 18:52:36 vagrant ansible-command: Invoked with executable=None shell=True args=apt-get update removes=None creates=None chdir=None