1、角色建立流程
1️⃣:在ansible中建立角色不需要特別的開發工具。建立和使用角色包含三個步驟:
建立角色目錄結構
定義角色內容
在playbook中使用角色
2、角色目錄建立說明
1️⃣:預設情況下,ansible在ansible playbook所在目錄的roles子目錄中查詢角色。這樣,使用者可以利用playbook和其他支援檔案儲存角色
2️⃣:如果ansible無法在該位置找到角色,它會按照順序在ansible配置設定roles_path所指定的目錄中查詢
3️⃣:這允許使用者將角色安裝到由多個專案共享的系統上。
3、角色各目錄說明
1️⃣:readme.md提供人類可讀的基本角色描述、有關如何使用該角色的文件和示例,以及其發揮作用所需要滿足的任何非ansible要求
2️⃣:meta子目錄包含乙個main.yml檔案,該檔案指定有關模組的作者、許可證、相容性和依賴項的資訊
3️⃣:files子目錄包含固定內容的檔案,而templates子目錄則包含使用時可由角色部署的模板
4️⃣:其他子目錄中可以包含main.yml檔案,它們定義預設的變數值、處理程式、任務、角色元資料或變數,具體取決於所處的子目錄
5️⃣:注意:
如果某一子目錄存在但為空,如本例中的handlers,它將被忽略。如果某一角色不使用功能,則其子目錄可以完全省略。例如,本例中的vars子目錄已被省略
1、角色框架構建
1️⃣:ansible-galaxy命令列工具可用於管理ansible角色,包括新角色的建立。使用者可以執行ansible-galaxy init來建立新角色的目錄結構(init:初始化)
2️⃣:指定角色的名稱作為命令的引數,該命令在當前工作目錄中為新角色建立子目錄
1、建立角色內容
其他的我就不一一舉例了,說白了就是在每個對應的目錄下,寫入每個yaml檔案
1、模組化編寫
在角色自己的版本控制儲存庫中維護每個角色。ansible很適合使用基於git的儲存庫
角色儲存庫中不應儲存敏感資訊,如密碼或ssh金鑰。敏感值應以變數的形式進行引數化,其預設值應不敏感。
使用角色的playbook負責通過ansible vault變數檔案、環境變數或其他ansible-playbook選項定義敏感變數。
使用ansible-galaxy init啟動角色,然後刪除不需要的任何目錄和檔案。
建立並維護readme.md和meta/main.yml檔案,以記錄使用者的角色的用途、作者和用法
讓角色側重於特定的用途或功能。可以編寫多個角色,而不是讓乙個角色承擔許多任務
經常重用和重構角色。避免為邊緣配置建立新的角色。如果現有角色能夠完成大部分的所需配置,請重構現有角色以整合新的配置方案
使用整合和回歸測試技術來確保角色提供所需的新功能,並且不對現有的playbook造成問題
1、角色依賴
1️⃣:角色依賴項使得角色可以將其他角色作為依賴項包含在內
2️⃣:預設情況下,角色僅作為依賴項新增到playbook中一次。若有其他角色也將它作為依賴項列出,它不會再次執行
1、在playbook中引用角色
1️⃣:要訪問角色,可在play的roles:部分引用它
這裡可以不用加roles,預設情況下,ansible會在playbook所在目錄的roles子目錄中查詢角色
1、角色中變數優先順序
1️⃣:如果通過以下方式定義了相同的變數,則角色的defaults目錄中定義的變數的值將被覆蓋
在清單檔案中定義,作為主機變數或組變數
在playbook專案的group_vars或host_vars目錄下的yaml檔案中定義
作為變數巢狀在play的vars關鍵字中定義
在play的roles關鍵字中包含該角色時作為變數定義
總結:在httpd/vars目錄下定義的變數的優先順序最高;/httpd/vars目錄下的變數會覆蓋/httpd/defaults目錄下的定義的變數
2️⃣:重要:
關於grant許可權控制和建立role角色
資料庫和表結構定義 create database mysql test use mysql test create table 職工 職工號 varchar 20 primary key,姓名 varchar 20 年齡 int,職務 varchar 20 工資 double,部門號 varcha...
ansible程式roles角色
劇本編寫完問題 1.目錄結構不夠規範 ok 2.編寫好的任務如何重複呼叫 3.服務端配置檔案改動,客戶端引數資訊也自動變化 4.彙總劇本中沒有顯示主機角色資訊 5.乙個劇本內容資訊過多,不容易進行閱讀,如何進行拆分 ok 第乙個歷程 規範目錄結構 cd etc ansible roles mkdir...
ansible 角色登陸
用ansible 來管理遠端的主機,最大的好處是方便,ansible不用在遠端的主機上安裝ansible的客戶端,ansible只要能通過ssh連線上遠端主機就 能對它進行管理。也就是說ansible是通過ssh來連線遠端主機的,於是就引出了連線到遠端主機的兩種認證方式,一種是使用者名稱 密碼,另一...