はじめに
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 追記]