ansible中的嵌套循环。产品未定义

Nested loop in ansible. product undefined

我有这个简单的剧本:

---
- hosts: all
  become: yes
  vars:
    my_hosts:
      - 192.168.0.1
      - 192.168.0.2
      - 192.168.0.3

  tasks:

    - name: Check ports
      wait_for:
        port: "{{ item.1 }}"
        host: "{{ item.0 }}"
        timeout: 10
      loop: "{{ product(my_hosts) | product([443, 80443]) | list }}"

当我运行它喜欢这样...

$ ansible-playbook -i,192.168.2.2 run_wait_for.yml

...我收到此错误...

fatal: [192.168.2.2]: FAILED! => {"msg": "'product' is undefined"}

我做错了什么?

修正语法

      loop: "{{ my_hosts | product([443, 80443]) }}"

例如
    - debug:
        msg: "Check host: {{ item.0 }} port: {{ item.1 }}"
      loop: "{{ my_hosts|product([443, 80443]) }}"

给出(删节)

  msg: 'Check host: 192.168.0.1 port: 443'
  msg: 'Check host: 192.168.0.1 port: 80443'
  msg: 'Check host: 192.168.0.2 port: 443'
  msg: 'Check host: 192.168.0.2 port: 80443'
  msg: 'Check host: 192.168.0.3 port: 443'
  msg: 'Check host: 192.168.0.3 port: 80443'

我有 Ansible 2.9,这对我有用:

---
- name: Playbook for Check Ports
  hosts: localhost
  connection: local
  gather_facts: no

  vars:
    my_hosts:
      - 192.168.0.1
      - 192.168.0.2
      - 192.168.0.3
    ports:
      - 443
      - 80443

  tasks:

    - name: Check Ports.
      debug:
        msg: "Check host: {{ item[0] }} port: {{ item[1] }}"
      loop: "{{ my_hosts | product(ports) | list }}"
...