I’ve started using Ansible at my work, where we use it to deploy Splunk environments.
One of the things I needed to do is to provide a list of tcp ports to a “with_items” statement in a form of list.
I have this vars file and I needed to filter out only the TCP ports
port: dns: tcp: 5001 udp: 5002 dual: tcp: 6001 udp: 6002 relay: tcp: 7001 udp: 7002
So here is how you can do it (in 2 steps) in Ansible.
- name: set_fact set_fact: tcp_ports: "{% for feed in port %}{{ port[feed]['tcp'] }},{% endfor %}" - name: print tcp ports debug: msg: "{{ item }}" with_items: - "{{ (tcp_ports| regex_replace(',', '')).split (',') | list }}"
Of course you can replace the debug msg with whatever other action you need.
By the way, if you know how to do it in a single step please let me know.