roles通過變數,檔案,任務等資訊單獨放在乙個目錄中,可以更方便的進行呼叫。
roles一般用於基於主機構建服務的場景中,在企業複雜業務場景中應用的頻率很高。
以特定的層級目錄進行組織,相當於函式的呼叫把各個功能切片使用。
role_name:定義的role名字,下面乙個名字就是乙個目錄
files:存放copy或script等模組呼叫的函式
tasks:定義各種task,要有main.yml,其他檔案include包含呼叫
handlers:義各種handlers,要有main.yml,其他檔案include包含呼叫
vars:定義variables,要有main.yml,其他檔案include包含呼叫
templates:儲存由template模組呼叫的模板文字
meta:定義當前角色的特殊設定及其依賴關係,要有main.yml的檔案
defaults:要有main.yml的檔案,用於設定預設變數
在系統中有兩個地方提供角色,
/usr/share/ansible/roles ##系統角色
/etc/ansible/roles
或者自己建立乙個roles目錄,並且將當前的ansible配置檔案中的角色目錄進行指定。
roles_path=~/roles ##指定到當前目錄下的roles目錄。
指定目錄後如何建立角色,有乙個特定的工具ansible-galaxy命令工具。
首先進入目錄,使用galaxy工具初始化乙個角色
[ansible@server10 roles]$ ansible-galaxy init apache
- role apache was created successfully ##提示說建立成功
檢視可以使用
[ansible@server10 roles]$ ansible-galaxy list
# /home/ansible/roles
- apache, (unknown version)
或者直接列出都可以進行檢視。
[ansible@server10 roles]$ ls
apache
建立完成之後應該如何進行使用呢?使用昨天的apache的playbook進行挪用。
首先將playbook中的tasks複製到tasks目錄下的main檔案中。
service: http複製完成之後我們看到檔案中除了有系統變數還有我們自己設定的web_package這個變數。
變數可以放在變數的目錄中
roles/apache/vars/main.yml檔案中新增變數。
---
web_package: httpd
並且最開始的playbook檔案中還有觸發器,所以觸發器也要進行設定。
觸發器的位置在檔案
roles/apache/handlers/main.yml
---
- name: restart apache
service:
name: "}"
state: restarted`在這裡插入**片`
再來設定模版,模版的設定在templates/目錄中,將模版複製到當前目錄。
[ansible@server10 templates]$ cp /home/ansible/httpd.conf.j2 .
在這個檔案中又發現了乙個新的變數http_port,這個變數可以放在vars目錄中的檔案裡面以可以在呼叫的時候再進行新增。
這個角色就設定完成。下一步進行建立。
建立乙個yml檔案,這個檔案中進行呼叫角色。
---
- hosts: web
roles:
- role: apache
##在這個檔案中如果又變數,那麼這個變數會覆蓋掉其他地方的變數。
使用命令,執行這個角色呼叫檔案完成建立。
[ansible@server10 ~]$ ansible-playbook apache.yml
再來設定乙個haproxy的角色。
進入角色目錄中,建立乙個名為haproxy的角色。
[ansible@server10 roles]$ ansible-galaxy init haproxy
- role haproxy was created successfully
將playbook中關於haproxy的東西進行複製。
將任務複製到tasks目錄中的檔案
---
- name: install haproxy
yum:
name: haproxy
state: installed
- name: config haproxy
template:
src: haproxy.cfg.j2
dest: /etc/haproxy/haproxy.cfg
notify: restart haproxy
- name: start haproxy
service:
name: haproxy
state: started
設定觸發器,將觸發器複製到handlers目錄下的檔案中。
---
- name: restart haproxy
service:
name: haproxy
state: reloaded
接著將模版也進行複製。
[ansible@server10 templates]$ cp ~/haproxy.cfg.j2 .
複製完成之後將playbook檔案進行編寫和略微修改。
---
- hosts: all ##物件導向為所有人
roles:
- role: apache
when: ansible_hostname in groups[
'web'
]##apache這個角色面向的是web組的成員
- role: haproxy
when: ansible_hostname ==
'server10'
##haproxy面向的是節點server10
ansible-playbook apache.yml
這樣就部署完成了 ansible 自動化運維工具
ansible 自動化運維工具 批量管理 python開發 無客戶端 基於ssh服務 22 安裝 1.ansible包在擴充套件源,epel release yum y install epel release yum repolist 2.安裝,ansible yum y install ansi...
自動化運維工具 ansible
ansible ansible 一 簡介和部署 ansible 二 主機清單管理 ansible 三 配置和命令集 ansible 四 常用模組 ansible 五 palybooks劇本 ansible 彙總 ansible 中文權威指南 本部落格 至 小左先森的部落格 ansible ansib...
ansible 自動化運維工具
ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible...