Ansible - 如何评估role_path变量

时间:2017-01-23 00:49:13

标签: path ansible jinja2 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 }}"

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

1 个答案:

答案 0 :(得分:10)

您可以安全地使用set_fact。在任务执行期间评估通过set_fact分配的变量(事实)。将代码缩减为仅一个任务:

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

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