## 一:概述
Ansible的roles功能也叫做角色,它是一種讓多個playbook協同工作的實現方法。roles將playbook中的vars變數、handlers、tasks任務、模板都進行了拆分,分別放置於各自目錄然後進行引用的一種機制。通常一些複雜場景才會使用roles,讓程式碼複用度更高。
## 二:需求分析
比如現在我們可以架設一個apache伺服器,那麼在我們教學環境中,大概有4臺伺服器,那麼四臺伺服器同時都架設。那麼這個教學當中,我們有個要求,角色裡面,需要新增tasks任務,還要建立模板,還有變數檔案引用。最後透過我們的playbook引用roles.yml。
## 二:示例
1、先安裝角色工具魔窟,示例如下:
yum install -y rhel-system-roles
2、我們的建立角色roles之apache,示例如下:
ansible-galaxy init apache
3、我們在tasks這目錄裡面生成playbook,示例如下
```yaml---- name: install {{pkg_name}} yum: name: "{{pkg_name}}" state: latest- name: service {{pkg_name}} service: name: "{{pkg_name}}" state: started enabled: yes- name: start firewalld service: name: firewalld state: started enabled: yes- name: firewalld firewalld: service: http permanent: yes state: enabled immediate: yes- name: template template: src: hosts.j2 dest: /var/www/html/index.html```
4、我們定義變數檔案,示例如下:
---# vars file for apachepkg_name: httpd
5、我們再定義模板template檔案hosts.j2,示例如下:
vim hosts.j2,內容如下:
{{ansible_default_ipv4.address}} {{ansible_fqdn}} {{ansible_hostname}}
6、那麼我們在ansible環境中,執行playbook之roles,執行結果,示例如下:
## 三:影片講解