1. 程式人生 > 其它 >ansible之roles使用(四)

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

命令結果