2016-08-17 45 views
2

在我的大多數角色開始時,有以下代碼塊。它試圖加載操作系統和版本特定的變量和任務。是否有可能我沒有爲我的每個角色重複這段代碼?在角色之間分享重複的代碼塊

--- 

- name: Include OS specific variables. 
    include_vars: "{{ item }}" 
    with_first_found: 
    - files: 
     - "vars/{{ ansible_os_family }}.yml" 
     skip: True 

- name: Include distribution specific variables. 
    include_vars: "{{ item }}" 
    with_first_found: 
    - files: 
     - "vars/{{ ansible_distribution }}.yml" 
     skip: True 

- name: Include version specific variables. 
    include_vars: "{{ item }}" 
    with_first_found: 
    - files: 
     - "vars/{{ ansible_distribution }}{{ ansible_distribution_major_version }}.yml" 
     skip: True 

- name: Run OS specific preparation work. 
    include: "{{ item }}" 
    with_first_found: 
    - files: 
     - "tasks/{{ ansible_os_family }}.yml" 
     skip: True 

- name: Run distribution specific preparation work. 
    include: "{{ item }}" 
    with_first_found: 
    - files: 
     - "tasks/{{ ansible_distribution }}.yml" 
     skip: True 

- name: Run version specific preparation work. 
    include: "{{ item }}" 
    with_first_found: 
    - files: 
     - "tasks/{{ ansible_distribution }}{{ ansible_distribution_major_version }}.yml" 
     skip: True 

回答

1

是的,您可以使用include statements or even another role從外部共享文件中提取任務。

+0

我主要關心的是,如果我使用include或其他角色,查找路徑是否正確。如果我使用另一個角色,它是如何看待這個角色的'vars'目錄?你有沒有任何工作的例子? –

+0

你是對的,角色只會在傳遞相對路徑時查看相鄰目錄。但有人猜測,如果你去爲獨立的角色(我建議不管)。你將擁有共同角色中的所有變量/任務。 – shaps