verdichtet, verwende ich ansible 2.1. Die meisten Webserver haben nur eine IP, aber einige Server haben zwei IPs. Jeder Webserver verfügt über eine spezielle Website für die interne Nutzung, ich habe eine spezielle Variable, um zu definieren, welche IP für diese Site verwendet wird: wenn INTERNALWEBSITE_LISTEN_IP null ist - verwendete Haupt-IP, falls nicht - benutzerdefinierte IP von host_vars.Ansible: wie man jinja2 Schablone unter Verwendung der Bedingungen
Inhalt roles/web_std/defaults/main.yml
:
r_web_std:
INTERNALWEBSITE_LISTEN_IP: null
Inhalt inventory/host_vars/100.200.1.2
:
r_web_std:
INTERNALWEBSITE_LISTEN_IP: "100.200.1.4"
(diese Host verfügt über zwei IP: 100.200.1.2 und 100.200.1.4 und 100.200.1.2 ist Standard-IP)
und hier ist Fragment von server.conf.j2
:
DocumentRoot /www/{% if r_web_std.INTERNALWEBSITE_LISTEN_IP == null %}{{ ansible_default_ipv4.address }}{% else %}{{ r_web_std.INTERNALWEBSITE_LISTEN_IP }}{% endif %}/www
ErrorLog /var/log/httpd/{% if r_web_std.INTERNALWEBSITE_LISTEN_IP == null %}{{ ansible_default_ipv4.address }}{% else %}{{ r_web_std.INTERNALWEBSITE_LISTEN_IP }}{% endif %}/error.log
CustomLog "/var/log/httpd/{% if r_web_std.INTERNALWEBSITE_LISTEN_IP == null %}{{ ansible_default_ipv4.address }}{% else %}{{ r_web_std.INTERNALWEBSITE_LISTEN_IP }}{% endif %}/access.log" combined
Meine Augen!
Ist es möglich, dies zu vereinfachen?
{% if r_web_std.INTERNALWEBSITE_LISTEN_IP == null %}
{{ ansible_default_ipv4.address }}
{% else %}
{{ r_web_std.INTERNALWEBSITE_LISTEN_IP }}
{% endif %}