ansible自動化運維(五)roles角色管理

Roles角色管理

角色(roles)是ansible自1.2版本開始引入的新特性,用于層次性,結構化地組織playbook。

? ? roles能夠根據層次型結構自動裝載變量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡單的說,roles就是通過分別將變量、文件、任務、模塊及處理器放置于單獨的目錄中、并可以便捷地include他們的一種機制。角色一般用于基于主機構建服務的場景中、但也可以是用于構建守護進程等場景中。

一般情況下將roles寫在?/etc/ansible/roles?中,也可以寫在其他任意位置(寫在其他位置要自己手動建立一個roles文件夾)

這里來編譯安裝nginx,部署一個web頁面,同時對roles角色的各個功能進行解析

創建nginx的角色目錄

[root@web01 roles]# mkdir -p /etc/ansible/roles/nginx/{files,tasks,handlers,vars,templates,meta,default}

目錄結構:

[root@web01 roles]# tree.└── nginx├── default├── files├── handlers├── meta├── tasks├── templates└── vars8 directories, 0 files

目錄解析:

  1. nginx:存放nginx服務的yml文件
  2. default:此目錄至少應該有一個名為main.yml的文件,用于設定默認變量;

  1. files:存儲由copy或者script等模塊調用的文件或者腳本;
  2. handlers:此目錄中至少應該有一個名為main.yml的文件,用于定義各個handler;其他文件需要由main.yml進行包含調用;
  3. meta:此目錄中至少應該有一個名為main.yml的文件,定義當前角色的特殊設定以及依賴關系,其他文件需要由main.yml進行包含調用;
  4. tasks:此目錄中至少應該有一個名為main.yml的文件,用于定義各個task;其他文件需要由main.yml進行包含調用;
  5. templates:存儲由templates模塊調用的模板文件;
  6. vars:此目錄至少應該有一個名為main,yml的文件,用于定義各個variable;其他的文件需要由main.yml進行包含調用;

整個角色的一個流程:

定義任務配置文件 --> 定義jinja2模板,生成配置文件用 --> 定義變量 --> 定義觸發(通知已定義在配置文件中) --> 定義nginx的yml文件 -->

檢查yml語法 --> 執行nginx.yml文件 --> 查看服務啟動狀態

提前準備工作:傳包

[root@web01 roles]# ls nginx/files/nginx-1.24.0.tar.gz? 李星云.jpg

定義任務配置文件:

[root@web01 roles]# cat nginx/tasks/main.yml- name: copy nginx packagecopy:src: files/nginx-1.24.0.tar.gzdest: /tmp/- name: tarunarchive:src: /tmp/nginx-1.24.0.tar.gzdest: /usr/local/remote_src: yes- name: install 依賴yum:name: "{{ item }}"state: presentloop: "{{ install_package }}"- name: Compile and installshell: |cd /usr/local/nginx-1.24.0./configure --prefix=/usr/local/nginxmake && make install- name: copy imagecopy:src: files/李星云.jpgdest: /usr/local/nginx/html/- name: changes web pagestemplate: src=templates/web.conf.j2 dest=/usr/local/nginx/html/index.htmlnotify: restart- name: start nginxshell: |cd /usr/local/nginx/sbin/./nginx

定義jinjia2模板:

這里這個模板是一個html文件,就是簡單的web頁面

想達到的效果就是,把nginx服務的html目錄下的頁面替換成這個模板

前面說過jinjia2模板可以是支持多種數據類型,這里直接編輯一個html頁面,去替換掉nginx的web頁面

[root@web01 roles]# cat nginx/templates/web.conf.j2<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>畫江湖之不良人 - 李星云</title><style>body {margin: 0;padding: 0;background-image: url('./李星云.jpg');background-size: cover;background-repeat: no-repeat;background-attachment: fixed;color: white;}font-size: 30px;
<body><a href="./luocailian"? target="_blank">學習目錄</a><br/><a href="https://blog.csdn.net/LCL_18?spm=1000.2115.3001.5343"? target="_blank">歡迎來到我的博客</a><div id="luo"><h1>畫江湖之不良人 - 李星云</h1><p>李星云,身世神秘,身負奇學。</p><p>身世:李星云是唐昭宗李曄的第十子,唐哀帝李祚的胞弟。朱溫篡位后,李曄將李星云托付給心腹大臣李煥,李煥帶著李星云隱姓埋名,拜在陽叔子門下學藝。</p><p>成長經歷:李星云在成長過程中結識了師妹陸林軒和好友張子凡,三人一起闖蕩江湖。在江湖中,李星云逐漸揭開了自己的身世之謎,并肩負起了光復唐室的使命。</p><p>性格特點:李星云性格開朗、幽默風趣,十分寵愛自己的師妹陸林軒。他口才出眾,常常用機智的語言逗得大家捧腹大笑。他為人正直,對朋友、對伴侶、對不良人、對天下蒼生都十分有責任心。</p><p>武功技能:李星云的武功技能包括天罡訣、華陽針法、青蓮劍歌、龍泉劍訣、易容術、氣經等。</p>position: relative;left: 50px;margin-top: 20px;color: lightblue;top:100px;}#two {font-size: 30px;position: relative;left: 50px;margin-top: 20px;color: lightblue;top:100px;}</style></head>
<p>武器裝備:李星云的武器裝備包括長劍、龍泉劍、華陽針、唐刀等。</p><p>李星云的背景故事充滿了傳奇色彩,他的成長經歷和性格特點也深受觀眾喜愛</p></div></body></html>h1 {text-align: center;margin-bottom: 200px;font-size: 48px;text-shadow: 2px 2px 4px black;float: none;}p {text-align: center;font-size: 16px;text-shadow: 2px 2px 4px black;}a {

定義變量配置文件:
[root@web01 roles]# cat nginx/vars/main.ymlinstall_package:- gcc- gcc-c++- pcre- pcre-devel- zlib- zlib-devel- make

定義觸發器文件:
root@web01 roles]# cat nginx/handlers/main.yml- name: restartshell:cd /usr/local/nginx/bin./nginx -s reload

定義nginx yml文件

[root@web01 roles]# cat nginx/nginx.yml---- hosts: web02remote_user: rootroles:- nginx

檢查語法,執行命令

[root@web01 roles]# ansible-playbook? --syntax-check nginx/nginx.ymlplaybook: nginx/nginx.yml

最后的目錄結構:

.└── nginx├── default├── files│ ├── nginx-1.24.0.tar.gz│└── 李星云.jpg├── handlers│ └── main.yml├── meta├── nginx.yml├── tasks│ └── main.yml├── templates│└── web.conf.j2└── vars└── main.yml8 directories, 7 files

[root@web01 roles]# tree

[root@web01 roles]# ls nginx/files/

nginx-1.24.0.tar.gz? 李星云.jpg

檢驗結果:

這里注意記得關閉服務所在主機的防火墻

通過瀏覽器檢驗:

可以正常訪問頁面,成功

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

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

相關文章

操作系統:文件系統

目錄 1、文件 概念&#xff1a; UNIX文件分類&#xff1a; 2、文件系統 3、文件的訪問方式 順序訪問 隨機訪問 4、文件的組織 邏輯組織 物理組織 5、倒排結構&#xff08;了解&#xff09; 5、文件目錄 文件控制塊&#xff08;FCB&#xff09; ?編輯 目錄項 單…

單元測試-FATAL ERROR in native method: processing of -javaagent failed

文章目錄 前言單元測試-FATAL ERROR in native method: processing of -javaagent failed1. 報錯信息2. 解決方案 前言 如果您覺得有用的話&#xff0c;記得給博主點個贊&#xff0c;評論&#xff0c;收藏一鍵三連啊&#xff0c;寫作不易啊^ _ ^。 ??而且聽說點贊的人每天的運…

決策曲線分析(DCA)中平均凈收益用于評價模型算法(R自定義函數)

決策曲線分析&#xff08;DCA&#xff09;中平均凈收益用于評價模型算法 DCA分析雖然不強調用來評價模型算法或者變量組合的優劣&#xff0c;但是實際應用過程中感覺DCA曲線的走勢和模型的效能具有良好的一致性&#xff0c;其實這種一致性也可以找到內在的聯系&#xff0c;比如…

快速且靠譜的簡單安裝 PostgreSQL 15 yum 安裝postgis3.3

快速且靠譜的簡單安裝 PostgreSQL 15 yum 安裝postgis3.3 1、確保已經安裝了PostgreSQL數據庫。2、添加PostGIS的EPEL倉庫3、使用YUM安裝PostGIS4、以下為其他安裝方式&#xff0c;一個個去找源碼的編譯安裝&#xff0c;過程較為繁瑣&#xff08;不熟路的不推薦&#xff09; 要…

工業大數據分析算法實戰-day05

文章目錄 day05分而治之中的MARS算法神經網絡逼近能力解釋 day05 今天是第5天&#xff0c;昨日從統計分析開始利用統計學的知識判斷當前樣本的分布以及估計總體的參數和假設檢驗的情況&#xff0c;以及介紹了線性回歸算法的相關優化點&#xff0c;但是畢竟線性回歸是線性劃分的…

在Ubuntu服務器上備份文件到自己的百度網盤

文章目錄 概述安裝bypy同步文件定時任務腳本 概述 之前自購了一臺阿里云服務器&#xff0c;系統鏡像為Ubuntu 22.04&#xff0c; 并且搭建了LNMP開發環境&#xff08;可以參考&#xff1a;《Ubuntu搭建PHP開發環境操作步驟(保姆級教程)》&#xff09;。由于項目運行中會產生附…

safe area helper插件

概述 顯示不同機型的必能顯示的區域 實現步驟 引入safearea&#xff0c;引入其中的safearea的csharp 為cancas加入gameobject gameobject中加入safearea腳本 將UI作為這個gameobject的子物體&#xff0c;就可以完成顯示

Unity 獲取鼠標點擊位置物體貼圖顏色

實現 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) {textureCoord hit.textureCoord;textureCoord.x * textureMat.width;textureCoord.y * textureMat.height;textureColor textureMat.GetPixel(Mathf.Flo…

基于深度學習的貓狗識別系統【深度學習課設】

&#x1f3c6; 作者簡介&#xff1a;席萬里 ? 個人網站&#xff1a;https://dahua.bloggo.chat/ ?? 一名后端開發小趴菜&#xff0c;同時略懂Vue與React前端技術&#xff0c;也了解一點微信小程序開發。 &#x1f37b; 對計算機充滿興趣&#xff0c;愿意并且希望學習更多的技…

05、GC基礎知識

JVM程序在跑起來之后&#xff0c;在數據的交互過程中&#xff0c;就會有一些數據是過期不用的&#xff0c;這些數據可以看做是垃圾&#xff0c;JVM中&#xff0c;這些垃圾是不用開發者管的&#xff0c;它自己會有一套垃圾回收系統自動回收這些內存垃圾&#xff0c;以備后面繼續…

什么是戰略思想?

古今中外&#xff0c;關于戰略是什么&#xff1f;有非常多的理論&#xff0c;也有不同的視角。 中國最早的涉及戰略的書籍據傳是黃帝所著的《握奇文》&#xff0c;后有較為系統的兵法戰略書籍為周朝姜太公&#xff08;亦稱姜尚、姜子牙等&#xff09;所著的《六韜》&#xff0c…

2024.12.15 TCP/IP 網絡模型有哪幾層?(二)

2024.12.15 TCP/IP 網絡模型有哪幾層?&#xff08;二&#xff09; 上節課我們學習了網絡模型有四部分構成&#xff0c;有應用層、傳輸層、網絡層、網絡接口層。 生成了 IP 頭部之后&#xff0c;接下來要交給網絡接口層(Link Layer)在 IP 頭部的前面加上 MAC 頭部&#xff0c…

51c深度學習~合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/12750420 #傅里葉特征 (Fourier Feature&#xff09;與核回歸 位置編碼背后的理論解釋 本文探討了位置編碼背后的理論基礎&#xff0c;特別是傅里葉特征&#xff08;Fourier Feature&#xff09;與核回歸&#xff08;Kern…

Flutter Navigator2.0的原理和Web端實踐

01 背景與動機 在Navigator 2.0推出之前&#xff0c;Flutter主要通過Navigator 1.0和其提供的 API&#xff08;如push(), pop(), pushNamed()等&#xff09;來管理頁面路由。然而&#xff0c;Navigator 1.0存在一些局限性&#xff0c;如難以實現復雜的頁面操作&#xff08;如移…

代碼隨想錄算法訓練營第三天 | 鏈表理論基礎 | 707.設計鏈表

要求太多&#xff0c;代碼量太大&#xff0c;實在難以完成 在以前聽說&#xff0c;好的程序員&#xff0c;可以在短時生成大量的代碼&#xff0c;本題只方法才只有6個&#xff0c;根本不算多 每天手敲代碼量太少&#xff0c;才是問題 #include <iostream>class MyLink…

數據冒險、控制冒險、結構冒險

計算機組成原理 數據冒險、控制冒險、結構冒險 對所有用戶&#xff08;所有程序員&#xff09;可見&#xff1a;PSW、PC、通用寄存器 PSW&#xff08;條件轉移需要用到&#xff0c;程序員使用CMP指令的時候也需要用到所以是對用戶可見&#xff09;PC&#xff08;跳轉指令需要…

基于32單片機的RS485綜合土壤傳感器檢測土壤PH、氮磷鉀的使用(超詳細)

1-3為RS485綜合土壤傳感器的基本內容 4-5為基于STM32F103C8T6單片機使用RS485傳感器檢測土壤PH、氮磷鉀并顯示在OLED顯示屏的相關配置內容 注意&#xff1a;本篇文件講解使用的是PH、氮磷鉀四合一RS485綜合土壤傳感器&#xff0c;但里面的講解內容適配市面上的所有多合一的RS…

SpringBoot【十一】mybatis-plus實現多數據源配置,開箱即用!

一、前言&#x1f525; 環境說明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 正常情況下我們在開發系統的時候都是使用一個數據源&#xff0c;但是由于有些項目同步數據的時候不想造成數據庫io消耗壓力過大&#xff0c;便會一個項目對應多個數據源…

Node.js教程入門第一課:環境安裝

對于一個程序員來說&#xff0c;每學習一個新東西的時候&#xff0c;第一步基本上都是先進行環境的搭建&#xff01; 從本章節開始讓我們開始探索Node.js的世界吧! 什么是Node.js? 那么什么是Node.js呢&#xff1f;簡單的說Node.js 就是運行在服務端的 JavaScript JavaScript…

vim優化

1.編輯如下內容&#xff1a; cat > /root/.vimrc <<EOF set tabstop2 " 設置 Tab 為 2 個空格 set shiftwidth2 " 設置自動縮進為 2 個空格 set expandtab " 將 Tab 轉換為空格 " 基本設置 set number syntax on" 快捷鍵設置…