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

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

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

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

Q&A

解決済

2回答

3444閲覧

AnsibleのPlaybookのトップレベルのアトリビュートをrole内で定義する方法について

kamakiriad

総合スコア25

Ansible

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

0グッド

1クリップ

投稿2016/12/13 05:37

編集2016/12/13 05:39

下記のようなAnsibleのPlaybookをもとにroleを作ろうとしています。

--- - hosts: hostA become_user: userA vars_prompt: (Ansibleのバージョンは2.2を想定しています)

この場合、become_userやvars_promptはroleを構成するファイル群のなかのどこに記載すればいいのでしょうか?

まずbecome_userは個人的にはroleのtasks/main.ymlにタスクごとに

--- - name: taskA module1: arg1 become_user: userA - name: taskB module2: arg2 become_user: userA

と記載するか、記載せずにansible-playbook --become-user userAで意図する動作を得ることはできました。
ただ、become_user: userAをrole内に1箇所だけ記載して
role全体の処理を実行していく方法があれば知りたいと思っています。

vars_promptについては色々触って見た結果、現時点ではroleの中では定義できず、
roleを呼び出す側のPlaybook(site.ymlなど)で定義しないといけないかと思っています。
ただ、特定のrole内だけで使いたいのでroleで定義する方法があれば知りたいと思っています。

どうぞ宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

become_userをroleごとに使用したければroleの呼び出し元に書く必要がありますし、vars_promptはplayごとにしか使用できないのでこちらも呼び出し元にしか書けません。
なので別の手を使います。

become_userをroleごとに定義したければ(role名)/vars/main.ymlか(role名)/defaults/main.ymlに「ansible_become_user」という変数で定義しておけば良いです。

vars_promptは代わりに(多少挙動は変わりますが)pauseモジュールをregisterと共に使用して(registerの変数名).user_inputで取り出しましょう。
ただし、変数のスコープはplayなので、同じplay内の他のroleに値を伝播させたくなければset_factあたりで値を消しておく必要があります。

投稿2016/12/13 07:38

yunano

総合スコア841

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

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

kamakiriad

2016/12/13 08:29

分かりやすいご回答を頂きまして、ありがとうございます!
guest

0

解決はしていませんが、とりあえずrole内では定義不可で

  1. roleを呼び出すPlaybookを分ける
  2. roleを呼び出すPlaybook内に複数のPlayを定義する

のどちらかかなと思っています。

後者はroleを呼び出すPlaybook内の記載は

- hosts: hostA become_user: userA vars_prompt: roles: - roleA # become_userやvars_promptを使いたいrole - hosts: hostB roles: - roleB # become_userやvars_promptの設定や情報が不要なrole

のようなイメージを持っています。

ただ、他にいい方法があればご教授頂ければと思っています。宜しくお願い致します。

投稿2016/12/13 07:33

kamakiriad

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問