Variables 如何在ansible角色中设置常量?
在ansible角色中,我需要为某些路径定义常量,用户不能在他们的剧本中更改这些常量 这是我的需要: 角色将有一个{{app_base_path}变量(可由用户更改),然后我想设置两个常量: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没有常数 您可以执行以下操
- 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获得了它,不幸的是,它在变量顺序上的优先级似乎很低,因此,如果用户在剧本中定义了额外变量,我的角色执行可能会失败…谢谢您的回答。这并不完全是我所期望的,但是检查是一个很酷的特性,可以强制一些路径。这些断言在实践中有多有用?在角色测试断言后,另一个角色或任务可能很容易更改这些变量。