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 $