自動化運維工具 ansible (3) 角色

2021-10-03 17:11:43 字數 4008 閱讀 2822

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...