templateモジュールを使ってvhostを大量に使うhttpdのconfの生成方法
変数ファイル
httpd_virtualhostname: - hostname: virtualexample1.com vars: - /var/www/vhosts/virtualexample1.com - /var/www/vhosts/virtualexample1.com/LOG - hostname: virtualexample2.com vars: - /var/www/vhosts/virtualexample2.com - /var/www/vhosts/virtualexample2.com/LOG
templateファイル
Listen 80 NameVirtualHost *:80 {% for n in httpd_virtualhostname %} <VirtualHost *:80> ServerName {{ n.hostname }} DocumentRoot {{ n.vars.0 }} CustomLog {{ n.vars.1 }} combined </VirtualHost> {% endfor %}
playbook
- name: deliv conf template: src: templates/virtualhost.conf dest: /etc/httpd/conf.d/virtualhost.conf
Jinja2を使うことでifやらで条件分岐を行うことも可能。
vhostで80で受けたり443で受けるってケースで443だけ証明書の設定をするみたいな条件分岐を書くことも可能。