Variables 如何在ansible角色中设置常量?

Variables 如何在ansible角色中设置常量?,variables,constants,ansible,role,Variables,Constants,Ansible,Role,在ansible角色中,我需要为某些路径定义常量,用户不能在他们的剧本中更改这些常量 这是我的需要: 角色将有一个{{app_base_path}变量(可由用户更改),然后我想设置两个常量: app_instance_path:“{{app_base_path}}}/appinstance” app_服务器路径:“{{app_实例路径}}/appserver” 我需要在任务中多次使用每个值,因此不能只为其设置一个变量 最好的方法是什么 谢谢 据我所知,ansible没有常数 您可以执行以下操

在ansible角色中,我需要为某些路径定义常量,用户不能在他们的剧本中更改这些常量

这是我的需要:

角色将有一个{{app_base_path}变量(可由用户更改),然后我想设置两个常量:

  • app_instance_path:“{{app_base_path}}}/appinstance”
  • app_服务器路径:“{{app_实例路径}}/appserver”
我需要在任务中多次使用每个值,因此不能只为其设置一个变量

最好的方法是什么


谢谢

据我所知,ansible没有常数

您可以执行以下操作:
在文件
/defaults/main.yml

---
# Don't change this variables
app_instance_path: "{{ app_base_path }}/appinstance"
app_server_path: "{{ app_instance_path }}/appserver"
并将断言任务添加到
/tasks/main.yml
文件中:

---
# ...
- name: Check some constants
  assert:
    that:
      - "app_instance_path == app_base_path + '/appinstance'"
      - "app_server_path == app_instance_path + '/appserver'"

此外,您还可以为用户记录只设置
app\u base\u path
,并保留
app\u实例路径
app\u server\u path

最后,我使用set\u fact获得了它,不幸的是,它在变量顺序上的优先级似乎很低,因此,如果用户在剧本中定义了额外变量,我的角色执行可能会失败…

谢谢您的回答。这并不完全是我所期望的,但是检查是一个很酷的特性,可以强制一些路径。这些断言在实践中有多有用?在角色测试断言后,另一个角色或任务可能很容易更改这些变量。