AnsibleでVirtualhostを追加する処理を作るのに、毎回Playbookの中身を書き換えるのは面倒なので、引数で設定する方法を調べた。
結果は簡単で、ansible-playbookの引数に–extra-varsで指定してやればOK。
1 |
ansible-playbook -i "172.16.0.1, " --extra-vars "domain=www.newdomain.tld" |
これで、Playbook内のdomain変数にwww.newdomain.tldがセットされる。
複数指定するときは、
1 |
ansible-playbook -i "172.16.0.1, " --extra-vars "domain=www.newdomain.tld port=80" |
みたいな感じでスペース区切りで並べてOK。
なので、こんなPlaybookで簡単にVirtualhostが追加できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
- name: Add Virtualhost to httpd hosts: all vars: domain: '{{ domain }}' tasks: - name: Create virtualhost lineinfile: dest: /etc/httpd/conf/vhosts/{{ domain }}.conf create: yes insertafter: EOF line: | <VirtualHost *{{ ':' }}80> ServerName {{ domain }} DocumentRoot /var/www/{{ domain }} <Directory "/var/www/{{ domain }}"> Options FollowSymLinks </Directory> </VirtualHost> - name: restart httpd service: name=httpd state=restarted |
この場合は、httpd.confの方でinclude /etc/httpd/conf/vhosts/*.confとか書いてある前提。
ファイル削除を組めば一発でVirtualhostを消せるし、このときにftpユーザとかを追加するみたいな処理も書き足せば管理も容易。
(3811)