无法在Ansible中为set_fact设置默认值

问题描述 投票:0回答:1

让用户认为将Number参数传递给我的ansible-playbook为>>

ansible-playbook /app/test.yml 
-e  "Number=22235_ReDep_292001105550"

我希望set_fact“ Number_New”是第一个下划线“ _”之前的字符串,即22235,“ Status”是第一个下划线“ _”之后的所有字符串,即]]

Expectation:
Number_New should be "22235"
Status should be "ReDep_292001105550"

第二种情况;用户可以通过-e“ Number = 22235”。这种情况下,我希望set_fact“ Number_New”应该与传递的“ Number = 22235”相同,而Status应该是“%”模数符号。

Expectation:
Number_New should be "22235"
Status should be "%"

下面是我的剧本尝试,当传递的参数为“ Number = 22235_ReDep_292001105550”时工作正常,但在-e“ Number = 22235”时失败,]

  tasks:
   - name: Populate number and status from user input
     set_fact:
       Number_New: "{{ Number.split('_')[0] | default(Number) }}"
       Status: "{{ Number.split('_')[1] }}_{{ Number.split('_')[2] | default('%') }}"

失败时出错:

fatal: [localhost]: FAILED! => {
    "msg": "The task includes an option with an undefined variable. The error was: list object has no element 1\n\nThe error appears to be in '/app/test.yml': line 32, column 6, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n   - name: Populate number and status from user input\n     ^ here\n"
}
<<

下面的任务完成了工作

- set_fact: Number_New: "{{ nsplit.0 }}" Status: "{{ nsplit.1|default('%') }}" vars: nsplit: "{{ Number.split('_', 1) }}"

variables split ansible default
1个回答
0
投票
下面的任务完成了工作

- set_fact: Number_New: "{{ nsplit.0 }}" Status: "{{ nsplit.1|default('%') }}" vars: nsplit: "{{ Number.split('_', 1) }}"

© www.soinside.com 2019 - 2024. All rights reserved.