Ansible - 如何评估 role_path 变量

Ansible - how to evaluate role_path variable

我正在尝试评估 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 }}"

这是执行此操作的最佳方法还是有更多 eloquent 解决方案?

您可以放心使用set_fact。通过 set_fact 分配的变量(事实)在任务执行期间进行评估。将您的代码缩减为仅完成一项任务:

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

首先应用此角色,您将ansible_base_path事实在整个剧本执行过程中保持不变。