2014-02-23 13 views
0

我正在使用best practice directory layout(例如)創建一個Ansible角色的任務文件。如何創建由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

回答

1

Mark,

您可以創建變量,將它們放在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 

好運。

相關問題