Skip to content

Instantly share code, notes, and snippets.

@cocoy
Created May 9, 2012 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cocoy/2643148 to your computer and use it in GitHub Desktop.
Save cocoy/2643148 to your computer and use it in GitHub Desktop.
ansible issue #341
---
# this is a demo of conditional executions using 'only_if', which can skip
# certain tasks on machines/platforms/etc where they do not apply.
- hosts: web-servers
user: ubuntu
sudo: True
vars:
favcolor: "red"
ssn: 8675309
# Below we're going to define some expressions.
#
# Not only can we assign variables for reuse, but we can also assign conditional
# expressions. By keeping these in 'vars', the task section remains
# extraordinarily clean, and not littered with programming language
# constructs -- so it's easily skimmed by humans.
#
# Remember to quote any variables if they are not numbers!
#
# Interesting fact: aside from the $variables, these expressions are actually
# tiny bits of Python. They are evaluated in the context of each host, so different
# steps can be skipped on different hosts! They should evaluate to either True
# or False
is_favcolor_blue: "'$favcolor' == 'blue'"
#is_centos: "'$facter_operatingsystem' == 'CentOS'"
# NOTE:
#
# facter and ohai variables can be used in only_if statements too
# ex: "'$facter_operatingsystem' == 'CentOS'", which bubble up automatically
# from the managed machines
#
# this example won't do that though, as you might not have facter or ohai,
# but you get the idea...
tasks:
- name: "do this if my favcolor is blue, this will skip"
action: shell /bin/false
only_if: '$is_favcolor_blue'
- include: tasks/task_sam.yml
# moved to tasks/task_sam.yml
#- name: "do this if my favcolor is not blue"
# action: shell /bin/true
# only_if: 'not ($is_favcolor_blue)'
---
- name: "do this if my favcolor is not blue"
action: shell /bin/true
#only_if: 'not ($is_favcolor_blue)' # this does not work.
only_if: "not ($is_favcolor_blue)"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment