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

Abr*_*son 2 ansible

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

例如,我将参数:first_nm,last_nmnick_nm通过--extra-vars. 在我的里面role/

              <task-name>/
                         vars/main.yml 
Run Code Online (Sandbox Code Playgroud)

我尝试执行以下操作:

full_name: {{first_nm}}  {{last_nm}}{{'-'+nick_nm if nick_nm is defined else ''}}
Run Code Online (Sandbox Code Playgroud)

我的问题:

既然nick_nm是可选的,当其空,或者得到的全名,例如没有定义:david john-具有-附加价值。

那么我怎样才能避免这个附加。有没有更好的方法来做同样的事情?

Vor*_*Vor 6

您还应该检查字符串是否为空。在您的设置中,您只检查变量是否存在,并且由于它确实评估为 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
Run Code Online (Sandbox Code Playgroud)