Ansible部署應用

目錄

  • Ansible概述
      • 1:什么是Ansible
      • 2:Ansible的架構組成
      • 3:Ansible與SaltStack的對比
  • 安裝部署Ansible服務
      • 1:系統環境設置
      • 2:安裝Ansible(第一臺)
      • 2:配置主機清單
      • 3:修改Ansible配置文件
  • Ansible命令應用基礎
      • 1:command模塊
      • 2:shell模塊
      • 3:user模塊
      • 4:cron模塊
      • 5:group模塊
      • 6:copy模塊
      • 7:file模塊
      • 9:script模塊
      • 10:yum模塊
      • 11:service模塊
      • 12:setup模塊

Ansible概述

1:什么是Ansible

Ansible 是基于 Python 開發,集合了眾多優秀運維工具的優點,實現了批量運行命令、部署程序、配置系統等功能的自動化運維管理工具。默認通過 SSH 協議進行遠程命令執行或下發配置,無需部署任何客戶端代理軟件,從而使得自動化環境部署,變得更加簡單。可同時支持多臺主機并行管理,使得管理主機更加便捷。

2:Ansible的架構組成

Ansible 可以看作是一種基于模塊進行工作的框架結構, 批量部署能力就是由Ansible 所運行的模塊實現的。簡而言之 Ansible 是基于“模塊”完成各種“任務”的。其基本框架結構如下圖 所示。
在這里插入圖片描述

由上圖可以得出 Ansible 的基本架構由六大件構成。

Ansible core 核心引擎:即 Ansible 本身;

Host Inventory 主機清單: 用來定義 Ansible 所管理主機, 默認是在 Ansible 的 hosts 配置文件中定義被管理主機, 同時也支持自定義動態主機清單和指定其它配置文件的位置;

Connect plugin 連接插件:負責和被管理主機實現通信。除支持使用SSH連接被管理主機外,Ansible 還支持其它的連接方式,所以需要有連接插件將各個主機用連接插件連接到 Ansible;

Playbook( yaml, jinjia2) 劇本:用來集中定義 Ansible 任務的配置文件, 即將多個任務定義在一個劇本中由 Ansible自動執行, 可以由控制主機針對多臺被管理主機同時運行多個任務;

Core modules 核心模塊:是 Ansible 自帶的模塊,使用這些模塊將資源分發到被管理主機使其執行特定任務或匹配特定的狀態;

Custom modules 自定義模塊:用于完成模塊功能的補充,可借助相關插件完成記錄日志、發送郵件等功能。

3:Ansible與SaltStack的對比

(1)Ansible 安裝部署簡單
默認情況下,Saltstack 需要安裝客戶端接收服務器發送過來的命令。Ansible 不需要在被控服務器上部署任何的客戶端,直接使用ssh 通道進行遠程命令的執行或者下發配置。

(2)Saltstack 響應速度快默認情況下,Ansible 使用 的是標準的 SSH協議,而 Saltstack 使用 ZeroMQ 進行通信和傳輸。因此,僅僅從響應速度來講,Saltstack 比 Ansible 快很多,甚至快十幾倍。在一般運維場景下,Ansible的響應速度完全可以滿足需求

(3)Ansible 更安全
Ansible 使用標準的 SSH 連接傳輸數據,不需要在遠程主機上啟動守護進程。此外,標準的 SSH 數據傳輸本身就是加密傳輸,遠程主機不易被攻擊。

(4)對 Windows 的支持
Saltstack 對 windows 的支持比較友好,Ansible 從 1.7 版本開始加入了對 Windows 的支持。由于Windows 默認沒有 SSH,而 Ansible 有依賴 SSH 進行通信,所以在 Windows下 Ansible 需要依賴PowerShell 來實現遠程管理。Ansible 必須使用 Linux 系統運行控制端。

(5)Ansible 自身運維比較簡單
Saltstack 需要在 Master 和 Minion 主機啟動一個守護進程,自身需要檢測守護進程的運行狀態,增加了運維成本。Ansible 和服務器之間用 SSH 進行通信,服務器上值需要運行 SSH 進程就可以進行運維操作。因此,從工具本身的運維角度來說,Ansible 要比 Saltstack簡單很多。

安裝部署Ansible服務

Ansible 自動化運維環境由控制主機與被管理主機組成。由于 Ansible 是基于 SSH 協議進行通信的,所以控制主機安裝 Ansible 軟件后不需要重啟或運行任何程序,被管理主機也不需要安裝和運行任何代理程序。

資源清單
我現在將根據你提供的圖片內容生成Markdown格式的表格。

操作系統主機名IP地址角色
openEuler 24.03ansible-node1192.168.10.101管理節點
openEuler 24.03ansible-node2192.168.10.102web被管理主機
openEuler 24.03ansible-node3192.168.10.103db被管理主機

1:系統環境設置

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2:安裝Ansible(第一臺)

Ansible 可以使用源碼方式進行安裝,也可以使用操作系統中 YM 軟件包管理工具進行安裝。 YUM方式安裝 Ansible,需要依賴第三方的 EPEL 源。

安裝Ansible
在這里插入圖片描述
注:需要時間同步否則安裝不上,以下命令可以時間同步
dnf install chrony -y
systemctl enable --now chronyd

查看版本信息
在這里插入圖片描述
查看安裝目錄
在這里插入圖片描述

2:配置主機清單

/etc/ansible/hosts 文件中可以定義被管理主機,Ansible 通過讀取/etc/ansible/hosts 文件內定義的主機清單批量做一些操作。比如定義一個 websrvs 組,包含一臺主機,再定義一個 dbsrvs 組,包含另一臺主機,內容如下:
在這里插入圖片描述

3:修改Ansible配置文件

在這里插入圖片描述
在這里插入圖片描述

Ansible命令應用基礎

Ansible 可以使用命令行的方式進行自動化管理。
Ansible 的命令行管理工具都是由一系列模塊、參數組成的,使用某些模塊或參數之前, 可以在命令后面加上-h 或–help 來獲取幫助。例如,ansible-doc 工具可以使用 ansible-doc -h 或者ansible-doc --help 查看其幫助信息。
ansible-doc 工具用于査看模塊幫助信息。主要選項包括:
-l 用來列出可使用的模塊;
-s用來列出某個模塊的描述信息和使用示列。

列出所有可用模塊
在這里插入圖片描述
列出yum模塊的描述信息和操作動作

在這里插入圖片描述
備注:
按q退出
Ansible 自帶了很多模塊,能夠下發執行 Ansible 的各種管理任務。首先來了解下 Ansible常用的這些核心模塊。

1:command模塊

Ansible 管理工具使用-m 選項來指定所使用模塊,默認使用 command 模塊,即-m 選項省略時會運行此模塊,用于在被管理主機上運行命令。例如在被管理主機上執行 date 命令,顯示被管理主機時間。有三種執行命令的方式來管理寫入主機清單中的主機。

使用IP地址查看被管理的主機日期
在這里插入圖片描述
分別查看web組和db組的所有主機日期
在這里插入圖片描述
查看所有被管理主機的日期
在這里插入圖片描述
注意:
若省略-m 選項,默認運行 command 模塊。

2:shell模塊

Ansible 中的 shell 模塊可以在被管理主機上運行命令,并支持像管道符等功能的復雜命令。

在被管理組 db 里所有主機創建用戶 user1,uid 和 gid 都為 1001,用戶家目錄為/home/user1,shel1
為/bin/bash。
在這里插入圖片描述
使用無交互模式給用戶設置密碼。
在這里插入圖片描述

3:user模塊

Ansible 中的 user 模塊用于創建新用戶和更改、刪除已存在的用戶。其中 name 選項用于指明創建的用戶名稱。主要包括兩種狀態(state):
present 表示添加(省略狀態時默認使用);
absent 表示移除。

刪除上述創建的用戶 user1
在這里插入圖片描述

4:cron模塊

Ansible 中的 cron 模塊用于定義任務計劃。主要包括兩種狀態(state):
present 表示添加(省略狀態時默認使用);
absent 表示移除。

添加任務計劃,使得被管理組 db 里所有主機每十分鐘輸出 hello 字符串
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
移除任務計劃
在這里插入圖片描述
注意:出現
在這里插入圖片描述
可以使用setenforce 0處理也可以安裝
在這里插入圖片描述

5:group模塊

Ansible 中的 group模塊用于對用戶組進行管理。
被管理組 db里所有主機創建 mysql 組,gid 為 306
在這里插入圖片描述
將被管理組 db 里所有主機的 mysql 用戶添加到 mysql 組中
在這里插入圖片描述

6:copy模塊

Ansible 中的 copy 模塊用于實現文件復制和批量下發文件。其中使用 src 來定義本地源
文件路徑;使用 dest 定義被管理主機文件路徑;使用 content 則是使用指定信息內容生成目標文件。

將本地文件/etc/fstab復制到被管理組db里的所有主機上的/tmp/fstab.ansible并將所有者設置為 root,權限設置為 640。
在這里插入圖片描述
在這里插入圖片描述
將”hello” 寫入到被管理組 db 里所有主機上的/tmp/ test.ansible 文件中

在這里插入圖片描述
在這里插入圖片描述

7:file模塊

Ansible 中使用 file 模塊來設置文件屬性。其中使用 path 指定文件路徑;使用 src 定義源文件路徑;使用 name 或 dest 來替換創建文件的符號鏈接。

設置被管理組 dbsrvs 里所有主機中/tmp/fstab.ansible 文件的所屬主為 mysql,所屬組為 mysq1,
權限為 644。

在這里插入圖片描述
在這里插入圖片描述
設置被管理組 dbsrvs 里的所有主機的/tmp/fstab.link 文件為/tmp/fstab.ansible 文件的鏈接文件。
在這里插入圖片描述
在這里插入圖片描述

9:script模塊

Ansible 中的 script 模塊可以將本地腳本復制到被管理主機上進行運行。需要注意的是使用相對路徑指定腳本位置。

編輯一個本地腳本,復制到db里所有主機運行
請添加圖片描述
請添加圖片描述
請添加圖片描述

10:yum模塊

Ansible 中的 yum 模塊負責在被管理主機上安裝與卸載軟件包,但是需要提前在每個節點配置自己的YUM 倉庫。
其中:
使用 name 指定要安裝的軟件包,還可以帶上軟件包的版本號;否則安裝最新的軟件包。
使用 state 指定安裝軟件包的狀態, present、latest 用來表示安裝, absent 表示卸載。

db 里所有主機安裝 zsh 軟件包。
請添加圖片描述
請添加圖片描述
卸載軟件包
請添加圖片描述
請添加圖片描述

11:service模塊

Ansible 中使用 service 模塊來控制管理服務的運行狀態。其中使用 enabled 表示是否開機自動啟動,取值為 true 或者 false;使用 name 定義服務名稱;使用 state 指定服務狀態,取值有 started、stoped、 restarted.

査看被管理組 web里所有主機 httpd 服務的狀態
請添加圖片描述
httpd 服務是否是開機自動啟動狀態。
請添加圖片描述
提示表示被管理組里所有主機的 httpd 服務沒有設置為開機自動啟動狀態

設置遠程主機自啟動 httpd 服務請添加圖片描述
査看被管理主機 ansible-node2 的 httpd 狀態
請添加圖片描述
查看被管理組里所有主機的 httpd 服務是否是開機自動啟動狀態
請添加圖片描述

12:setup模塊

Ansible 中使用 setup 模塊收集、査看被管理主機的 facts(facts 是 Ansible 采集被管理主機設備信息的一個功能)。每個被管理主機在接收并運行管理命令之前,都會將自己的相關信息( 操作系統版本、IP 地址等)發送給控制主機。
請添加圖片描述

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

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

相關文章

疏老師-python訓練營-Day44預訓練模型

浙大疏錦行 知識點回顧: 預訓練的概念常見的分類預訓練模型圖像預訓練模型的發展史預訓練的策略預訓練代碼實戰:resnet18 作業: 嘗試在cifar10對比如下其他的預訓練模型,觀察差異,盡可能和他人選擇的不同嘗試通過ctrl進…

AI入門學習--如何寫好prompt?

寫好Prompt(提示詞)是駕馭AI模型的核心技能。以下是結合測試工程師需求的 結構化方法論 和 黃金模板一、prompt設計金字塔終極心法: Prompt 對AI的測試需求文檔,需像設計測試用例一樣:可執行:明確輸入輸出…

Linux編程 IO(標準io,文件io,目錄io)

標準IO C語言標準IO概述標準IO&#xff08;Standard Input/Output&#xff09;是C語言中用于處理文件和數據流的一組函數庫&#xff0c;定義在<stdio.h>頭文件中。與低級IO&#xff08;如read/write&#xff09;相比&#xff0c;標準IO提供了緩沖機制&#xff0c;提高了數…

C# WPF本地Deepseek部署

模型下載地址 using LLama; using LLama.Common; using System; using System.IO; using System.Threading.Tasks; using System.Windows; using System.Windows.Input;namespace YF_Talk {public partial class MainWindow : Window{private LLamaWeights _model;private LLa…

【Abp.VNext】Abp.Vnext框架模塊學習

1、Abp.Vnext-集成 Volo.Abp.Core2、Abp.vNext-Web模塊 Volo.Abp.AspNetCore.MVC框架&#xff08;framework文件夾&#xff09; 七、Abp.vNext-應用模塊-Identity身份認證 業務模塊&#xff08;modules文件夾->identity&#xff09; 1、添加領域模型 Volo.Abp.Identity.Doma…

【完整源碼+數據集+部署教程】火柴實例分割系統源碼和數據集:改進yolo11-rmt

背景意義 研究背景與意義 在計算機視覺領域&#xff0c;實例分割技術作為一種重要的圖像處理方法&#xff0c;近年來得到了廣泛的關注和應用。實例分割不僅能夠識別圖像中的物體類別&#xff0c;還能精確地分割出每個物體的輪廓&#xff0c;提供更為細致的視覺信息。這一技術在…

飛算JavaAI云原生實踐:基于Docker與K8s的自動化部署架構解析

一、飛算JavaAI詳細介紹 1.1 飛算JavaAI飛算JavaAI是飛算云智推出的一款革命性Java開發輔助工具&#xff0c;它通過人工智能技術深度賦能傳統軟件開發流程&#xff0c;特別為大學生課程設計、畢業設計等實踐教學環節提供了強有力的技術支持。在當前高校計算機相關專業教學中&am…

小程序打通美團核銷:解鎖到店綜合業態私域密碼,賦能6000+門店破局增長

數字化浪潮奔涌而來&#xff0c;棋牌室、臺球廳、親子樂園等線下綜合業態面臨經營轉型的關鍵節點。小程序與美團核銷功能的深度耦合&#xff0c;正成為撬動私域流量的核心杠桿&#xff0c;為超6000家門店打通了一條低成本、高轉化的經營快車道。過往經營模式中&#xff0c;線上…

Linux Shell:Nano 編輯器備忘

打開文件 sudo nano /etc/apt/sources.list選中多行&#xff0c;然后刪除 用方向鍵將光標定位到要刪除的起始位置按下 Alt A 設置錨點用方向鍵選擇要刪除的區域 (以上 3 步是為了選中文本)用 Ctrl K(剪切) 或 Alt D(直接刪除) 全選并刪除 按下 Alt \ 將光標移動到文件開頭…

常見的設計模式(2)單例模式

目錄 一、版本一&#xff1a;禁用構造與拷貝 二、版本二&#xff1a;注冊析構函數/嵌套垃圾回收 &#xff08;1&#xff09;使用atexit注冊程序結束時的函數 &#xff08;2&#xff09;使用對象嵌套垃圾回收 三、版本三&#xff1a;線程安全 四、版本四&#xff1a;編譯器…

JAiRouter 0.2.1 更新啦:內存優化 + 配置合并 + IP 限流增強,運維體驗再升級

JAiRouter 0.2.1 更新啦&#xff1a;內存優化 配置合并 IP 限流增強&#xff0c;運維體驗再升級 如果你已經在 0.2.0 生產環境中穩定運行&#xff0c;那么這篇更新會讓你無痛升級&#xff0c;直接“更輕、更穩、更省心”。 &#x1f4ce; 官方倉庫 & issue 直達 https://…

學習嵌入式第二十六天

文章目錄IO(續上)1.標準IO1.標準IO的接口2.流的定位2.文件IO1.概念&#xff1a;2.系統調用和庫函數3.文件IO函數接口習題IO(續上) 1.標準IO 1.標準IO的接口 fwrite 原型&#xff1a;size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream); 功能&#xff1…

GDB 程序啟動參數設置深度指南

GDB 程序啟動參數設置深度指南 1. 概述 在程序調試過程中&#xff0c;正確設置啟動參數對于驗證程序行為、重現特定場景至關重要。GDB提供多種靈活的方式設置啟動參數&#xff0c;特別是當您需要調試命令行參數處理邏輯或配置敏感型應用時。 2. 參數設置的核心方法 2.1 啟動GDB…

Autudl華為昇騰系列NPU簡介和部署推理yolo11 yolov8 yolov5分割模型

0.配置Autudl 下面圖片是我所租的昇騰卡和具體環境版本&#xff0c;太具體的就不說了&#xff0c;有需要的話我單獨出一期Autudl租顯卡的教程&#xff0c;主要是為了學習昇騰環境如何運行Yolo系列模型。 0.1華為昇騰芯片&#xff08;Ascend&#xff09;簡介 1.Ascend 310&…

什么是JSP和Servlet以及二者的關系

JSP&#xff08;JavaServer Pages&#xff09; 是“HTML 里寫 Java”的模板技術&#xff0c;最終會被容器轉換成 Servlet。Servlet 是“Java 里寫 HTML”的 Java 類&#xff0c;直接繼承 javax.servlet.http.HttpServlet&#xff0c;用來接收/響應 HTTP 請求。Servlet 是什么 純…

【WonderTrader源碼詳解 1】【環境搭建 2】【編譯安裝WonderTrader】

一、引言 本篇來講述如何搭建 wondertrader 和 wtpy 二、wondertrader 2.1 源碼下載 # /home/leo/sda_1.6TBgit clone https://gitee.com/wondertrader/wondertrader.gitgit clone https://gitee.com/wondertrader/wtpy.git2.2 源碼編譯 cd /home/leo/sda_1.6TB/wondertrader/s…

hutool 作為http 客戶端工具調用的一點點總結

場景一&#xff1a;客戶端timeout 的時間給的很短//100毫秒 private static final int HTTP_TIMEOUT_MS 1 * 100; response HttpUtil.createPost(patrolresultconfirmUrl).body(JSONObject.toJSONString(search)).header("Authorization", token).timeout(HTTP_TI…

基于MongoDB/HBase的知識共享平臺的設計與實現

標題:基于MongoDB/HBase的知識共享平臺的設計與實現內容:1.摘要 在當今信息爆炸的時代&#xff0c;知識的有效共享和管理變得愈發重要。本研究的目的是設計并實現一個基于MongoDB/HBase的知識共享平臺&#xff0c;以滿足大規模知識數據的存儲、高效查詢和快速共享需求。方法上&…

PHP數組操作:交集、并集和差集

1. 交集&#xff08;Intersection&#xff09;交集是指兩個集合中都存在的元素。$array1 [1, 2, 3, 4]; $array2 [3, 4, 5, 6];$intersection array_intersect($array1, $array2); print_r($intersection); // 輸出: Array ( [2] > 3 [3] > 4 )2. 并集&#xff08;Uni…

Qt 常用控件 - 7

Text Edit&#xff08;多行輸入框&#xff09;QTextEdit 表示多行輸入框&#xff0c;也是一個富文本 & markdown 編輯器&#xff0c;能在內容超出范圍時自動提供滾動條。QTextEdit&#xff1a;不僅僅能表示純文本&#xff0c;還可以表示 htnl 和 markdownQPlainTextEdit&am…