如何在Ansible的角色中创建由许多任务共享的变量?

时间:2014-02-23 18:06:36

标签: variables ansible

我正在使用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

我一直在关注documentationblog post。似乎可以创建与主机或一组主机关联的变量。但是这个变量应该与任务相关联 - 我该怎么做?您可以do it in a Playbook但是我无法让它工作,因为我已将Playbook into roles分开了?

1 个答案:

答案 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
祝你好运。