今回はAnsibleを利用して特定の処理だけを実行する方法をご紹介します。
playbookのいらないところをコメントアウトしていろいろためして…
みたいなことが不要になります!
概要
taskの中にtags
でタグをつけておいて、ansible-playbook
コマンドの実行時に--tags
オプションでそのタグを指定してあげます。
すると、タグをつけた処理だけが実行できます!!!
かんたんな例
かんたんな例です。
playbook
playbookが以下だとします。
echoをファイルをリダイレクトするだけのかんたんなplaybookです。
それぞれtagsでwawawaとsasasaのタグをつけてあげています。
---
- hosts: localhost
gather_facts: false
tasks:
- shell: echo "wawawa" > /home/ec2-user/wawawa.txt
tags: wawawa
- shell: echo "sasasa" > /home/ec2-user/sasasa.txt
tags: sasasa
...
実行コマンド
オプションで--tags
を指定してタグがwawawaのものを実行してみます。
$ ansible-playbook -i ansible_hosts ec2_linux_tag_test.yml --tags wawawa
実行結果確認
標準出力は以下のとおり。
$ ansible-playbook -i ansible_hosts ec2_linux_tag_test.yml --tags wawawa
Using /etc/ansible/ansible.cfg as config file
PLAY [localhost] **************************************************************************************************
TASK [command] ****************************************************************************************************
changed: [localhost] => {"changed": true, "cmd": "echo \"wawawa\" > /home/ec2-user/wawawa.txt", "delta": "0:00:00.002605", "end": "2018-02-21 15:24:50.889019", "rc": 0, "start": "2018-02-21 15:24:50.886414", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
PLAY RECAP ********************************************************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0
wawawa.txtだけが作成されていることがわかります。
$ cat /home/ec2-user/wawawa.txt
wawawa
$ cat /home/ec2-user/sasasa.txt
cat: /home/ec2-user/sasasa.txt: No such file or directory
おまけ
タグは以下のように実行コマンドで複数指定することも可能です。
--tags wawawa
と--tags sasasa
を指定してあげています。
$ ansible-playbook -i ansible_hosts ec2_linux_tag_test.yml --tags wawawa --tags sasasa
また、playbook内のタグが一意である必要はないです。
今回の例の場合、両方ともtags: wawawa
としてあげることで両方とも処理が実行されます。
たとえばplaybookが以下にような場合、両方の処理が実行されます。
$ cat ec2_linux_tag_test.yml
---
- hosts: localhost
gather_facts: false
tasks:
- shell: echo "wawawa" > /home/ec2-user/wawawa.txt
tags: wawawa
- shell: echo "sasasa" > /home/ec2-user/sasasa.txt
tags: wawawa
...