如何基于vaule count条件运行ansible任务
我试图根据键中元素的数量创建一个任务 我的输入将如下所示作为json输入 “srcadr”:“IP_192.168.10.10,IP_192.168.10.12” 或者在json数组中 “srcadr”:['IP_192.168.10.10','IP_192.168.10.12']如何基于vaule count条件运行ansible任务,ansible,ansible-facts,Ansible,Ansible Facts,我试图根据键中元素的数量创建一个任务 我的输入将如下所示作为json输入 “srcadr”:“IP_192.168.10.10,IP_192.168.10.12” 或者在json数组中 “srcadr”:['IP_192.168.10.10','IP_192.168.10.12'] - name: ADD IPv4 IP ADDRESS GROUP chkr_fwobj_address: ipv4: "group" group_name: "ansibleIP
- name: ADD IPv4 IP ADDRESS GROUP
chkr_fwobj_address:
ipv4: "group"
group_name: "ansibleIPv4Group1"
group_members: "{{ srcaddr }}"
adom: "{{ adom }}"
when: "{{ srcaddr |length > 1}}"
我想在元素的计数大于1时执行上面的任务,其中大于1时,任务将创建一个组并将成员添加到组中。如果只有一个元素,则当条件不应展开时,组创建任务将被忽略。正确的语法是
when: srcaddr|length > 1
下面的剧本
- hosts: localhost
vars:
srcaddr1: ['IP_192.168.10.10']
srcaddr2: ['IP_192.168.10.10', 'IP_192.168.10.12']
tasks:
- debug:
msg: There is more then 1 address in the list srcaddr1.
when: srcaddr1|length > 1
- debug:
msg: There is more then 1 address in the list srcaddr2.
when: srcaddr2|length > 1
给出:
PLAY [localhost] *******************************************************
TASK [debug] ***********************************************************
skipping: [localhost]
TASK [debug] **********************************************************
ok: [localhost] => {
"msg": "There is more than 1 address in the list srcaddr2."
}
PLAY RECAP *************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
注意:
srcadr:'IP_192.168.10.10'
的长度是字符串的长度。srcadr:['IP_192.168.10.10']
的长度是列表的长度您实际尝试使其工作的是什么?如果上述代码不工作,错误是什么。您可能需要浏览该链接。最后,欢迎来到SO感谢更新,我更改了“srcadr”:“IP_192.168.10.10”单个值,但上述任务仍基于此条件运行。如果只有一个元素,则应忽略该任务