---
# see intro_example.yml first!
# This file explains some more advanced features of playbooks.
# because of the comments it's less concise than it normally is.  But feel
# free to comment your playbooks if you like.

- hosts: all

  # we can define variables the normal way...

  vars:
    release: 2.0

  # but they can also come from other files.  This can be a relative
  # or absolute path.  This is a good way to store 'secret' variable
  # files but still keep the playbook in public source control

  vars_files:
    - vars/external_vars.yml

  # as with before, every play has a list of tasks in it

  tasks:

  # tasks can be written the normal way...

  - name: arbitrary command
    action: command /bin/true

  # or we can promote reuse and simplicity by including tasks
  # from other files, for instance, to reuse common tasks

  - include: tasks/base.yml

  # we could also have done something like:
  # - include: wordpress.yml user=timmy
  # and had access to the template variable $user in the
  # included file, if we wanted to.  Variables from vars
  # and vars_files are also available inside include files

  handlers:

    # handlers can also be included from files, to promote reuse
    # and simpler recipes, you may wish to only have one
    # handler file for all your plays and playbooks.  This example really
    # doesn't notify any handlers, it is just showing you how they would
    # be included (see intro_example for usage).

    - include: handlers/handlers.yml

    # you can mix things that are directly in the file with things
    # that are included.  Order is executed as written, but only
    # handlers that have been notified get executed

    - name: restart foo
      action: service name=foo state=restarted

# ===============================================================

# Here's a second play in the same playbook.  This will be run
# after the first playbook completes on all hosts.  You may want
# a different play for each class of systems, or may want a different
# play for each stage in a complex multi-node deployment push
# process.  How you use them are up to you.

# any play in a playbook can be executed by a user other than root
# if you want.  sudo support is coming too.

- hosts: webservers
  user: mdehaan

  # vars must be specified again for the next play in the playbook
  # but can be reused by including from vars_files if you want
  # you can use vars, vars_files, or both.  vars_files overrides
  # those set in vars.

  vars:
     release: 2.0
  vars_files:
     - vars/external_vars.yml


  # these all runs as the user 'mdehaan'.  If there were any handlers
  # they would as well.

  tasks:

     - name: some random command
       action: command /bin/true