こんにちは! JQです。
前回は『OSS編~AnsibleでRoleを試してみる02~』と題して、AnsibleでRoleのTemplatesとFileを試してみました。
今回は『OSS編~AnsibleでRoleを試してみる03~』と題して、AnsibleでRoleのVarsとHandlersを引き続き試してみたいと思います。
1.varsの設定
先ずはvarsの設定を行います。
1 2 3 |
$ sudo vim roles/apache/vars/main.yml --- test_var: hello |
次に上記の変数を設定したテンプレートファイルを作成します。
1 2 |
$ sudo vim roles/apache/templates/test.html.j2 {{ test_var }} |
設定した変数でファイルを作成するタスクを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ sudo vim roles/apache/tasks/main.yml --- - name: apache install yum: pkg={{ item }} state=present with_items: - httpd - name: template conf template: src=test.conf.j2 dest=/etc/httpd/conf.d/test.conf mode=0644 - name: make dir file: path=/var/www/test state=directory - name: index file copy: src=index.html dest=/var/www/test/index.html owner=root group=root mode=0644 - name: template var file template: src=test.html.j2 dest=/var/www/test/{{ test_var }}.html mode=0644 - name: on httpd service: name=httpd enabled=yes state=restarted |
それでは実行してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ sudo ansible-playbook site.yml [WARNING]: The version of gmp you have installed has a known issue regarding timing vulnerabilities when used with pycrypto. If possible, you should update it (ie. yum update gmp). PLAY [testservers] ************************************************************ GATHERING FACTS *************************************************************** ok: [127.0.0.1] TASK: [apache | apache install] *********************************************** ok: [127.0.0.1] => (item=httpd) TASK: [apache | template conf] ************************************************ ok: [127.0.0.1] TASK: [apache | make dir] ***************************************************** ok: [127.0.0.1] TASK: [apache | index file] *************************************************** ok: [127.0.0.1] TASK: [apache | template var file] ******************************************** changed: [127.0.0.1] TASK: [apache | on httpd] ***************************************************** changed: [127.0.0.1] PLAY RECAP ******************************************************************** 127.0.0.1 : ok=7 changed=2 unreachable=0 failed=0 |
確認してみます。
以下の様に変数が反映されていれば成功です。
1 2 |
$ curl http://127.0.0.1/test/hello.html hello |
2.Handlersの設定
次にHandlersを試してみます。
Apache再起動のHandlersを作成します。
1 2 3 4 |
$ sudo vim roles/apache/handlers/main.yml --- - name: restart httpd service: name=httpd state=restarted |
今回はタスクの「template conf」の処理に上記の設定を追加します。
また、「on httpd」のstate=restartedを外してわかりやすくします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ sudo vim roles/apache/tasks/main.yml --- - name: apache install yum: pkg={{ item }} state=present with_items: - httpd - name: template conf notify: - restart httpd template: src=test.conf.j2 dest=/etc/httpd/conf.d/test.conf mode=0644 - name: make dir file: path=/var/www/test state=directory - name: index file copy: src=index.html dest=/var/www/test/index.html owner=root group=root mode=0644 - name: template var file template: src=test.html.j2 dest=/var/www/test/{{ test_var }}.html mode=0644 - name: on httpd service: name=httpd enabled=yes |
「template conf」が更新されるようにテンプレートファイルを更新しておきます。
1 2 |
$ sudo vim roles/apache/templates/test.conf.j2 Alias /handler /var/www/test |
実行してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$ sudo ansible-playbook site.yml [WARNING]: The version of gmp you have installed has a known issue regarding timing vulnerabilities when used with pycrypto. If possible, you should update it (ie. yum update gmp). PLAY [testservers] ************************************************************ GATHERING FACTS *************************************************************** ok: [127.0.0.1] TASK: [apache | apache install] *********************************************** ok: [127.0.0.1] => (item=httpd) TASK: [apache | template conf] ************************************************ changed: [127.0.0.1] TASK: [apache | make dir] ***************************************************** ok: [127.0.0.1] TASK: [apache | index file] *************************************************** ok: [127.0.0.1] TASK: [apache | template var file] ******************************************** ok: [127.0.0.1] TASK: [apache | on httpd] ***************************************************** ok: [127.0.0.1] NOTIFIED: [apache | restart httpd] ******************************************** changed: [127.0.0.1] PLAY RECAP ******************************************************************** 127.0.0.1 : ok=8 changed=2 unreachable=0 failed=0 |
「template conf」が更新され、NOTIFIEDが実施されたのがわかります。
正しく反映されています。
1 2 |
$ curl http://127.0.0.1/handler/hello.html hello |
いかがでしたでしょうか?
次回は『OSS編~AnsibleでRoleを試してみる04~』と題して、AnsibleでRoleのmetaを試してみたいと思います。
お楽しみに!!!