Ansible - 如何评估role_path变量

Wil*_*ich 5 path jinja2 ansible ansible-2.x

我正在尝试评估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 }}"
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?还是有更有说服力的解决方案?

Kon*_*rov 12

你可以放心使用set_fact.set_fact在任务执行期间评估分配的变量(事实).将代码缩减为仅一个任务:

- name: save ansible base path variable for future use
  set_fact:
    ansible_base_path: "{{ role_path }}/../../"
Run Code Online (Sandbox Code Playgroud)

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

  • 感谢的是,大脑正在褪色! (2认同)