设置变量(如果为空或未使用ansible定义)

use*_*760 4 ansible

在我的vars文件中,我有一个有时会设置的变量,而其他时候我想动态设置它。例如,我有一个要安装的RPM。我可以将位置手动存储在变量中,或者如果我没有特定的位置,我想从Jenkins获取最新信息。我的问题是,如何检查变量是否未定义或为空,如果是,仅使用Jenkins的默认值(已存储在var中)?

这是我的想法:

...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 == ""
Run Code Online (Sandbox Code Playgroud)

Kon*_*rov 5

default过滤器:

- set_fact:
    my_rpm: "{{ my_rpm | default(jenkins_rpm) }}"
Run Code Online (Sandbox Code Playgroud)