Ansible roles角色详解
roles角色
角色是ansible自1.2版本引入的新特性,用于層次性、結(jié)構(gòu)化地組織playbook。roles能夠根據(jù)層次型結(jié)構(gòu)自動裝載變量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡單來講,roles就是通過分別將變量、文件、任務(wù)、模板及處理器放置于單獨的目錄中,并可以便捷地include它們的一種機制。角色一般用于基于主機構(gòu)建服務(wù)的場景中,但也可以是用于構(gòu)建守護進程等場景中
運維復(fù)雜的場景:建議使用roles,代碼復(fù)用度高
roles:多個角色的集合, 可以將多個的role,分別放至roles目錄下的獨立子目錄中
roles/
mysql/
httpd/
nginx/
redis/
Ansible Roles目錄編排
roles目錄結(jié)構(gòu)如下所示
每個角色,以特定的層級目錄結(jié)構(gòu)進行組織
roles目錄結(jié)構(gòu):
playbook.yml
roles/
project/
tasks/
files/
vars/
templates/
handlers/
default/
meta/
Roles各目錄作用
roles/project/ :項目名稱,有以下子目錄
- files/ :存放由copy或script模塊等調(diào)用的文件
- templates/:template模塊查找所需要模板文件的目錄
- tasks/:定義task,role的基本元素,至少應(yīng)該包含一個名為main.yml的文件;其它的文件需要在此文件中通過include進行包含
- handlers/:至少應(yīng)該包含一個名為main.yml的文件;其它的文件需要在此文件中通過include進行包含
- vars/:定義變量,至少應(yīng)該包含一個名為main.yml的文件;其它的文件需要在此文件中通過include進行包含
- meta/:定義當(dāng)前角色的特殊設(shè)定及其依賴關(guān)系,至少應(yīng)該包含一個名為main.yml的文件,其它文件需在此文件中通過include進行包含
- default/:設(shè)定默認變量時使用此目錄中的main.yml文件,比vars的優(yōu)先級低
創(chuàng)建 role
創(chuàng)建role的步驟
(1) 創(chuàng)建以roles命名的目錄
(2) 在roles目錄中分別創(chuàng)建以各角色名稱命名的目錄,如webservers等
(3) 在每個角色命名的目錄中分別創(chuàng)建files、handlers、meta、tasks、templates和vars目錄;用不到的目錄可以創(chuàng)建為空目錄,也可以不創(chuàng)建
(4) 在playbook文件中,調(diào)用各角色
針對大型項目使用Roles進行編排
范例:roles的目錄結(jié)構(gòu)
playbook調(diào)用角色
調(diào)用角色方法1:
--- - hosts: websrvsremote_user: rootroles:- mysql- memcached- nginx?
調(diào)用角色方法2:
鍵role用于指定角色名稱,后續(xù)的k/v用于傳遞變量給角色
--- - hosts: allremote_user: rootroles:- mysql- { role: nginx, username: nginx }調(diào)用角色方法3:
還可基于條件測試實現(xiàn)角色調(diào)用
--- - hosts: allremote_user: rootroles:- { role: nginx, username: nginx, when: ansible_distribution_major_version == ‘7’ }roles 中 tags 使用
#nginx-role.yml --- - hosts: websrvsremote_user: rootroles:- { role: nginx ,tags: [ 'nginx', 'web' ] ,when: ansible_distribution_major_version == "6“ }- { role: httpd ,tags: [ 'httpd', 'web' ] }- { role: mysql ,tags: [ 'mysql', 'db' ] }- { role: mariadb ,tags: [ 'mariadb', 'db' ] }ansible-playbook --tags="nginx,httpd,mysql" nginx-role.yml參考鏈接:http://www.yunweipai.com/34669.html
總結(jié)
以上是生活随笔為你收集整理的Ansible roles角色详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ansible管理节点过多导致的超时问题
- 下一篇: Ansible roles角色实战案例: