refactoring of playbooks now warranted, which we'll do before we move on. This variable assignment system makes nearly all possible magic possible, for we can use these variables however we like, even as module names!
51 lines
1.6 KiB
YAML
51 lines
1.6 KiB
YAML
---
|
|
# this is a demo of conditional imports. This is a powerful concept
|
|
# and can be used to use the same recipe for different types of hosts,
|
|
# based on variables that bubble up from the hosts from tools such
|
|
# as ohai or facter.
|
|
#
|
|
# Here's an example use case:
|
|
#
|
|
# what to do if the service for apache is named 'httpd' on CentOS
|
|
# but is named 'apache' on Debian?
|
|
|
|
|
|
# there is only one play in this playbook, it runs on all hosts
|
|
# as root
|
|
|
|
- hosts: all
|
|
user: root
|
|
|
|
# we have a common list of variables stored in /vars/external_vars.yml
|
|
# that we will always import
|
|
|
|
# next, we want to import files that are different per operating system
|
|
# and if no per operating system file is found, load a defaults file.
|
|
# for instance, if the OS was "CentOS", we'd try to load vars/CentOS.yml.
|
|
# if that was found, we would immediately stop. However if that wasn't
|
|
# present, we'd try to load vars/defaults.yml. If that in turn was not
|
|
# found, we would fail immediately, because we had gotten to the end of
|
|
# the list without importing anything.
|
|
|
|
vars_files:
|
|
|
|
|
|
- "vars/external_vars.yml"
|
|
|
|
|
|
- [ "vars/$facter_operatingsystem.yml", "vars/defaults.yml" ]
|
|
|
|
# and this is just a regular task line from a playbook, as we're used to.
|
|
# but with variables in it that come from above. Note that the variables
|
|
# from above are *also* available in templates
|
|
|
|
tasks:
|
|
|
|
- name: ensure apache is latest
|
|
action: $packager pkg=$apache state=latest
|
|
- name: ensure apache is running
|
|
action: service name=$apache state=running
|
|
- name: template step
|
|
action: template src=/tmp/test.j2 dest=/tmp/test.out
|
|
|
|
|