Excluding String in Jinja2 Template

Hi

Over IRC Brian was very helpful last night resolving an issue.

To summarize this now works:

{% if inventory_hostname in groups.lab %}

Lab SSH Rules

{% for host in groups.lab %}
-A INPUT -s {{ lookup(‘dig’, host, ‘@dns_server’)}} -p tcp -m state --state NEW -m tcp --dport 22 -m comment --comment “ssh from {{ host }}” -j ACCEPT
{% endfor %}
{% endif %}

Though I want to exclude some servers in groups.lab from being included in template. Luckily those I want to exclude contain a particular string which matches subdomain.

So could I use a regex search filter to exclude any server that contains such string?

Eg:

{% if inventory_hostname in groups.lab | regex_search(‘(!string)’) %}

Thanks!
Doug

Thanks to halberom on IRC!

This works:

{% for host in groups.lab if ‘string’ not in host %}

I am using something similar to deploy sssd.conf on our compute nodes:

[domain/LDAP]
autofs_provider = ldap
{%if ‘dude’ in inventory_hostname %}
ldap_autofs_search_base = ou=autofs.maps,cn=dudecluster,ou=blah,dc=domain
{%endif%}
{%if ‘bro’ in inventory_hostname %}
ldap_autofs_search_base = ou=autofs.maps,cn=brocluster,ou=blah,dc=domain
{%endif%}

Though I didn’t know you could add an if within for loop without doing:

{% if %}
{% for %}
{% endfor %}
{% endif %}

Thanks a lot!

Doug