如何基于vaule count条件运行ansible任务

如何基于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

我试图根据键中元素的数量创建一个任务

我的输入将如下所示作为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: "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”单个值,但上述任务仍基于此条件运行。如果只有一个元素,则应忽略该任务