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

如何使用条件语句在ansible变量中追加值,ansible,Ansible,我正在将一组值传递给ansible剧本。使用该值,我尝试创建一个字符串 例如,我通过--extra vars将参数:first_nm、last_nm和nick_nm传递给我的剧本。在我的角色中/: <task-name>/ vars/main.yml 我的问题是: 由于nick\u nm是可选的,因此当其为空或未定义时,如果获取全名,例如:david john-,并在值后面附加一个- 那么我怎样才能避免

我正在将一组值传递给ansible剧本。使用该值,我尝试创建一个字符串

例如,我通过
--extra vars
将参数:
first_nm
last_nm
nick_nm
传递给我的剧本。在我的
角色中/

              <task-name>/
                         vars/main.yml 
我的问题是:

由于
nick\u nm
是可选的,因此当其为空或未定义时,如果获取全名,例如:
david john-
,并在值后面附加一个
-


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

您还应该检查字符串是否为空。在您的设置中,您只需检查变量是否存在,并且由于它存在,因此条件计算为True,并为您提供
-+nick\u 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

你试过你的解决方案吗?它对我有用。没有添加“-”。
---

- 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