6

In my ansible vars file, I have a variable that will sometimes be set and other times I want to dynamically set it. For example, I have an RPM that I want to install. I can manually store the location in a variable, or if I don't have a particular one in mind, I want to pull the latest from Jenkins. My question is, how can I check if the variable is not defined or empty, and if so, just use the default from Jenkins (already stored in a var)?

Here is what I have in mind:

...code which gets host_vars[jenkins_rpm]
- hosts: "{{ host }}"
  tasks:
  - name: Set Facts
    set_fact:
      jenkins_rpm: "{{ hostvars['localhost']['jenkins_rpm'] }}"

  - name: If my_rpm is empty or not defined, just use the jenkins_rpm
    set_fact: my_rpm=jenkins_rpm
    when: !my_rpm | my_rpm == ""
user3270760
  • 1,444
  • 5
  • 23
  • 45

1 Answers1

7

There is default filter for that:

- set_fact:
    my_rpm: "{{ my_rpm | default(jenkins_rpm) }}"
Konstantin Suvorov
  • 65,183
  • 9
  • 162
  • 193