我正在使用best practice directory layout例如
创建Ansible角色的任务文件myscripts/roles
myscripts/roles/the_role
myscripts/roles/the_role/tasks
myscripts/roles/the_role/tasks/main.yml
在main.yml中,我需要调用许多Java任务,所以每次都必须指定类路径。
- name: java | Do something with Bar Java class
action: command java -cp A.jar:B.jar:C.jar com.example.Bar myargs
- name: java | Do something with Foo Java class
action: command java -cp A.jar:B.jar:C.jar com.example.Foo myOtherargs
所以我想用一个变量代替A.jar:B.jar:C.jar
我一直在关注documentation和blog post。似乎可以创建与主机或一组主机关联的变量。但是这个变量应该与任务相关联 - 我该怎么做?您可以do it in a Playbook但是我无法让它工作,因为我已将Playbook into roles分开了?
答案 0 :(得分:1)
标记,
你可以创建vars将它们放在vars下的main.yml中。
按照你的目录结构,它会在那里:
myscripts/roles/the_role/vars/main.yml
请参阅最佳做法页面中的directory layout section。
例如:
class_path: "A.jar:B.jar:C.jar"
然后在你的任务中:
- name: java | Do something with Bar Java class
action: command java -cp {{ classpath }} com.example.Bar myargs
- name: java | Do something with Foo Java class
action: command java -cp {{ classpath }} com.example.Foo myOtherargs
祝你好运。