--- # this is a demo of conditional executions using 'only_if', which can skip # certain tasks on machines/platforms/etc where they do not apply. This is # the more 'raw' version of the 'when' statement, most users will be able to # use 'when' directly. 'only_if' is an older feature, and useful for when # you need more advanced expression control. - hosts: all user: root 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: # # setup module values, 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 doesn't do that though. tasks: - name: "do this if my favcolor is blue" action: shell /bin/false only_if: '$is_favcolor_blue' - name: "do this if my favcolor is not blue" action: shell /bin/true only_if: 'not ($is_favcolor_blue)'