如何做公司網(wǎng)站建設(shè)東莞做網(wǎng)站公司電話
目錄
- 一.roles角色介紹
- 二.示例
- 一.安裝httpd服務(wù)
一.roles角色介紹
roles能夠根據(jù)層次型結(jié)構(gòu)自動(dòng)裝載變量文件,tasks以及handlers登。要使用roles只需在playbook中使用include指令即可。roles就是通過(guò)分別將變量,文件,任務(wù),模塊以及處理器放置于單獨(dú)的目錄中,并可以便捷的include他們的一種機(jī)制。角色一般用于基于主機(jī)構(gòu)建服務(wù)的場(chǎng)景中,但是也可以用于構(gòu)建守護(hù)進(jìn)程等場(chǎng)景中。
ROLES目錄結(jié)構(gòu)
目錄 | 含義 |
---|---|
roles | 所有腳色都必須放在roles目錄下,這個(gè)目錄可以自定義,默認(rèn)位置/etc/ansible/roles |
project | 具體角色項(xiàng)目名稱,比如nginx,tomcat,php |
files | 用來(lái)存放copy模塊過(guò)scripit模塊調(diào)用文件 |
templates | 用來(lái)存放jinjia2模板,template模塊會(huì)自動(dòng)在此目錄尋找jinjia2模板文件 |
tasks | 此目錄應(yīng)當(dāng)包含一個(gè)main.yml文件,用于定義此角色的任務(wù)列表,此文件可以使用include包含其他的位于此目錄的task文件 |
handlers | 此目錄應(yīng)當(dāng)包含一個(gè)main.yml文件,用于定義此角色中觸發(fā)條件時(shí)執(zhí)行的動(dòng)作 |
vars | 此目錄應(yīng)當(dāng)包含一個(gè)main.yml文件,用于定義此角色用到的變量 |
defaults | 此目錄應(yīng)當(dāng)包含一個(gè)main.yml文件,用于為當(dāng)前角色設(shè)定默認(rèn)變量 |
meta | 此目錄應(yīng)當(dāng)包含一個(gè)main.yml文件,用于定義此角色的特授及其依賴關(guān)系 |
二.示例
一.安裝httpd服務(wù)
1.創(chuàng)建目錄
[root@tdm1 ~]# cd /etc/ansible/roles/
# 創(chuàng)建需要用到的目錄
[root@tdm1 roles]# mkdir -p httpd/{handlers,tasks,templates,vars}
[root@tdm1 roles]# cd httpd/
[root@tdm1 httpd]# tree .
.
├── handlers
├── tasks
├── templates
└── vars4 directories, 0 file
2.準(zhǔn)備變量文件
[root@tdm1 httpd]# vim vars/main.yml
PORT: 8088 #指定httpd監(jiān)聽(tīng)的端口
USERNAME: www #指定httpd運(yùn)行用戶
GROUPNAME: www #指定httpd運(yùn)行組
3.配置文件模板
# copy一個(gè)本地的配置文件放在templates/下并已j2為后綴
[root@ansible httpd]# cp /etc/httpd/conf/httpd.conf templates/httpd.conf.j2# 找到一下幾個(gè)參數(shù),進(jìn)行一些修改,調(diào)用上面定義的變量
[root@tdm1 httpd]# vim templates/httpd.conf.j2
Listen {{ PORT }}
User {{ USERNAME }}
Group {{ GROUPNAME }}
4.編寫(xiě)任務(wù)劇本,創(chuàng)建用戶,創(chuàng)建組,安裝軟件,配置,啟動(dòng)登
# 創(chuàng)建組的task
[root@tdm1 httpd]# vim tasks/group.yml
- name: Create a Startup Groupgroup: name: www gid: 60 system: yes# 創(chuàng)建用戶的task
[root@tdm1 httpd]# vim tasks/user.yml
- name: Create Startup Usersuser: name: www uid: 60 system: yes shell: /sbin/nologin# 安裝軟件的task
[root@tdm1 httpd]# vim tasks/install.yml
- name: Install Package Httpdyum: name: httpd state: installed# 配置軟件的task
[root@tdm1 httpd]# vim tasks/config.yml
- name: Copy Httpd Template Filetemplate: src: httpd.conf.j2 dest: /etc/httpd/conf/httpd.confnotify: Restart Httpd# 啟動(dòng)軟件的task
[root@tmd1 httpd]# vim tasks/start.yml
- name: Start Httpd Serviceservice: name: httpd state: started enabled: yes# 編寫(xiě)main.yml,將上面的這些task引入進(jìn)來(lái)
[root@tdm1 httpd]# vim tasks/main.yml
- include: group.yml
- include: user.yml
- include: install.yml
- include: config.yml
- include: start.ym
5.編寫(xiě)handlers
[root@tdm1 httpd]# vim handlers/main.yml
# 這里的名字需要和task中的notify保持一致
- name: Restart Httpdservice: name: httpd state: restarted
6.編寫(xiě)yml文件調(diào)用httpd角色
[root@tdm1 httpd]# cd ..
[root@tdm1 roles]# vim httpd_roles.yml
---
- hosts: allremote_user: rootroles:- role: httpd #指定角色名稱
7.查看整個(gè)目錄
[root@tdm1 roles]# tree
.
└── httpd├── handlers│ └── main.yml├── httpd_roles.yml├── tasks│ ├── config.yml│ ├── group.yml│ ├── install.yml│ ├── main.yml│ ├── start.yml│ └── user.yml├── templates│ └── httpd.conf.j2└── vars└── main.yml5 directories, 10 files
8.測(cè)試playbook語(yǔ)法是否正確
[root@tdm1 roles]# ll
total 4
drwxr-xr-x 6 root root 4096 Sep 6 14:13 httpd
[root@tdm1 roles]# ansible-playbook httpd/httpd_roles.yml -CPLAY [web] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************ok: [47.93.98.117]TASK [httpd : create group] ********************************************************************************************changed: [47.93.98.117]TASK [httpd : create user] *********************************************************************************************changed: [47.93.98.117]TASK [install httpd] ***************************************************************************************************ok: [47.93.98.117]TASK [httpd : configure template file] *********************************************************************************changed: [47.93.98.117]TASK [start httpd] *****************************************************************************************************changed: [47.93.98.117]RUNNING HANDLER [restart httpd] ****************************************************************************************changed: [47.93.98.117]PLAY RECAP *************************************************************************************************************47.93.98.117 : ok=7 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
9.執(zhí)行劇本
[root@tdm1 httpd]# ansible-playbook httpd_roles.yml PLAY [web] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************ok: [47.93.98.117]TASK [httpd : create group] ********************************************************************************************ok: [47.93.98.117]TASK [httpd : create user] *********************************************************************************************ok: [47.93.98.117]TASK [install httpd] ***************************************************************************************************ok: [47.93.98.117]TASK [httpd : configure template file] *********************************************************************************changed: [47.93.98.117]TASK [start httpd] *****************************************************************************************************changed: [47.93.98.117]RUNNING HANDLER [restart httpd] ****************************************************************************************changed: [47.93.98.117]PLAY RECAP *************************************************************************************************************47.93.98.117 : ok=7 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0