Ansible Jinja Template Comparison

Greetings!

How to compare when items are not in jinja template loop?

    with_items: "{{ runconfser.stdout_lines[0] }}"
    when: (item not in {src: 'ntprequired.j2'} and (item!=""))
    ios_config:
      lines:
        - "no {{ item }}"
I am using roles.
**/templates/ntprequired.j2**:

{% for ntp_srv in ntp_servers %}
ntp server {{ ntp_srv }}
{% endfor %}

I’m not sure how to make it work how you have laid out. But I would do the check in the jinja template anyway. Get your current ntp lines. In the jinja template run.

{% for ntp_server in ntp_config_get %}
{% if ntp_line not in ntp_servers %}
no ntp server {{ ntp_server }}
{% ending %}
{% for ntp_srv in ntp_servers %}
ntp server {{ ntp_srv }}
{% endfor %}

If you got the whole line of current ntp servers, you’ll have to parse the ips with regex, I’m certain I’ve done something very similar to this before. Let me know if you still have issues after trying this.

Hi Jason,
Thanks for replying. That’s definitely another way of doing it. However, this is what I am trying.

  1. Get the ntp server config from “sh run”.
  2. Store that to a list
  3. Jinja template generates the required config. I am passing the ntp_server IPs via -e (extra variables).
  4. Add the config from 3, compare 3 and 4 and remove the rest.

tasks file for ansible-ios-ntp

Any help is highly appreciated!