web-dev-qa-db-ja.com

Ansible-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 }}"

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

5

set_factを安全に使用できます。 set_factを介して割り当てられた変数(ファクト)は、タスクの実行時に評価されます。コードを1つのタスクのみに縮小します。

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

最初にこの役割を適用すると、プレイブックの実行全体を通じてansible_base_pathファクトが変更されなくなります。

12