我正在使用2.1。大多數網絡服務器只有一個IP,但有些服務器有兩個IP。每個網絡服務器都有專門的網站供內部使用,我有一個特殊的變量來定義這個網站使用哪個IP:如果INTERNALWEBSITE_LISTEN_IP爲空 - 使用主要IP,如果不是 - 從host_vars定製IP。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 %}