ansible基礎四
阿新 • • 發佈:2018-02-07
機構 tar 場景 變量 mage sbin files blog roles roles《角色》介紹
ansilbe自1.2版本引入的新特性,用於層次性、結構化地組 織playbook。roles能夠根據層次型結構自動裝載變量文件、 tasks以及handlers等。要使用roles只需要在playbook中使用 include指令即可。簡單來講,roles就是通過分別將變量、文件 、任務、模板及處理器放置於單獨的目錄中,並可以便捷地 調用它們的一種機制。角色一般用於基於主機構建服務的場 景中,但也可以是用於構建守護進程等場景中
復雜場景:建議使用roles,代碼復用度高
1)變更指定主機或主機組 2)如命名不規範維護和傳承成本大 3)某些功能需多個Playbook,通過調用即可實現
每個角色都要以特定的目錄結構進行組織:
1),調用roles的playbook必須要跟roles目錄是平級關系
2),roles目錄裏面存放所有角色,所謂的角色可以是你需要搭建的某一個服務也可以是某一個任務
3),而每一個角色目錄下面都必須要有tasks這個目錄(任務的目錄)
4),而每個teasks目錄下面也必須要有main.yml這個文件,main.yml文件相當於調用teasks目錄下的所有任務的一個必須要有的文件。
roles目錄結構
實現role步驟:
(1) 創建以roles命名的目錄
mkdir roles
(2) 在roles目錄中分別創建以各角色名稱命名的目錄,如 httpd,nginx,webservers等
(3) 在每個角色命名的目錄中分別創建files、handlers、 meta、tasks、templates和vars目錄;用不到的目錄可以創
(4) 在playbook文件中,調用各角色
示例:
nginx-role.yml roles/ └── nginx ├── files │ └── main.yml ├── tasks │ ├── groupadd.yml │ ├── install.yml │ ├── main.yml │ ├── restart.yml │ └── useradd.yml └── vars └── main.yml
groupadd.yml文件內容
#cat roles/nginx/tasks/useradd
- name: add group
group: name=nginx
useradd.yml文件內容
#cat roles/nginx/tasks/useradd
- name: add user
user: name=nginx group=nginx system=yes shell=/sbin/nologin
install.yml文件內容
#cat roles/nginx/tasks/install.yml
- name: install nginx
yum: name=nginx
start.yml文件內容
#cat roles/nginx/tasks/install.yml
- name: start nginx
service: name=nginx state=started
main.yml文件格式
#cat roles/nginx/tasks/main.yml
- import_tasks: groupadd.yml
- import_tasks:useradd.yml
- import_tasks: install.yml
- import_tasks: restart.yml
調用角色方法: 註意:調用角色的playbook文件必須跟roles文件是同級關系
playbook格式:
cat nginx_roles.yml
- hosts: websrvs
remote_user: root
roles:
- role: nginx
ansible基礎四