我正在尝试评估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 }}"
这是最好的方法吗?还是有更有说服力的解决方案?
答案 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
事实不变。