ansible之roles使用


ansible roles

一. roles作用

主要作用是重用playbook,例如我們無論安裝什么軟件都會安裝時間同步服務,那么每個playbook都要編寫ntp task。我們可以將ntp task寫好,等到用的時候再調用就行了。ansible中將其組織成role,他有着固定的組織格式。以便playbook調用

二. relos介紹

以特定的層級目錄結構進行組織的tasks、variables、handlers、templates、files等;相當於函數的調用把各個功能切割成片段來執行

1. 層級目錄結構

role_name/:我們定義的role的名字
    file/:用於存放copy或script等模塊調用的函數
    tasks/:用於定義各種task,此目錄一定要有main.yml;其他文件需要main.yml包含調用
    handlers:用於定義各種handlers,此目錄一定要有main.yml;其他文件需要main.yml包含調用
    vars:用於定義variables,此目錄一定要有main.yml;其他文件需要main.yml包含調用
    templates/:存儲由template模塊調用的模板文本; meta/:定義當前角色的特殊設定及其依賴關系,此目錄中至少應該有一個名為main.yml的文件;其它的文件需要由main.yml進行“包含”調用; default/:此目錄中至少應該有一個名為main.yml的文件,用於設定默認變量;

2. 在playbook中調用role

role存放的路徑在配置文件/etc/ansible/ansible.cfg中定義

roles_path    = /etc/ansible/roles:/usr/share/ansible/roles
第一種:
- hosts: HOSTS remote_user: root roles: - ROLE_NAME1 - ROLE_NAME2 第二種:除了字典第一個元素指明調用的role,后面是傳遞給role的變量 - hosts: HOSTS remote_user: root roles: - { role: ROLE_NAME1, VARIABLE1: VALUE1, ...} 第三種:when指明role調用的條件 - hosts: HOSTS remote_user: root roles: - { role: ROLE_NAME1, when: CONDITIONS}

3. 示例

1). 目錄結構:

 

2). tasks文件

- name: install httpd package yum: name=httpd state=present - name: install configure file template: src=httpd.conf.c{{ ansible_distribution_major_version }}.j2 dest=/etc/httpd/conf/httpd.conf tags: instconf notify: restart httpd service - name: start httpd service service: name=httpd state=started enabled=true

 

3). handlers文件

 

4). 模板文件

 

5). 變量

 

6). playbook文件

- hosts: webservers remote_user: root roles: - { role: httpd }

 

7). 測試playbook文件

 

8). 運行playbook並查看httpd端口

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM