--- # 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