roles 角色
在ansible中脖律,roles是playbooks的一部分。playbooks模塊化之后蟀俊,成為roles的組織結(jié)構(gòu)钦铺,易讀,代碼可重用肢预,層次清晰矛洞。
ansible的roles用于層次性、結(jié)構(gòu)化地組織palybook烫映。roles能夠根據(jù)層次型結(jié)構(gòu)自動(dòng)裝載變量文件沼本、tasks及handlers等。要使用roles只需要playbook中使用include指令即可锭沟。
以特定的層級(jí)目錄結(jié)構(gòu)進(jìn)行組織的tasks抽兆、variables、handlers族淮、templates辫红、files等;
role_name/
files/:
存儲(chǔ)由copy或script等模塊調(diào)用的文件祝辣;
tasks/:
此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件厉熟,用于定義各task;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用较幌;
handlers/:
此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件揍瑟,用于定義各handler;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用乍炉;
vars/:
此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件绢片,用于定義各variable;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用岛琼;
templates/:
存儲(chǔ)由template模塊調(diào)用的模板文本底循;
meta/:
此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,定義當(dāng)前角色的特殊設(shè)定及其依賴關(guān)系槐瑞;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用熙涤;
default/:
此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,用于設(shè)定默認(rèn)變量困檩;
在playbook中調(diào)用角色的方法:
- hosts: HOSTS
remote_user: USERNAME
roles:
- ROLE1
- ROLE2
- { role: ROLE3, VARIABLE: VALUE, ...}
- { role: ROLE4, when: CONDITION }
roles目錄結(jié)構(gòu)
root@node1 playbook]# tree roles/
roles/ \\ansible所有的信息都放到此目錄下面對(duì)應(yīng)的目錄中
└── nginx \\角色名稱
├── default \\為當(dāng)前角色設(shè)定默認(rèn)變量時(shí)使用此目錄祠挫,應(yīng)當(dāng)包含一個(gè)main.yml文件;
├── files \\存放有copy或script等模塊調(diào)用的文件
├── handlers \\此目錄總應(yīng)當(dāng)包含一個(gè)main.yml文件悼沿,用于定義各角色用到的各handler
├── meta \\應(yīng)當(dāng)包含一個(gè)main.yml等舔,用于定義角色的特殊設(shè)定及其依賴關(guān)系;1.3及以后版本支持
├── tasks \\至少包含一個(gè)名為main.yml的文件糟趾,定義了此角色的任務(wù)列表慌植,可使用include指令
├── templates \\template模塊會(huì)自動(dòng)在此目錄中尋找Jinja2模板文件
└── vars \\應(yīng)當(dāng)包含一個(gè)main.yml文件甚牲,用于定義此角色用到的變量