Ansible 実践ガイドによると,ansibleが次のような順番で実行していく.
- 変数の読み込み
- ファクト収集
- 事前タスク(pre_tasks)の実行
- 事前タスク(pre_tasks)の実行による通知ハンドラ処理
- ロールの実行
- タスクの実行
- ロールやタスクの実行による通知ハンドラ処理
- 事後タスク(post_tasks)の実行
- 事後タスク(post_tasks)の実行による通知ハンドラ処理
3番のpre_tasksに対して,タグ指定でも実行されるという期待が外れた.
なので,always タグと組合せて,次のように利用している.
pre_tasks:
- name: check target hostname
local_action: command test {{ inventory_hostname }} = {{ ansible_hostname }}
become: false
tags: always
taskが始まる前に,インベントリに書いている名前とターゲットホスト名を照らす.
これで,少し人的ミスが防げる.