如何使用条件语句在ansible变量中附加值

时间:2016-01-26 15:53:41

标签: ansible

我将一组值传递给ansible play book。使用值我尝试创建一个字符串。

例如,我通过first_nm将参数last_nmnick_nm--extra-vars传递给我的剧本。在我的role/

              <task-name>/
                         vars/main.yml 

我尝试执行以下操作:

full_name: {{first_nm}}  {{last_nm}}{{'-'+nick_nm if nick_nm is defined else ''}}

我的问题:

由于nick_nm是可选的,因此如果其为空或未定义,则获取全名,例如:david john-并附加-

那么我怎么能避免这种追加。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您还应该检查字符串是否为空。在您的设置中,您只检查变量是否存在,并且因为它确实条件的计算结果为True并且为您提供- + nick_nm

你可以这样做:

---

- hosts: localhost
  gather_facts: no
  connection: local
  vars:
    - first_nm: John
    - last_nm: Smith
    - nick_nm:
  tasks:
   - set_fact: full_name="{{first_nm}} {{last_nm}}{% if nick_nm is defined and nick_nm %}-{{nick_nm}}{%endif%}"
   - debug: var=full_name