Как запустить условие подсчета значений на основе задач

Я пытаюсь создать одну задачу на основе количества элементов в ключе.

мой ввод будет похож на ввод json ниже

"srcaddr": "IP_192.168.10.10, IP_192.168.10.12"

или в массиве json

"srcaddr": ['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}}"

Я хочу выполнить указанную выше задачу, когда количество элементов больше одного, из них больше одного задача создаст группу и добавит участников в группу. если у нас есть только один элемент, то задача создания группы будет проигнорирована


person mikeraj2019    schedule 13.06.2019    source источник
comment
Что вы на самом деле пытались заставить его работать?   -  person HermanTheGermanHesse    schedule 13.06.2019
comment
и если приведенный выше код не работает, в чем ошибка. вы можете перейти по ссылке stackoverflow.com/help/minimal-reproducible-example. Наконец-то добро пожаловать в ТАК! :)   -  person error404    schedule 13.06.2019


Ответы (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

Примечание. Длина srcaddr: 'IP_192.168.10.10' равна длине строки. Длина srcaddr: [ 'IP_192.168.10.10' ] равна длине списка.

person Vladimir Botka    schedule 13.06.2019
comment
Спасибо за обновление, и я изменил одно значение srcaddr: IP_192.168.10.10, но вышеуказанная задача все еще выполняется на основе этого условия, если у нас есть только один элемент, тогда задачу следует игнорировать. - person mikeraj2019; 13.06.2019