Я использую доступный 2.1. У большинства веб-серверов есть только один IP-адрес, но у некоторых серверов есть два IP-адреса. У каждого веб-сервера есть специальный веб-сайт для внутреннего использования, у меня есть специальная переменная для определения того, какой IP-адрес используется для этого сайта: если INTERNALWEBSITE_LISTEN_IP является нулевым - используется основной IP-адрес, если нет - пользовательский IP-адрес из host_vars.Ansible: как сжимать шаблон jinja2, используя условия
содержание roles/web_std/defaults/main.yml
:
r_web_std:
INTERNALWEBSITE_LISTEN_IP: null
содержание на inventory/host_vars/100.200.1.2
:
r_web_std:
INTERNALWEBSITE_LISTEN_IP: "100.200.1.4"
(узел имеет два IP: 100.200.1.2 и 100.200.1.4 и 100.200.1.2 по умолчанию IP)
и здесь фрагмент от 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
Мои глаза!
Можно ли это упростить?
{% if r_web_std.INTERNALWEBSITE_LISTEN_IP == null %}
{{ ansible_default_ipv4.address }}
{% else %}
{{ r_web_std.INTERNALWEBSITE_LISTEN_IP }}
{% endif %}