Ansibleの罠:「--tags」を指定したのにinclude先のタスクが全部実行されてしまう原因と対策
Ansibleの罠:--tags を指定したのに include 先のタスクが全部動いてしまう原因と対策
Ansibleで特定の処理だけを実行しようと --tags を指定した際、「タグを設定していないはずのタスクまで実行されてしまった」という経験はありませんか?
これはAnsibleの仕様である「タグの継承(Inheritance)」が関係しています。
本記事では、この挙動の仕組みと、意図しない実行を防ぐための正しい書き方を解説します。
---
1. 【起】なぜ意図しないタスクが動くのか
例えば、以下のようなメインのPlaybook(main.yml)があるとします。# main.yml
- name: crontab関連のタスクを読み込む
ansible.builtin.include_tasks: file: "sub.yml" tags: crontabこの状態で、コマンドラインから ansible-playbook main.yml --tags crontab を実行すると、読み込まれる sub.yml の中に書かれたタスクは、タグ設定の有無に関わらずすべて実行対象になります。
「sub.ymlの中にある特定のタスクだけを動かしたい」と思ってタグを付けても、呼び出し側の include_tasks にタグがあると、ファイル全体がそのタグの色に染まってしまうのです。
2. 【承】挙動の正体は「タグの継承」と「never」の仕様
この挙動を理解するポイントは3つです。
① タグの継承 (Tag Inheritance)
include_tasks や
0