Ansible6--------ansible中的角色使用
ansible中的角色使用
1.ansible 角色簡介
* Ansible roles 是為了層次化,結構化的組織Playbook
* roles就是通過分別將變數、檔案、任務、模組及處理器放置於單獨的目錄中,並可以便捷地include它們
* roles一般用於基於主機構建服務的場景中,在企業複雜業務場景中應用的頻率很高
* 以特定的層級目錄結構進行組織的tasks、variables、handlers、templates、files等;相當於函式的呼叫把各個功能切割成片段來執行。
2.roles目錄結構
files | 存放copy或script等模組呼叫的函式 |
---|---|
tasks | 定義各種task,要有main.yml,其他檔案include包含呼叫 |
handlers | 定義各種handlers,要有main.yml,其他檔案include包含呼叫 |
vars | 定義variables,要有main.yml,其他檔案include包含呼叫 |
templates | 儲存由template模組呼叫的模板文字 |
meta | 定義當前角色的特殊設定及其依賴關係,要有main.yml的檔案 defaults |
tests | 用於測試角色 |
3.role存放的路徑在配置檔案ansible.cfg中定義
roles_path = path/roles (預設目錄:/etc/ansible/roles)
vim ansible.cfg
roles_path = ~/
4.建立目錄結構
ansible-galaxy init apache
ansible-galaxy list
5.playbook中使用roles
1playbook中使用roles
---
- hosts: server2
roles:
- role: role1
- role: role2
var1: value1 ##此處變數會覆蓋roles中的定義變數
2控制任務執行順序
---
- hosts: server2
roles:
- role: role1 ##角色任務
pre_tasks: ##角色執行前執行的play
- tasks1
tasks: ##普通任務
- tasks2
post_tasks: ##在角色和普通任務執行完畢後執行的play
- tasks3
handlers:
示例
角色:將完整的playbook拆分開
default www.westos.com page
www.westos.com /var/www/www.westos.com/html index:www.westos.com
linux.westos.com / var/www/linux.westos.com/html index:linux.westos.com
vim ansible.cfg
roles_path = ~/
1 生成一個角色
ansible-galaxy init apache
2 在生成的角色目錄下
[westos@ansible ~]$ cat apache/vars/main.yml
###用來寫變數
---
vhost:
- root: /var/www/html
- root: /var/www/virtual/westos.com/www/html
name: www.westos.com
- root: /var/www/virtual/westos.com/linux/html
name: linux.westos.com
[westos@ansible ~]$ cat apache/tasks/main.yml
##寫任務
---
- name: template
block:
- name: install apache
dnf:
name: httpd
state: latest
notify: firewalld
- name: configure apche file
template:
src: vhost.j2
dest: /etc/httpd/conf.d/vhost.conf
notify: restart apache
- name: mkdir Document
file:
path: "{{item}}"
state: directory
loop::
- /var/www/www.westos.com/html
- /var/www/linux.westos.com/html
- name: create index.html
copy:
dest: "{{ item.root}}/index.html"
content: "{{ item.index }}"
loop:
- root: /var/www/html
index: default
- root: /var/www/www.westos.com/html
index: www.westos.com
- root: /var/www/linux.westos.com/html
index: linux.westos.com
rescue:
- debug:
msg: dnf repo is not created
[westos@ansible ~]$ cat apache/templates/vhost.j2
##模板
{% for webserver in vhost %}
{% if webserver.name is not defined %}
<VirtualHost _defult_:80>
{% endif %}
{% if webserver.name is defined %}
<VirtualHost *:80>
{% endif %}
{% if webserver.name is defined %}
ServerName {{ webserver.name }}
{% endif %}
DocumentRoot {{webserver.root}}
{% if webserver.name is not defined %}
CustomLog logs/default.log combined
{% endif %}
{% if webserver.name is defined %}
CustomLog logs/{{ webserver.name }}.log combined
{% endif %}
</VirtualHost>
{% endfor %}
[westos@ansible ~]$ cat apache/handlers/main.yml
###觸發器
---
- name: restart apache
service:
name: httpd
state: restarted
enabled: yes
- name: firewalld
firewalld:
service: http
permanent: yes
state: enabled
immediate: yes
[westos@ansible ~]$ cat vhostest.yml
##測試playbook
---
- name: test roles
hosts: 172.25.11.1
roles:
- role: apache
ansible-playbook vhostest.yml
6.ansible—galaxy命令工具
* Ansible Galaxy 是一個免費共享和下載 Ansible 角色的網站,可以幫助我們更好的定義和學習roles。
* ansible-galaxy命令預設與https://galaxy.ansible.com網站API通訊,可以查詢、下載各種社群開發的 Ansible 角色
* ansible-galaxy在 Ansible 1.4.2 就已經被包含了
* 在galaxy.ansible.com網站查詢roles
安裝選擇的角色
1網路上
主機需要聯網
ansible-galaxy install geerlingguy.nginx
2
vim install_apache_role.yml
---
- src: file:///mnt/apache.tar.gz
name: apache
[westos@ansible ~]$ sudo mv apache /westos/
[westos@ansible ~]$ ls
ansible.cfg vhost.yml
apache.install.yml install_apache_role.yml
inventory
tar zcf apache.tar.gz apache/
[westos@ansible ~]$ ansible-galaxy install -r install_apache_role.yml
##指定路徑
- downloading role from file:///mnt/apache.tar.gz
- extracting apache to /home/westos/apache
- apache was installed successfully
[westos@ansible ~]$ ls
ansible.cfg apache
apache.install.yml install_apache_role.yml
inventory
相關文章
- PlayStation中國的真正角色
- 2.2.3.2 CDB 中的本地地角色
- 使用 GAN 生成新的遊戲角色遊戲
- mongodb使用者與角色使用MongoDB
- Unity中實現人形角色的攀爬Unity
- PostgreSQL:使用者角色管理SQL
- 遊戲中的角色運動問題遊戲
- 遊戲中的角色是如何“動”起來的?遊戲
- 如何理解ETLCloud在iPaas中的關鍵角色Cloud
- 關於SQL Server資料庫中的使用者許可權和角色管理SQLServer資料庫
- 各角色如何從DevOps中受益?dev
- 原生IP在養號策略中的關鍵角色
- 遊戲中的“女神”角色都有哪些設計手法?遊戲
- AWS EKS 新增IAM使用者角色
- 玩家角色——角色跳躍
- 如何使用 Python 建立一名可操控的角色玩家Python
- 角色的轉變
- 恢復性角色多女性,經典角色形象定,淺談遊戲中的"約定成俗"遊戲
- 敘事:遊戲中角色與劇情的互動遊戲
- 分析工程師 – 資料團隊中的新角色 - KDnuggets工程師
- 角色原畫設計中的節奏感如何把握?
- Oracle使用者角色許可權管理Oracle
- 角色設計中,如何讓角色具有張力、層次感和節奏感?
- iTunes的替代角色:如何使用SyncBird Pro傳輸iOS檔案iOS
- MySQL 5.7的角色功能MySql
- OAuth的幾種角色OAuth
- Quarkus中基於角色的許可權訪問控制教程
- 白話講解函式計算中的角色授權函式
- Oracle建立使用者、角色、授權、建表Oracle
- 使用者角色許可權管理架構架構
- 對不同角色使用者設定不同的系統首頁
- 【演算法】遊戲中的學習,使用c#物件導向特性控制遊戲角色移動演算法遊戲C#物件
- 遊戲角色塑造:如何創造一個打動人心的角色遊戲
- 專案管理中,專案干係人的角色和責任專案管理
- 角色resource在11g和12c中的區別
- 反派角色的設計心得
- 【ASP.NET Core】按使用者角色授權ASP.NET
- Rbac使用者角色許可權表設計