ansible之roles使用(四)
1 roles的介紹
以特定的層級目錄結構進行組織的tasks、variables、handlers、templates、files等;相當於函式的呼叫把各個功能切割成片段來執行
2 roles的作用
主要作用是重用playbook,例如我們無論安裝什麼軟體都會安裝時間同步服務,那麼每個playbook都要編寫ntp task。我們可以將ntp task寫好,等到用的時候再呼叫就行了。ansible中將其組織成role,他有著固定的組織格式。以便playbook呼叫
3 目錄結構
案例
目錄結構
roles/
└── httpd #呼叫名
├── handlers #重啟觸發器
│ └── main.yml
├── role_httpd.yml #呼叫檔案
├── tasks #工作集合
│ └── main.yml
├── templates #模板
│ ├── httpd.conf.c6.jinja2
│ └── httpd.conf.c7.jinja2
└── vars #變數
└── main.yml
分步走
1 cat httpd/tasks/main.yml
- name: install httpd package
yum:
name: httpd
state: present
- name: install configure file
template: src=httpd.conf.c{{ ansible_distribution_major_version }}.jinja2 dest=/etc/httpd/conf/httpd.conf
tags: instconf
notify:
- restart httpd service
- name: start httpd service
service:
name: httpd
state: started
enabled: true
2 cathttpd.conf.c6.jinja2
cat httpd.conf.c7.jinja2
就是httpd 主配置檔案 複製兩份 然後修改了埠號
Listen {{ httpd_port }}
3 cat httpd/vars/main.yml
httpd_port: 8080
4 cat httpd/handlers/main.yml
- name: restart httpd service
service:
name: httpd
state: restarted
5 呼叫檔案方式
cat httpd/role_httpd.yml
- hosts: web
remote_user: root
roles:
- { role: httpd}
關於呼叫檔案的方式挺多的 這裡就不多說了
關於呼叫檔案的方式挺多的 這裡就不多說了
開始模擬執行
ansible-playbook httpd/role_httpd.yml -C
命令結果