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 }}"
これはこれを行うための最良の方法ですか、それとももっと雄弁な解決策がありますか?
set_fact
を安全に使用できます。 set_fact
を介して割り当てられた変数(ファクト)は、タスクの実行時に評価されます。コードを1つのタスクのみに縮小します。
- name: save ansible base path variable for future use
set_fact:
ansible_base_path: "{{ role_path }}/../../"
最初にこの役割を適用すると、プレイブックの実行全体を通じてansible_base_path
ファクトが変更されなくなります。