ansible-playbook-roles目錄結構


1. ansible-角色-roles目錄結構
       角色是基於已知文件結構自動加載某些vars_files,任務和處理程序的方法。按角色對內容進行分組還可以輕松與其他用戶共享角色。
       以下是角色目錄結構示例圖:

  

 

 

 

  1) 目錄結構解釋
  角色期望文件位於某些目錄名稱中。角色必須至少包含其中一個目錄,但是排除任何未使用的目錄是完全正確的。在使用時,每個目錄必須包含一個main.yml文件,其中包含相關內容:

  •  site:是ansible的統一入口,就行調用的安裝服務總配置
  • webservers.yaml:主要是對ansible里一些能做功能,yum等
  • roles:角色目錄
  • common:公共的roles目錄
  • nginx:角色的軟件目錄
    • tasks:包含角色要執行的主要任務列表
    • handlers:包含處理程序,可以由此角色使用,甚至可以在此角色之外的任何位置使用
    • defaults:角色默認的變量
    • vars:角色其他的變量
    • files:包含可以通過此角色部署的文件
    • templates:包含可以通過此角色部署的模板
    • meta:角色定義的一些元數據

  其他YAML文件可能包含在某些目錄中。例如,通常的做法是從 tasks/main.yml 文件中包含特定於平台的任務:

 1 # roles/example/tasks/main.yml
 2 - name: added in 2.4, previously you used 'include'
 3   import_tasks: redhat.yml
 4   when: ansible_facts['os_family']|lower == 'redhat'
 5 - import_tasks: debian.yml
 6   when: ansible_facts['os_family']|lower == 'debian'
 7 
 8 # roles/example/tasks/redhat.yml
 9 - yum:
10     name: "httpd"
11     state: present
12 
13 # roles/example/tasks/debian.yml
14 - apt:
15     name: "apache2"
16     state: present

  角色還可以包括模塊和其他插件類型

  2) 使用角色
  使用角色的經典(原始)方式通過給定游戲的選項:roles

1 ---
2 - hosts: webservers
3   roles:
4     - common
5     - webservers

這為每個角色“xxx”指定了以下行為:

  • 如果角色 /xxx/tasks/main.yaml存在,則其中列出的任務將添加到任務中,否則將不會添加任務中。
  • 如果角色 /xxx/handlers/main.yaml存在,則其中列出的處理程序將添加到任務中,否則將不會添加任務中。
  • 如果角色 /xxx/vars/main.yml存在,則其中列出的處理程序將添加到任務中,否則將不會添加任務中。
  • 如果角色 /xxx/defaults/main.yml存在,則其中列出的處理程序將添加到任務中,否則將不會添加任務中。
  • 如果角色 /xxx/meta/main.yml存在,則其中列出的任何角色依賴項將添加到角色列表(1.3及更高版本)。
  • 任何副本,腳本,模板或包含任務(在角色中)都可以引用roles / x / {files,templates,tasks} /(dir取決於任務)中的文件,而無需相對或絕對地路徑化它們。

以下這種方式使用時,你的劇本的執行順序如下:

  •  pre_tasks游戲中定義的任何內容。
  • 到目前為止觸發的任何處理程序都將運行。
  • 列出的每個角色將依次執行。將首先運行角色中定義的任何角色依賴項,但需遵循標記過濾和條件。roles meta/main.yml
  • tasks游戲中定義的任何內容。
  • 到目前為止觸發的任何處理程序都將運行。
  • post_tasks游戲中定義的任何內容。
  •  到目前為止觸發的任何處理程序都將運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM