template、tags、roles
- 一、Templates模塊
- 二、tags模塊
- 三、roles
- 實驗:ansible安裝搭建LAMP架構
- 創建基本檔案
- 撰寫httpd模塊
- 撰寫mysql模塊
- 撰寫php模塊
- 撰寫roles示例
一、Templates模塊
在ansible上操作
1、安裝httpd服務
yum -y install httpd
2、編輯template檔案
cp /etc/httpd/conf/httpd.conf /opt
mv httpd.conf httpd.conf.j2
vim /opt/httpd.conf.j2 #在檔案中找到以下內容,并修改
...
Listen {{http_port}}
ServerName {{server_name}}
MaxClients {{access_num}}
3、編輯ansible組態檔
vim /etc/ansible/hosts #添加以下內容
...
[webserver]
192.168.28.20 httpd_port=192.168.28.20:80 access_num=200 server_name="www.mxx.com:80"
4、編輯yml檔案
vim apache.yml
- hosts: webserver
remote_user: root
vars:
- names: httpd
tasks:
- name: install httpd
yum: name={{names}} state=latest
- name: install configure file
template: src=/opt/http.conf.j2 dest=/etc/httpd/conf/httpd.conf
notify:
- restart httpd
- name: start httpd server
service: name={{names}} enabled=true state=started
handlers:
- name: restart httpd
service: name={{names}} state=restarted
5、檢查并執行yml檔案
ansible-playbook apache.yml --syntax-check
ansible-playbook apache.yml
補充
可以去遠程主機上查看
grep -i listen /etc/httpd/conf/httpd.conf
grep -i MaxClient /etc/httpd/conf/httpd.conf
grep -i servername /etc/httpd/conf/httpd.conf
二、tags模塊
在一個playbook中,我們一般會定義很多個task,如果我們只想執行其中某一個task或者多個task時,就可以使用tags標簽功能了
例一:
1、編輯yml檔案
vim hosts.yml
- hosts: webserver
remote_user: root
tasks:
- name: copy hosts files
copy: src=/etc/hosts dest=/opt/hosts
tags:
- only
- name: touch file
file: path=/opt/host01 state=touch
2、執行yml檔案
ansible-playbook hosts.yml --tags="only"
在執行完命令后,可以去[webserver]主機上查看/opt目錄下是否有hosts和hosts01檔案,結果顯示只有一個hosts檔案,是因為tags: -only標簽的執行,阻止了后邊的內容的繼續
在[webserver]主機的/opt中洗掉hosts01檔案,再執行以下命令:
ansible-playbook hosts.yml
可以發現/opt目錄下,有了hosts和hosts01檔案
例二:
1、編輯yml檔案
vim hosts.yml
- hosts: webserver
remote_user: root
tasks:
- name: copy hosts files
copy: src=/etc/hosts dest=/opt/hosts
tags:
- only
- name: touch file
file: path=/opt/host01 state=touch
tags:
- always
2、執行yml檔案
ansible-playbook hosts.yml --tags="only"
三、roles
角色(roles)是ansible自1.2版本開始引入的新特性,用于層次性,結構化地組織playbook,roles能夠根據層次型結構自動裝載變數檔案、tasks以及handlers等,要使用roles只需要在playbook中使用include指令即可,簡單的說,roles就是通過分別將變數、檔案、任務、模塊及處理器放置于單獨的目錄中、并可以便捷地include他們的一種機制,角色一般用于基于主機構建服務的場景中、但也可以是用于構建守護行程等場景中,
roles常用的模塊
roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
web/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
roles內各目錄含義解釋
- files:用來存放由copy模塊或script模塊呼叫的檔案,
- templates:用來存放jinjia2模板, template模塊會自動在此目錄中尋找jinjia2模板檔案,
- tasks:此目錄應當包含-個main.yml檔案, 用于定義此角色的任務串列,此檔案可以使用
- include包含其它的位于此目錄的task檔案,
- handlers:此目錄應當包含-個main.ym|檔案, 用于定義此角色中觸發條件時執行的動作,
- vars: 此目錄應當包含- 個main.yml檔案, 用于定義此角色用到的變數,
- defaults:此目錄應當包含一個main.ym|檔案, 用于為當前角色設定默認變數,
- meta:此目錄應當包含-個main.yml檔案, 用于定義此角色的特殊設定及其依賴關系,
實驗:ansible安裝搭建LAMP架構
創建基本檔案
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
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
撰寫httpd模塊
寫一個簡單的tasks/main.yml
vim /etc/ansible/roles/httpd/tasks/main.yml
- name: install apache
yum: pkg={{ servername }} state=latest
定義變數:可以定義在全域變數中,也可以定義在roles角色變數中.
vim /etc/ansible/roles/httpd/vars/main.yml
servername: httpd
撰寫mysql模塊
vim /etc/ansible/roles/mysql/tasks/main.yml
- name: install mysql
yum: pkg={{ mysqlname }} state=latest
vim /etc/ansible/roles/mysql/vars/main.yml
mysqlname: mariadb*
撰寫php模塊
vim /etc/ansible/roles/php/tasks/main.yml
- name: install php
yum: pkg={{ phpname }} state=latest
vim /etc/ansible/roles/php/vars/main.yml
phpname: php
撰寫roles示例
vim /etc/ansible/site.yml
- hosts: webserver
remote_user: root
roles:
- httpd
- mysql
- php
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/274030.html
標籤:其他
