ansible中roles的简单使用
一.初識(shí)roles
上節(jié)中我們已經(jīng)了解了playbook,詳見(jiàn) https://www.cnblogs.com/wangtaobiu/p/10691689.html
當(dāng)我們?cè)谂渲胮laybook時(shí)會(huì)發(fā)現(xiàn)它會(huì)越來(lái)越龐大,所有的tasks,handles,templates等任務(wù)或文件都寫(xiě)在一個(gè)yml文件中,這樣在修改中難免會(huì)浪費(fèi)時(shí)間,顯得缺乏條理性.而roles的出現(xiàn)剛好解決了這一問(wèn)題.
roles的特點(diǎn) : 目錄結(jié)構(gòu)清晰.在使用roles的時(shí)候,我們會(huì)將不同的任務(wù)放在不同的目錄下,結(jié)構(gòu)一目了然,在修改的過(guò)程中也更方便尋找.
可以相互調(diào)用.在roles中,所有的任務(wù)和文件都可以自由調(diào)用,通過(guò)import或include方法,可以將要執(zhí)行的任務(wù)導(dǎo)入一個(gè)文件中,使roles在實(shí)現(xiàn)playbook功能的情況下更有條理性.下邊是roles目錄下安裝nginx的目錄結(jié)構(gòu) :
nginx/
├── files 存放靜態(tài)的文件
│ └── fstab
├── handlers 存放需要觸發(fā)的任務(wù),里面必須main.yml文件
│ └── main.yml
├── tasks 存放的執(zhí)行的任務(wù) ,里面必須main.yml文件
│ ├── copyfile.yml
│ ├── install.yml
│ ├── main.yml
│ └── start.yml
├── templates 存放的模板文件
│ ├── centos6.conf
│ └── nginx.conf
└── vars 存放的是參數(shù),里面必須main.yml文件
└── main.yml
從上圖中可以看出handles,tasks,vars文件需要用main.yml文件來(lái)觸發(fā)任務(wù),而且針對(duì)Contos的不同版本做了相應(yīng)的判斷,所有任務(wù)一目了然.
二.roles入口文件設(shè)置
當(dāng)我們把roles中所有的任務(wù)都配置好以后,最后就需要在roles同級(jí)的目錄下設(shè)置入口文件.入口文件的設(shè)置最好以任務(wù)名命名,方便識(shí)別.例如上邊的例子中入口文件可以命名為nginx.yml,下邊是文件中的內(nèi)容,重點(diǎn)在于roles下指定nginx目錄.
- hosts: web remote_user: root roles: - nginx
三.roles中任務(wù)的導(dǎo)入
以下是tasks目錄下的main文件 :
- import_tasks: install.yml #下載 - import_tasks: copyfile.yml #復(fù)制文件到遠(yuǎn)程主機(jī) - import_tasks: start.yml #啟動(dòng)nginx - name: fstab copy: dest=/tmp/wq.txt src=fstab tags: fstab
注意 : 因?yàn)樵趍ain文件中任務(wù)是自上而下執(zhí)行的,所以在導(dǎo)入任務(wù)時(shí)必須按順序進(jìn)行.
四.roles的執(zhí)行順序
- 先查找當(dāng)前目錄下roles目錄里面指定的對(duì)應(yīng)文件夾 - 找tasks目錄下面的main.yml文件,如果import_tasks 就導(dǎo)入 - 如果遇到了templates,去找templates文件夾下面的對(duì)應(yīng)文件 - 如果遇到了notify,去找handlers里面的main.yml文件 - 如果遇到了copy,去找files里面的對(duì)應(yīng)文件 - 如果看到了變量,如果是setup收集的變量就去setup,如果不是就去vars里面的main.yml文件查找
總結(jié)
以上是生活随笔為你收集整理的ansible中roles的简单使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 咖啡豆和可可豆(咖啡豆怎么来的)
- 下一篇: 「干货」槐花粉的做法与比例