---
title: "Ansible quickstart"
category: Ansible
layout: 2017/sheet
description: |
  A quick guide to getting started with your first Ansible playbook.
---

### Install Ansible

```bash
$ brew install ansible            # OSX
$ [sudo] apt install ansible      # elsewhere
```

Ansible is available as a package in most OS's.

See: [Installation](http://docs.ansible.com/ansible/latest/intro_installation.html)

### Start your project

```bash
~$ mkdir setup
~$ cd setup
```

Make a folder for your Ansible files.

See: [Getting started](http://docs.ansible.com/ansible/latest/intro_getting_started.html)

## Creating your files

### Inventory file

#### ~/setup/hosts

```dosini
[sites]
127.0.0.1
192.168.0.1
192.168.0.2
192.168.0.3
```

This is a list of hosts you want to manage, grouped into groups. (Hint: try
using `localhost ansible_connection=local` to deploy to your local machine.)

See: [Intro to Inventory](http://docs.ansible.com/ansible/latest/intro_inventory.html)

### Playbook

#### ~/setup/playbook.yml

```yaml
- 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
```

See: [Intro to Playbooks](http://docs.ansible.com/ansible/latest/playbooks_intro.html)

## Running

### Running ansible-playbook

```
~/setup$ ls
hosts
playbook.yml
```

#### Running the playbook

```
~/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]
...
```

## Read more

* [Getting started with Ansible](http://lowendbox.com/blog/getting-started-with-ansible/) _(lowendbox.com)_
* [Getting started](http://docs.ansible.com/ansible/latest/intro_getting_started.html) _(docs.ansible.com)_
* [Intro to Inventory](http://docs.ansible.com/ansible/latest/intro_inventory.html) _(docs.ansible.com)_
* [Intro to Playbooks](http://docs.ansible.com/ansible/latest/playbooks_intro.html) _(docs.ansible.com)_
