2017-01-23 6 views
0

role_path変数の値を評価して、他のロールで参照ポイントとして使用しようとしています。しかし、問題は、自分の変数が別の役割で使用されているときに、その変数が宣言された時点ではなく、他の役割の値を持つことです。不可能 - role_path変数の評価方法

私は現在の変数の値のechoコマンドを使用し、以下のように出力を登録することでこれを回避しています。

- name: get ansible base path from current role_path 
    command: echo {{ role_path }}/../../ 
    register: ansible_base_path_out 

- name: save ansible base path variable for future use 
    set_fact: 
    ansible_base_path: "{{ ansible_base_path_out.stdout }}" 

これを行うにはこれが最善の方法ですか、もっと雄弁な解決策がありますか?

+0

@techraf - 変数は 'roles_path'ではなく' role_path'です。ロールという言葉の最後に「s」はありません。 'roles_path'がリストを与えるのに対し、' role_path'は現在のロールのパスのみを与えます。 –

+0

@techraf私は異なっていると思う - 'roles_path'がリストを与えるのに対し、' role_path'は現在のロールのパスだけを与えます。 –

+0

私はこの質問を議論の対象外としています。なぜなら、「働くコードを改善する方法」--QuestionsはStackOverflow上の話題ではなく、代わりにコードレビューSE – techraf

答えて

5

set_factを安全に使用できます。 set_factによって割り当てられた変数(事実)は、タスク実行時に評価されます。最初にこの役割を適用する

- name: save ansible base path variable for future use 
    set_fact: 
    ansible_base_path: "{{ role_path }}/../../" 

、あなたは全体の脚本の実行を通じて変わらないansible_base_path事実を取得します:1つのタスクだけにあなたのコードを縮小。

+1

ありがとう、脳が衰退していた! –

関連する問題