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だけ証明書の設定をするみたいな条件分岐を書くことも可能。