2016-09-22 126 views
1

我無法找到的文檔的答案,無論是我能找到一個例子:有沒有可能在其他role/defaults/然後main.yml命名文件?我的意思是,main.yml是具有默認值的文件的唯一有效名稱?Ansible角色。默認值

回答

2

通過本文檔的聲音;

http://docs.ansible.com/ansible/playbooks_roles.html#roles

角色只是自動化圍繞「包括」指令如上所述 ,真不含有超出一些 改進多少額外的魔法搜索路徑處理爲引用的文件。但是, 可以是一件大事!

這將指定下列行爲,爲每個角色的「x」:

如果角色/ X// main.yml存在,其中所列的任務將被添加 到播放任務

如果角色/ X /處理/ main.yml存在,處理程序列出 在其中將被添加到播放

如果角色/ X /瓦爾/ main.yml存在,其中所列 變量將被添加到播放

如果 角色/ X /默認/ main.yml存在,其中列出的變量將是 添加到播放

如果角色/ X /元/ main.yml存在,其中所列的任何角色 依賴將被添加到角色(1.3 及更高版本)的任何副本,腳本,模板或列表中包括(在角色) 可以在角色/ X/{文件,模板,任務}引用文件的任務/(DIR取決於 的任務),而不必以相對或絕對路徑

問:我的意思是,main.yml t他只有一個有缺省值的文件的有效名稱?
- 答:聽起來就像它是隻有當你想要自動加載特定的var_files爲該角色和自動include任務文件。

問:是否有可能命名文件
答:是的,它只是意味着在劇本,你必須使用include指令,並明確其指向唯一的任務的文件名。

例子:

- name: Do role 
    hosts: localhost 
    tasks: 
    - include: roles/operations/tasks/installProgram.yml 
+0

如果我命名默認文件'role/defaults/a.yml',然後在我的任務中包含include語句(不確定是否可能),它會真的*默認*嗎?它會被覆蓋嗎? Ansible如何知道這包括必須具有較低的優先級作爲常規變量? – madhead

+0

Ansible新手在這裏。儘管如此,我的歉意並不確定。我想當你使用'include'語句時,它僅僅意味着'hey運行這個yml腳本',並且它沒有像引用文本中提到的所有角色魔法,比如自動變量加載。 –

1

Ansible將查找在任務,變量,處理程序等默認的角色/目錄。角色/默認只是他們的文檔中提供的示例。您可以按不同的方式組織您的角色以滿足您的需求例如,我有這樣的建立;

roles/windows/<somerole>/tasks/main.yml 
roles/linux/<somerole>/tasks/main.yml 

main.yml是運行劇本時會被自動加載(通過「默認」)的唯一文件。如果您想要指定另一個文件名稱,您需要使用include函數並指向您的文件,如上所述。

Best Practices」指南對目錄結構提供了一些很好的見解。