---
# this is an annotated example of some features available in playbooks
# it shows how to make sure packages are updated, how to make sure
# services are running, and how to template files.  It also demos
# change handlers that can restart things (or trigger other actions)
# when resources change.  For more advanced examples, see example2.yml

# on all hosts, run as the user root...

- name: example play
  hosts: all
  user: root

# could have also have done:
#  user: mdehaan
#  sudo: yes

  # make these variables available inside of templates
  # for when we use the 'template' action/module later on...

  vars:
    http_port: 80
    max_clients: 200

  # define the tasks that are part of this play...

  tasks:

  # task #1 is to run an arbitrary command
  # we'll simulate a long running task, wait for up to 45 seconds, poll every 5
  # obviously this does nothing useful but you get the idea

  - name: longrunner
    action: command /bin/sleep 15
    async: 45
    poll: 5

  # let's demo file operations.
  #
  # We can 'copy' files or 'template' them instead, using jinja2
  # as the templating engine.  This is done using the variables
  # from the vars section above mixed in with variables bubbled up
  # automatically from tools like facter and ohai.  'copy'
  # works just like 'template' but does not do variable subsitution.
  #
  # If and only if the file changes, restart apache at the very
  # end of the playbook run

  - name: write some_random_foo configuration
    action: template src=templates/foo.j2 dest=/etc/some_random_foo.conf
    notify:
    - restart apache

  # make sure httpd is installed at the latest version

  - name: install httpd
    action: yum pkg=httpd state=latest

  # make sure httpd is running

  - name: httpd start
    action: service name=httpd state=running

  # handlers are only run when things change, at the very end of each
  # play.  Let's define some.  The names are significant and must
  # match the 'notify' sections above

  handlers:

    # this particular handler is run when some_random_foo.conf
    # is changed, and only then

    - name: restart apache
      action: service name=httpd state=restarted