LoginSignup
6
5

More than 3 years have passed since last update.

Ansible PlaybookのTagsが混乱するのでまとめた

Last updated at Posted at 2019-12-15

ansible-playbookにはTagsという機能があり、実行時に指定することで特定のタスクを実行しないようにしたり、実行させるようにしたりできます。
このTags、どう指定するとどう動くのかややこしい部分があるので、まとめることにしました。

原典: https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html

まとめ

  • 実行時にタグ未指定の場合(=all指定の場合)はnever以外のすべてのタスクが動く。
  • タグ指定時には、そのタグが指定されているタスクのみが動く。
  • 実行時にuntaggedを指定すると、タグが指定されていないすべてのタスクが動く。
  • 実行時にtaggedを指定すると、neverタグが指定されていない、タグが指定されているすべてのタスクが動く。

実行時パラメータとタグ指定のマッピング

行がansible-playbook--tagsで指定するパラメータ。
列がタスクについているタグです。oが実行されるタスクで、xは実行されないタスクです。

未指定 foo foo,bar always(※) never(※) debug never,debug
未指定 o o o o x o x
foo x o o o x x x
bar x x o o x x x
never(※) x x x o o x o
debug x x x o x o o
untagged(※) o x x o x x x
tagged(※) x o o o x o x
all(※) o o o o x o x
all,never o o o o o o o
--skip-tags=foo o x x o x o x
--skip-tags=always o o o x x o x

※: Ansibleの仕様で定められている特殊なタグ。

たとえば、ansible-playbook --tags barでPlaybookを実行した場合(3行目)に動くタスクは

  • foobarが両方ついたタスク(3列目)
  • alwaysがついたタスク(4列目)

で、動かないタスクは

  • タグ未指定(1列目)
  • neverだけがついたタスク(5列目)
  • debugだけがついたタスク(6列目)
  • neverdebugがついたタスク(7列目)

です。

おまけ

ansible-playbook site.yml --list-tagsのように--list-tagsを付けるとPlaybook内で使われているタグがほぼ出力されます。
neverと同時にしか使っていない場合など、出力されないケースがあることは覚えておく必要があります。

後からタグを洗い出すのは若干辛いので、Tagsを使うPlaybookを作る場合は絶対に、絶対にドキュメント化しましょう。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5