はじめに
Playbook には タグ機能があり、ansible-playbook
コマンドから特定のタグを持ったタスクのみ実行できます。
タグの中には、いくつか特別なものがあります。
never
タグをつけたタスクは、通常時は無視されます。他のタグをあわせて付けると、そのタグが指定されると実行されます。
この性質を利用すると「普段は実行したくないが、特定のタグをしていたときのみ実行する」といったこごができます。
この記事では簡単なサンプルをご紹介します。
- 動作確認環境
- Ansible 2.9.10
これの詳細です。
tags に never と なにか を指定しておくと、普通のansible-playbook のときは実行しなくて、-t なにか をつけてansible-playbook したときだけ実行される pic.twitter.com/ZFhGjHSGrl
— よこち(yokochi) (@akira6592) 2020年6月19日
サンプル Playbook
--- - hosts: localhost gather_facts: false tasks: - name: special task debug: msg: special task tags: - never # このタグにより通常時はこのタスクは実行されない - special - name: debug: msg: normal task
タグ指定なしで実行
ansible-playbook
コマンドで特にタグの指定をせずに実行する場合です。
$ ansible-playbook -i localhost, tagtest.yml PLAY [localhost] ************************************************************************* TASK [normal task] ***************************************************************************** ok: [localhost] => { "msg": "normal task" } PLAY RECAP ******************************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
never
タグが付いた special task
が実行されなかったことが分かります。
タグ指定で実行
今度は -t special
でタグを指定して実行します。
$ ansible-playbook -i localhost, tagtest.yml -t special PLAY [localhost] ************************************************************************* TASK [special task] ********************************************************************** ok: [localhost] => { "msg": "special task" } PLAY RECAP ******************************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
special
タグがついたタスクが実行されました。
normarl task
は special
タグが指定されていないため実行されませんでした。
おわりに
never
のような特別なタグの挙動が知られていない可能性もありますので、コメントで説明を書きておくと親切だと思います。
参考
[2021/03/24 追記]