Ansible之roles使用
阿新 • • 發佈:2018-02-03
rip .com distrib des code ons 文本 三種 模塊 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端口
Ansible之roles使用