Ansible:roles角色

文章目錄

  • Roles角色
    • Ansible Roles目錄編排
    • Roles各目錄作用
    • 創建 role
    • playbook調用角色
      • 調用角色方法1:
      • 調用角色方法2:
      • 調用角色方法3:
    • roles 中 tags 使用
    • 實戰案例

Roles角色

  • 角色是ansible自1.2版本引入的新特性,用于層次性、結構化地組織playbook。
  • ==roles能夠根據層次型結構自動裝載變量文件、tasks以及handlers等。==要使用roles只需要在playbook中使用include指令即可。
  • 簡單來講,roles就是通過分別將變量、文件、任務、模板及處理器放置于單獨的目錄中,并可以便捷地include它們的一種機制。
  • 角色一般用于基于主機構建服務的場景中,但也可以是用于構建守護進程等場景中

運維復雜的場景:建議使用roles,代碼復用度高

  • roles:多個角色的集合, 可以將多個的role,分別放至roles目錄下的獨立子目錄中

roles/
mysql/
httpd/
nginx/
redis/

Ansible Roles目錄編排

在這里插入圖片描述

Roles各目錄作用

roles/project/ :項目名稱,有以下子目錄:

  • files/ :存放由copy或script模塊等調用的文件
  • templates/:template模塊查找所需要模板文件的目錄
  • tasks/:定義task,是role的基本元素,至少應該包含一個名為main.yml的文件;其它的文件需要在此文件中通過include進行包含
  • handlers/:至少應該包含一個名為main.yml的文件;其它的文件需要在此文件中通過include進行包含
  • vars/:定義變量,至少應該包含一個名為main.yml的文件;其它的文件需要在此文件中通過include進行包含
  • meta/:定義當前角色的特殊設定及其依賴關系,至少應該包含一個名為main.yml的文件,其它文件需在此文件中通過include進行包含
  • default/:設定默認變量時使用此目錄中的main.yml文件,比vars的優先級低

創建 role

  • 創建role的步驟
    (1) 創建以roles命名的目錄
    (2) 在roles目錄中分別創建以各角色名稱命名的目錄,如webservers等
    (3) 在每個角色命名的目錄中分別創建files、handlers、meta、tasks、templates和vars目錄;用不到的目錄可以創建為空目錄,也可以不創建
    (4) 在playbook文件中,調用各角色

針對大型項目使用Roles進行編排

范例:roles的目錄結構

在這里插入圖片描述

playbook調用角色

調用角色方法1:

---
- hosts: webserversremote_user: rootroles:- mysql- memcached- nginx  

?

調用角色方法2:

鍵role用于指定角色名稱,后續的k/v用于傳遞變量給角色

---
- hosts: allremote_user: rootroles:- mysql- { role: nginx, username: nginx }

調用角色方法3:

還可基于條件測試實現角色調用

---
- hosts: allremote_user: rootroles:- { role: nginx,username: nginx, when: ansible_distribution_major_version == ‘7’  }

roles 中 tags 使用

#nginx-role.yml
---
- hosts: websrvsremote_user: rootroles:- { role: nginx ,tags: [ 'nginx', 'web' ] ,when: ansible_distribution_major_version == "6“ }- { role: httpd ,tags: [ 'httpd', 'web' ]  }- { role: mysql ,tags: [ 'mysql', 'db' ] }- { role: mariadb ,tags: [ 'mariadb', 'db' ] }
ansible-playbook --tags="nginx,httpd,mysql" nginx-role.yml

實戰案例

實現httpd角色

  1. 創建角色相關目錄
cd playbook
mkdir roles
cd roles/
mkdir httpd/{tasks,files,handlers} -pv#p:先創建父母了,v:顯示詳細信息

卸載掉httpd 、nginx等軟件;刪掉nginx、httpd、mysql等以前創建的用戶。

 ansible all -a 'yum remove -y nginx'ansible all -a 'yum remove -y httpd'ansible all -a 'userdel nginx'ansible all -a 'userdel mysql'
  1. 創建角色相關的文件
  • 創建組
cd /root/playbook/roles/httpd/tasks
vim group.yml
- name: create apache groupgroup: name=apache system=yes gid=80
  • 創建用戶
vim user.yml
- name: create apache useruser: name=apache system=yes shell=/sbin/nologin home=/var/www/ uid=80 group=apache
  • 安裝軟件
vim install.yml
- name: install httpd packageyum: name=httpd
  • 完成配置
vim config.yml
- name: config filecopy: src=httpd.conf dest=/etc/httpd/conf/ backup=yesnotify: restart
  • 拷貝新網頁
vim index.yml
- name: index.htmlcopy: src=index.html dest=/var/www/html/
  • 啟動服務
vim service.yml
- name: start serviceservice: name=httpd state=started enabled=yes
  • 定義觸發器,用于重啟服務
cd ../handlers/
vim main.yml
- name: restartservice: name=httpd state=restarted
  1. 在files目錄下準備兩個文件:httpd.confindex.html
  • 本地主機如果沒有httpd需要先安裝yum install httpd -y
cp /etc/httpd/conf/httpd.conf  /root/playbook/roles/httpd/files/
vim httpd.conf#修改端口為81

在這里插入圖片描述

  • 創建一個hmtl文件index.html(可以用AI生成)
tree httpd

在這里插入圖片描述

  1. 在playbook中調用角色
vim  /root/playbook/role_httpd.yml
---
# httpd role
- hosts: webserversremote_user: rootroles:- httpd
ansible-playbook  role_httpd.yml

本地訪問:輸入192.168.100.101:81
在這里插入圖片描述

將端口號改為80,重新執行:

cd roles/httpd/files/
vim httpd.conf#修改端口為80
ansible-playbook  role_httpd.yml

本地訪問:輸入192.168.100.101
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75696.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75696.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75696.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MCU的USB接口作為 USB CDC串口輸出

引用: https://microchip-mplab-harmony.github.io/usb_apps_device/apps/usb_uart_bridge_dual/readme.html STM32 USB使用記錄:使用CDC類虛擬串口(VCP)進行通訊_stm32 usb使用記錄:使用cdc類虛擬串口(vcp)進行通訊-CSDN博客 前…

深度解析強化學習:原理、算法與實戰

深度解析強化學習:原理、算法與實戰 0. 前言1. 強化學習基礎1.1 基本概念1.2 馬爾科夫決策過程1.3 目標函數1.4 智能體學習過程2. 計算狀態值3. 計算狀態-動作值4. Q 學習4.1 Q 值4.2 使用 Q 學習進行 frozen lake 游戲4.3. frozen lake 問題4.4 實現 Q 學習小結系列鏈接0. 前…

UE5藍圖之間的通信------接口

一、創建藍圖接口 二、雙擊創建的藍圖接口,添加函數,并重命名新函數。 三、在一個藍圖(如玩家角色藍圖)中實現接口,如下圖: 步驟一:點擊類設置 步驟二:在細節面板已經實現的接口中…

2025 年“認證杯”數學中國數學建模網絡挑戰賽 A題 小行星軌跡預測

近地小行星( Near Earth Asteroids, NEAs )是軌道相對接近地球的小行 星,它的正式定義為橢圓軌道的近日距不大于 1.3 天文單位( AU )的小行星。 其中軌道與地球軌道最近距離小于 0.05A 且直徑大于 140 米的小行星被…

Axure中繼器(Repeater): 列表多選和 列表查詢

文章目錄 引言I 列表多選添加選中交互事件添加未選中交互事件II 列表查詢知識點操作說明引言 基于鼠標點擊交互事件實現列表多選列表查詢 I 列表多選 添加選中交互事件 給列標題第一列多選框元件命名為ckeck,并同時添加選中交互事件; 同步添加設置選擇/選中動作,目標元件選…

windows11下pytorch(cpu)安裝

先裝anaconda 見最下方 Pytorch 官網:PyTorch 找到下圖(不要求版本一樣)(我的電腦是集顯(有navdia的裝gpu),裝cpu) 查看已有環境列表 創建環境 conda create –n 虛擬環境名字(…

最新版IDEA超詳細圖文安裝教程(適用Mac系統)附安裝包及補丁2025最新教程

目錄 前言 一、IDEA最新版下載 二、IDEA安裝 三、IDEA補丁 前言 IDEA(IntelliJ IDEA)是專為Java語言設計的集成開發環境(IDE),由JetBrains公司開發,被公認為業界最優秀的Java開發工具之一。DEA全稱Int…

react從零開始的基礎課1

全文約5萬字。 1.hello,.. // App.jsx import { useState } from react import reactLogo from ./assets/react.svg import viteLogo from /vite.svg import ./App.cssfunction App() {const [count, setCount] useState(0)return (<><Greeting name"world&qu…

【linux知識】web服務環境搭建(一):用戶以及開發環境初始化

toc 創建用戶組以及用戶 以下是 創建用戶組 wendao 和用戶 wendao 并指定 GID、UID 及家目錄 的完整操作指南&#xff1a; 一、創建用戶組&#xff08;指定 GID&#xff09; sudo groupadd -g 1500 wendao # 創建組并指定 GID 為 1500? 注意&#xff1a;GID 需唯一&#…

音視頻 五 看書的筆記 MediaCodec

MediaCodec 用于訪問底層媒體編解碼器框架&#xff0c;編解碼組件。通常與MediaExtractor(解封裝,例如Mp4文件分解成 video和audio)、MediaSync、MediaMuxer(封裝 例如音視頻合成Mp4文件)、MediaCrypto、Image(cameraX 回調的ImageReader對象可以獲取到Image幀圖像,可轉換成YU…

李宏毅NLP-3-語音識別part2-LAS

語音識別part2——LAS Listen Listen主要功能是提取內容信息&#xff0c;去除說話人差異和噪聲 。編碼器&#xff08;Encoder&#xff09;結構&#xff0c;輸入是聲學特征&#xff0c;經過 Encoder 處理后&#xff0c;輸出為高級表示&#xff0c;這些高級表示可用于后續語音識別…

開源CMS的模塊化設計和API接口如何具體影響其擴展性?

優秀的CMS系統都有自己主打的特點&#xff0c;開源CMS憑借其靈活性和低成本優勢占據了市場主流地位&#xff0c;而模塊化設計與API接口正是其擴展性的兩大基石。本文將深入探討這兩大技術特性是如何影響cms的擴展性的。 一、模塊化設計&#xff1a;功能解耦與生態繁榮的引擎 …

一文讀懂WPF系列之常用控件以及樣式

WPF控件 控件分類概覽常用控件常用控件代碼示例和效果 樣式與模板應用樣式定義??方式行內樣式??頁面/窗口級資源樣式&#xff08;Local Resource&#xff09;應用程序全局資源獨立資源字典&#xff08;ResourceDictionary&#xff09;控件模板&#xff08;ControlTemplate&…

AndroidTV D貝桌面-v3.2.5-[支持文件傳輸]

AndroidTV D貝桌面 鏈接&#xff1a;https://pan.xunlei.com/s/VONXSBtgn8S_BsZxzjH_mHlAA1?pwdzet2# AndroidTV D貝桌面-v3.2.5[支持文件傳輸] 第一次使用的話&#xff0c;壁紙默認去掉的&#xff0c;不需要按遙控器上鍵&#xff0c;自己更換壁紙即可

XDocument和XmlDocument的區別及用法

因為這幾天用到了不熟悉的xml統計數據&#xff0c;啃了網上的資料解決了問題&#xff0c;故總結下xml知識。 1.什么是XML?2.XDocument和XmlDocument的區別3.XDocument示例1示例2&#xff1a;示例3&#xff1a; 4.XmlDocument5.LINQ to XML6.XML序列化(Serialize)與反序列化(De…

從競速到巡檢:不同無人機如何匹配最佳PCB方案?

隨著無人機技術的快速發展&#xff0c;高性能PCB&#xff08;印刷電路板&#xff09;成為無人機制造商的核心需求之一。無論是消費級無人機還是工業級應用&#xff0c;PCB的質量直接影響飛行控制、信號傳輸和整機穩定性。那么&#xff0c;無人機制造商在選型高端PCB時&#xff…

高支模自動化監測解決方案

1.行業現狀 高大模板支撐系統在澆筑施工過程中&#xff0c;諸多重大安全風險點進行實時自動化安全監測的解決方案主要監測由于頂桿失穩、扣件失效、承壓過大等引起的支撐軸力、模板沉降、相對位移、支撐體系傾斜等參數變化。系統采用無線自動組網、高頻連續采樣&#xff0c;實時…

python【標準庫】multiprocessing

文章目錄 介紹多進程Process 創建子進程共享內存數據多進程通信Pool創建子進程多進程案例多進程注意事項介紹 python3.10.17版本multiprocessing 是一個多進程標準模塊,使用類似于threading模塊的API創建子進程,充分利用多核CPU來并行處理任務。提供本地、遠程的并發,高效避…

UniApp基于xe-upload實現文件上傳組件

xe-upload地址&#xff1a;文件選擇、文件上傳組件&#xff08;圖片&#xff0c;視頻&#xff0c;文件等&#xff09; - DCloud 插件市場 致敬開發者&#xff01;&#xff01;&#xff01; 感覺好用的話&#xff0c;給xe-upload的作者一個好評 背景&#xff1a;開發中經常會有…

STM32 HAL庫之GPIO示例代碼

LED燈不斷閃爍 GPIO初始化&#xff0c;main文件中的 MX_GPIO_Init(); 也就是在 gpio.c文件中 void MX_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStruct {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOE_CLK_ENABLE();__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOA_C…