Ansibleのplaybookの挙動でどうしても分からない点がありましたので質問させていただきます
■実現したいこと
Ansibleでロールを実行する際、タグを指定して任意のymlを実行したい。
かつ、実行されたymlで動的に変数を読み込みたい。
(1)ロールを実行するファイル
/ansible/hoge.yml
- name: "hogeロールの実行"
tasks:- include_role:
name: hoge
- include_role:
(2)処理のフローを記載するmainファイル
/ansible/roles/hoge/tasks/main.yml
- import_tasks: tasks/A.yml
tags: [ never, A ] - import_tasks: tasks/B.yml
tags: [ never, B ]
(3)処理の中身を記載するtasksファイル。この中で動的に変数を読み込みたい
/roles/tasks/B.yml
- name: "変数読み込み"
include_vars: /roles/hoge/vars/{{ DB_instances }}.yml - name: "処理B"
tasks:
<<略>> ({{DB_instances}}.yml内に定義した変数を使用)
■困っている事
この状況でansible-playbook -i hosts hoge.yml --tags "A" をオプションに実行した場合、
Aのタグを持つA.ymlは正常に実行され、B.ymlは実行されません。しかし、何故かB.ymlの変数のチェックだけは行われてしまいます。
B.ymlは実行されないのでinclude_varsは実行されず、変数のチェックのみが行われ変数の未定義エラーになります
■質問内容、知りたい事
①プレイブックをどのように変更すれば実現したいことが達成できるか
②(必須ではない)なぜ指定したタグを持たないymlファイルの変数がチェックされてしまうのか
ansibleのバージョンは最新の2.9です
回答1件