Tuesday, November 2, 2021

[SOLVED] The task includes an option with an undefined variable

Issue

I have the below vars file and Ansible task which allows some ports for a specific source IPs on the firewall.

But for some reason, whenever I run the task I got this error:

FAILED! => {"msg": "The task includes an option with an undefined variable.

Even though I'm able to echo out these variables using debug Ansible module, so basically I'm just unable to use these variable specifically in this task.

Ansible Task:

---
- name:
  firewalld:
    permanent: yes
    port: "{{ item.0 }}"
    state: enabled
    zone: public
    source: "{{ item.1 }}"
    with_nested: 
      - "{{ ports }}"
      - "{{ ips }}"

Vars File:

ports:
  - "8000/tcp"
  - "9997/tcp"
  - "8181/tcp"
  - "8080/tcp"
  - "8191/tcp"
  - "8088/tcp"
  - "8065/tcp"
  
ips:
  - "192.168.210.30/32"
  - "192.168.210.35/32"
  - "192.168.210.40/32"
  - "192.168.210.31/32"
  - "192.168.210.36/32"
  - "192.168.210.41/32"
  - "192.168.210.42/32"
  - "192.168.210.37/32"


Solution

Indentation of with_nested is wrong. Correct syntax is

- name:
  firewalld:
    permanent: yes
    port: "{{ item.0 }}"
    state: enabled
    zone: public
    source: "{{ item.1 }}"
  with_nested: 
    - "{{ ports }}"
    - "{{ ips }}"


Answered By - Vladimir Botka