ansible

httpd.confへのProxyPass設定をansibleで自動化

ansibleでProxyPassの設定をするサンプルです。

ソース

lineinfileモジュールを使います。

createを指定することで、ファイルがない場合は作成します。

regexpでポートの部分を指定することで、ポート番号変更の際にエントリが増えてしまうことを防ぎます。

$ cat roles/app/tasks/main.yml
---
- name: lineinfile sample
lineinfile:
dest: /tmp/test.txt
regexp: '^ProxyPass /aaa ajp://localhost:[0-9]*/aaa'
line:    'ProxyPass /aaa ajp://localhost:{{port}}/aaa'
create: yes
$ 

実行

最初にファイルがない状態で実行するとファイルを作成してエントリを追加します。

$ ls /tmp/test.txt
ls: /tmp/test.txt にアクセスできません: そのようなファイルやディレクトリはありません
$ ansible-playbook -i hosts -l appserv1 site.yml --extra-vars="port=99"; cat /tmp/test.txt
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [appserv1]
TASK [app : lineinfile sample] *************************************************
changed: [appserv1]
PLAY RECAP *********************************************************************
appserv1                   : ok=2    changed=1    unreachable=0    failed=0
ProxyPass /aaa ajp://localhost:99/aaa
$ 

再度、ポートを変更して実行すると最初の行が書き換えられます。

$ ansible-playbook -i hosts -l appserv1 site.yml --extra-vars="port=8080"; cat /tmp/test.txt
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [appserv1]
TASK [app : lineinfile sample] *************************************************
changed: [appserv1]
PLAY RECAP *********************************************************************
appserv1                   : ok=2    changed=1    unreachable=0    failed=0
ProxyPass /aaa ajp://localhost:8080/aaa
$ 
タイトルとURLをコピーしました