質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

1回答

345閲覧

Ansible ansible-playbookコマンドにてtagsで指定したタスクが実行されない

khaii21

総合スコア65

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2023/05/25 05:01

編集2023/05/25 05:12

実現したいこと

4番目に実行するhoge4タスクを--tagsで指定して実行したい

countryロール配下にあるmain.ymlに、他ロール(car,train,bus,airplane)にあるタスクを
include_roleしています。
4番目に実行するhoge4タスクを--tagsで指定して実行したいのですが、
下記のansible-playbookコマンドにてhoge4のタスクを --tags で指定しても実行出来ません。

$ ansible-playbook -i inventory/japan/hosts.yml playbook/playbook.yml --tags hoge4

--skip-tags でhoge4以外を除外するとhoge4のタスクは実行出来ます。
下記にてhoge4は実行可能

$ ansible-playbook -i inventory/japan/hosts.yml playbook/playbook.yml --skip-tags hoge1,hoge2,hoge3,hoge5

何かお気づきの方がいらっしゃいましたらご教授頂けないでしょうか。
宜しくお願い致します。

前提

$ ansible-playbook -i inventory/hosts.yml playbook/playbook.yml --list-tasks

playbook: playbook/playbook.yml play #1 (all): Main playbook TAGS: [] tasks: include_role TAGS: [hoge1] include_role TAGS: [hoge2] include_role TAGS: [hoge3] include_role TAGS: [hoge4] include_role TAGS: [hoge5]

発生している問題・エラーメッセージ

$ ansible-playbook -i inventory/japan/hosts.yml playbook/playbook.yml --tags hoge4

エラーなし

実行結果

PLAY [Main playbook] ********************************************************************************************************************************************************************** TASK [include_role : train] ************************************************************************************************************************************************************** PLAY RECAP ********************************************************************************************************************************************************************************

該当のソースコード

playbook構成

1├── inventory 2│   ├── japan 3│  │   ├── group_vars 4│  │   │   └── japan.yml 5│  │   └── hosts.yml 6├── playbook 7│   └── playbook.yml 8│   └── roles 9│   ├── car 10│   │  └── tasks 11│   │   └── hoge3.yml 12│   ├──country 13│   │  └── tasks 14│   │     └── main.yml 15│   ├── train 16│   │   └── tasks 17│   │   ├── hoge2.yml 18│   │   └── hoge4.yml 19│   ├── bus 20│   │   └── tasks 21│   │   └── hoge5.yml 22│   └──airplane 23│   └── tasks 24│   └── hoge1.yml

試したこと

--skip-tags にてhoge4以外を除外対象にするとhoge4は実行出来る

$ ansible-playbook -i inventory/japan/hosts.yml playbook/playbook.yml --skip-tags hoge1,hoge2,hoge3,hoge5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらく、hoge4 のタグを付けているタスクは以下のようになっているかと思います。

yaml

1 - include_role: 2 name: ロール名前 3 tags: hoge4

もし include_role のように include_* を利用する必要がない場合、以下のようするとどうでしょうか。

yaml

1 - import_role: 2 name: ロール名前 3 tags: hoge4

実行は

ansible-playbook -i inventory/japan/hosts.yml playbook/playbook.yml --tags hoge4

です。

include_role だと呼ばれたロール内のタスクにタグが引き継がれなませんので、かわりに import_role にしてみました。

ただ、import_role にすると都合が良くないケース(loopできないなど)もあります。その場合は、呼び出し元、呼び出し先の処理をご提示いただければと思います。

投稿2023/05/25 05:15

編集2023/05/25 05:16
yabusakadeny

総合スコア157

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khaii21

2023/05/25 14:17 編集

ご確認ありがとうございます。 ご推察の通りinclude_roleしていました。 ご教授頂きましたimport_roleにて解決できました。 大変勉強になりました。 申し訳ございません。 ベストアンサーにさせて頂くように設定したのですが反映されておりませんので 運営側に問い合わせをしています。
yabusakadeny

2023/05/25 10:34

よかったです。わざわざすみません。お気になさらず・・。
khaii21

2023/05/25 14:18 編集

運営側から現在ベストアンサーの編集が出来ないバグが発生しており対応中との返答がありました。 時間がかかるかもしれませんが後ほどベストアンサーにさせて頂けると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問