一:Roles的概述
Roles能夠根據層次型結構自動裝載變量檔案、task以及handlers等。
簡單來講,Roles就是通過分别将變量、檔案、任務、子產品及處理器放置于單獨的目錄中,并可以便捷地include它們。
Roles一般用于基于主機建構服務的場景中,但也可以用于建構守護程序等場景中。
1.1:Roles的目錄
目錄名稱 | 具體含義 |
---|---|
files | 用來存放由copy子產品或script子產品調用的檔案 |
templates | 用來存放j正則模闆,template子產品會自動在此目錄中尋找正則模闆檔案 |
tasks | 此目錄應當包含一個main.yml檔案,用于定義此角色的任務清單,此檔案可以使用include包含其它的位于此目錄的task檔案 |
handlers | 此目錄應當包含一個main.yml檔案,用于定義此角色中觸發條件時執行的動作 |
vars | 此目錄應當包含一個main.yml檔案,用于定義此角色用到的變量 |
defaults | 此目錄應當包含一個main.yml檔案,用于為目前角色設定預設變量 |
meta | 此目錄應當包含一個main.yml檔案,用于定義此角色的特殊設定及其依賴關系 |
二:安裝搭建LAMP架構執行個體示範
2.1:建立服務元件工作目錄
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p
'檢視目錄'
[[email protected] ~]# cd /etc/ansible/roles/
[[email protected] roles]# ls
httpd mysql php
[[email protected] roles]# ls httpd/
defaults files handlers meta tasks templates vars
[[email protected] roles]# ls mysql/
defaults files handlers meta tasks templates vars
[[email protected] roles]# ls php/
defaults files handlers meta tasks templates vars
2.2:建立yaml檔案
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml
2.3:編寫http子產品
'寫一個簡單的task/main.yml'
vim /etc/ansible/roles/httpd/tasks/main.yml
- name: ensure apache is at the latest version
yum: pkg={{ shuai }} state=latest
'定義變量,可以定義在全局變量中,也可以定義在roles角色變量中,一般定義在角色變量中'
vim /etc/ansible/roles/httpd/vars/main.yml
shuai: httpd
2.4:編寫mysql子產品
vim /etc/ansible/roles/mysql/tasks/main.yml
- name: ensure mysql is at the latest version
yum: pkg={{ shuai }} state=latest
'定義變量'
vim /etc/ansible/roles/mysql/vars/main.yml
shuai: mariadb*
2.5:編寫php子產品
vim /etc/ansible/roles/php/tasks/main.yml
- name: ensure php is at the latest version
yum: pkg={{ shuai }} state=latest
'定義變量'
vim /etc/ansible/roles/php/vars/main.yml
shuai: php*
2.6:編寫roles執行個體控制裡面服務
vim /etc/ansible/site.yml
- hosts: webservers
remote_user: root
roles:
- httpd
- mysql
- php
'執行劇本'
ansible-playbook site.yml
PLAY [webservers] **********************************************************************************************
TASK [Gathering Facts] *****************************************************************************************
ok: [20.0.0.46]
TASK [httpd : ensure apache is at the latest version] **********************************************************
ok: [20.0.0.46]
TASK [ensure mysql is at the latest version] *******************************************************************
changed: [20.0.0.46]
...省略資訊........
安裝完成後,查詢驗證指定服務是否安裝
[[email protected] ~]# rpm -q httpd
httpd-2.4.6-93.el7.centos.x86_64
[[email protected] ~]# rpm -q mariadb
mariadb-5.5.65-1.el7.x86_64
[[email protected] ~]# rpm -q php*
php-5.4.16-46.1.el7_7.x86_64
本次角色使用安裝已經完成