在ansible角色中,我需要为某些路径定义常量,而不是用户在其剧本中更改 .
这是我的需要:
该角色将有一个 {} 变量(可由用户更改),然后我想设置2个常量:
app_instance_path:"{}/appinstance"
app_server_path:"{}/appserver"
我在我的任务中需要多次每个值,所以我不能只设置一个变量
最好的方法是什么?
谢谢 .
据我所知,ansible没有常数 .
您可以执行以下操作:在文件 <rolname>/defaults/main.yml
<rolname>/defaults/main.yml
--- # Don't change this variables app_instance_path: "{{ app_base_path }}/appinstance" app_server_path: "{{ app_instance_path }}/appserver"
并在 <rolename>/tasks/main.yml 文件中添加一个断言任务:
<rolename>/tasks/main.yml
--- # ... - name: Check some constants assert: that: - "app_instance_path == app_base_path + '/appinstance'" - "app_server_path == app_instance_path + '/appserver'"
您还可以为用户记录仅设置 app_base_path 并保留原样 app_instance_path 和 app_server_path .
app_base_path
app_instance_path
app_server_path
最后,我得到了 set_fact ,不幸的是,它似乎在变量顺序中具有非常低的优先级,所以如果用户在他的剧本中定义extra_vars,我的角色执行可能会失败...
2 回答
据我所知,ansible没有常数 .
您可以执行以下操作:
在文件
<rolname>/defaults/main.yml
并在
<rolename>/tasks/main.yml
文件中添加一个断言任务:您还可以为用户记录仅设置
app_base_path
并保留原样app_instance_path
和app_server_path
.最后,我得到了 set_fact ,不幸的是,它似乎在变量顺序中具有非常低的优先级,所以如果用户在他的剧本中定义extra_vars,我的角色执行可能会失败...