1.Ansible 自動化介紹

1-Ansible 自動化介紹

Ansible 自動化介紹

手動執行任務和自動化執行任務

手動執行任務的麻煩事

  • 很容易漏掉某個步驟,或者不小心執行錯步驟,而且很難驗證每個步驟是不是真的按預期完成了。
  • 管理一大堆服務器時,很容易出現配置不一樣的情況,維護起來特別費勁,還會讓整個 IT 環境變得不穩定,容易出問題。

自動化執行任務的好處

  • 通過統一的標準,能保證所有系統都能快速、正確地完成部署和配置。
  • 日常那些重復做的固定任務可以自動執行,這樣就能騰出時間去做更重要的事。
  • 應用程序能更快地交付使用。
基礎架構即代碼
  • 好的自動化系統能實現 “基礎架構即代碼” 的方法。簡單說,就是用機器能讀懂的自動化語言來描述 IT 基礎架構應該是什么樣子的。最好這種語言人也很容易看懂,這樣就能輕松知道當前狀態,改起來也方便。
  • 如果這種自動化語言是用簡單的文本文件寫的,還能放到版本控制系統里管理。這樣一來,每一次修改都會被記錄下來,能看到隨著時間推移做過哪些改動,萬一出問題,還能把系統恢復到之前的配置。這就為遵循 DevOps 理念打下了基礎:開發人員可以用自動化語言定義想要的配置,運維人員能輕松查看這些改動并給出反饋,然后用這個自動化方案重復操作,確保系統狀態符合開發人員的預期。
Ansible (自動化) 與 DevOps (開發和運營)

image-20250812201013160

百度百科:DevOps 是 Development(開發)和 Operations(運維)的組合詞,指的是一系列流程、方法和系統的集合,目的是促進開發(應用程序 / 軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與融合。它是一種重視 “軟件開發人員(Dev)” 和 “IT 運維技術人員(Ops)” 之間溝通合作的文化、運動或慣例。通過自動化 “軟件交付” 和 “架構變更” 的流程,讓構建、測試、發布軟件變得更快捷、更頻繁、更可靠。

DevOps 的核心就是 “溝通”。

Ansible 是第一款能在整個 IT 領域被大家讀懂和編寫的自動化語言,也是唯一一個能從頭到尾自動化應用生命周期和持續交付流程的自動化引擎。

什么是 ANSIBLE?

Ansible 是一種簡單的自動化語言,通過 Playbooks(劇本)來描述和配置 IT 基礎架構。

Ansible 能處理各種復雜的自動化任務,適合不同的生產環境。而且,新手也能很快學會并用到實際生產中。

常見用途:

  • 搭建和維護 OpenStack
  • 搭建和維護 OpenShift
  • 搭建和維護 ceph
Ansible 特點
  • 簡單易學:Ansible Playbooks 是文本文件,特別容易查看、理解和修改,用戶不用懂復雜的編程技能。
  • 功能強大:能用 Ansible 部署應用,比如做配置管理、工作流自動化、網絡自動化,還能編排整個應用的生命周期。
  • 無代理架構:Ansible 不需要在被管理的主機上裝代理,它通過OpenSSH或者 WinRM 連接到這些主機,然后把一些小程序(Ansible 模塊)推送到主機上。這些小程序用來把系統設置成我們想要的狀態。任務完成后,推送的模塊會被自動刪除。正因為被管理的主機上不用裝特殊代理,Ansible 用起來更高效、更安全。
  • 跨平臺支持:能管理 Linux、UNIX、Windows 系統和各種網絡設備。
  • 精準描述應用:Ansible Playbook 用 YAML 格式來描述生產環境的狀態。
  • 支持版本控制:Ansible Playbooks 和項目都是純文本格式,可以像源代碼一樣存到版本控制系統里。
  • 易于集成:能和 HP SA、Puppet、Jenkins、紅帽衛星服務器等其他系統輕松集成。
Ansible 概念和架構

image-20250812201051059

  • 節點(NODES)

    :Ansible 架構里有兩種計算機:

    • 控制節點:裝了 ansible 軟件的節點。
    • 受管節點:被 ansible 管理的 Linux 系統、Windows 系統、網絡設備等。
  • 清單(INVENTORY):記錄所有被管理主機的列表。

  • 劇本(PLAYBOOK)

    :用戶只需要寫好 Playbook,Ansible 就會確保主機達到預期狀態。

    • 每個 playbook 里可以包含多個 “劇本片段(play)”。
    • 每個 play 會在一組主機上按順序執行一系列 “任務(task)”。
    • 每個 task 都要執行一個 “模塊(module)”。模塊是一小段代碼(可能是 Python、PowerShell 或其他語言寫的)。Ansible 自帶幾百個模塊,能執行各種自動化任務,比如操作系統文件、安裝軟件、調用 API 等。Tasks、plays 和 Playbooks 具有 “冪等性”—— 在同一臺主機上多次安全執行 Playbooks,最終主機都會處于正確狀態。如果主機已經是預期狀態,Playbook 就不會做任何改動。
  • 插件(PLUGINS):添加到 Ansible 里的代碼片段,用來擴展 Ansible 的功能。

Ansible 理念
  • 復雜會降低效率:越簡單越好。Ansible 的設計原則就是讓工具好用、自動化腳本好寫好懂,所以創建自動化時要盡量簡單。
  • 優先保證可讀性:Ansible 自動化語言圍繞簡單易懂的聲明性文本文件構建。寫得好的 Ansible Playbook 能清晰記錄工作流的自動化過程。
  • 用聲明式思維:Ansible 是一種 “目標狀態引擎”。它解決 IT 部署自動化的思路是:你只需要說明希望系統處于什么狀態,Ansible 會通過只做必要的改動,讓系統達到這個狀態。
Ansible 用例
  • 配置管理:集中管理和部署配置文件是 Ansible 的常見用法,很多高級用戶都是從這里開始了解 Ansible 自動化平臺的。
  • 應用部署:用 Ansible 定義應用,再結合紅帽 Ansible Tower 管理部署,各個團隊能更高效地管理從開發到生產的整個應用生命周期。
  • 工作流管理:Ansible 和紅帽 Ansible Tower 能簡化系統配置流程,不管是通過 PXE 引導和 kickstart 安裝裸機恢復服務器、虛擬機,還是從模板創建虛擬機或云實例,都能輕松搞定。
  • 持續交付:創建 CI/CD 流水線需要多個團隊配合。如果沒有一個團隊里所有人都能用的簡單自動化平臺,這很難實現。Ansible Playbook 能確保應用在整個生命周期內都被正確部署和管理。
  • 安全與合規:在 Ansible Playbook 里定義安全策略后,還能把掃描和修復安全策略的操作集成到其他自動化流程中。安全應該是所有部署中必不可少的部分,而不是事后才考慮的事情。
  • 編排:只配置單個部分不足以定義整個環境,還需要明確多個配置之間如何交互,確保各種分散的資源能被整體管理。

Ansible 部署

準備實驗環境

實驗環境的 /etc/hosts 配置

10.1.8.10 controller.bq.cloud controller
10.1.8.11 node1.bq.cloud node1
10.1.8.12 node2.bq.cloud node2
10.1.8.13 node3.bq.cloud node3
10.1.8.14 node4.bq.cloud node4

需要配置控制節點的 bq 用戶能免密碼登錄所有節點,并且不用輸入密碼就能通過 sudo 獲取權限執行任何命令。

# 所有節點都配置/etc/hosts
[root@all-node ~]# cat >> /etc/hosts <<EOF################# ansible #################
10.1.8.10 controller.bq.cloud controller
10.1.8.11 node1.bq.cloud node1
10.1.8.12 node2.bq.cloud node2
10.1.8.13 node3.bq.cloud node3
10.1.8.14 node4.bq.cloud node4
EOF# 所有節點添加用戶
[root@all-node ~]# useradd bq
[root@all-node ~]# echo redhat | passwd --stdin bq# 所有節點配置免密提權
[root@all-node ~]# echo 'bq ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/bq# 創建密鑰對
[bq@centos7 ~]$ [ -d ~/.ssh ] || mkdir -m 700 .ssh
[bq@centos7 ~]$ ssh-keygen -t rsa -f .ssh/id_rsa -N ''# 推送公鑰到目標主機
[bq@centos7 ~]$ sudo yum install -y sshpass
[bq@centos7 ~]$ for host in controller node{1..4}
do sshpass -p redhat ssh-copy-id bq@$host
done# 驗證免密登錄
[bq@centos7 ~]$ for host in controller node{1..4}
do sshpass -p bq@$host hostname
done
控制節點

控制節點就是安裝了 Ansible 軟件的主機。可以有一個或多個控制節點,被 Ansible 管理的主機不需要安裝 Ansible。

注意:控制節點必須是 Linux 或 UNIX 系統,不支持 Windows 作為控制節點。

安裝 ansible:

[bq@centos7 ~]$ sudo yum install -y ansible
[bq@centos7 ~]$ ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/home/bq/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /bin/ansiblepython version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
受管節點
Linux

受管節點需要滿足的條件,取決于控制節點連接它們的方式以及要運行的模塊:

  • Python 版本:Linux 和 UNIX 受管節點需要安裝 Python,才能運行大部分模塊。
  • 有些模塊不需要 Python:比如 raw 模塊,它的參數直接通過配置的遠程 shell 運行,可以在沒有 Python 環境的設備上使用。不過,raw 模塊很難用安全的冪等方式操作。
Windows

Ansible 自帶很多專門為 Microsoft Windows 系統設計的模塊,這些模塊可以在 Ansible 模塊索引的Windows Modules部分查到。

大部分專門為 Microsoft Windows 受管節點設計的模塊,要求受管節點上:

  • 安裝 PowerShell 3.0 或更高版本。
  • 配置 PowerShell 遠程連接。
  • 安裝.NET Framework 4.0 或更高版本。

本課程的示例用的是基于 Linux 的受管節點,不會詳細講管理 Microsoft Windows 受管節點的具體區別和必要設置。想了解更多可以去Ansible 官網查看。

網絡設備

也可以用 Ansible 來自動化配置受管網絡設備,比如路由器和交換機。Ansible 包含很多專門為此設計的模塊,支持 Cisco IOS、IOSXR、NX-OS,Juniper Junos,Arista EOS,以及基于 VyOS 的網絡設備等。

由于大多數網絡設備不能運行 Python,所以 Ansible 的網絡模塊是在控制節點上運行的,而不是在受管節點上。和網絡設備通信會用特殊的連接方式,通常是通過 SSH 上的 CLI、SSH 上的 XML 或者 HTTP (S) 上的 API。
isco IOS、IOSXR、NX-OS,Juniper Junos,Arista EOS,以及基于 VyOS 的網絡設備等。

由于大多數網絡設備不能運行 Python,所以 Ansible 的網絡模塊是在控制節點上運行的,而不是在受管節點上。和網絡設備通信會用特殊的連接方式,通常是通過 SSH 上的 CLI、SSH 上的 XML 或者 HTTP (S) 上的 API。

如涉及版權問題,請聯系作者處理!!!!!!!!!

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

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

相關文章

2025年云手機場景適配的行業觀察

2025年的市場中&#xff0c;云手機品牌百花齊放&#xff0c;不同品牌在性能、功能和場景適配性上的差異日益顯著。隨著云計算技術的快速發展&#xff0c;云手機已從 嘗鮮工具 演變為游戲、辦公、企業運營等場景的剛需工具。現市面上也有著更多的云手機品牌&#xff0c;結合實測…

Date/Calendar/DateFormat/LocalDate

作用說明Date用于定義時間&#xff0c;提供date對象間的比較方法Calendar(日歷類),提供對時間的運算方法DateFormat是接口&#xff0c;它的實現類SimpleDateFormat用來規范時間輸出形式LocalDate&#xff0c;在JDK1.8之后引入&#xff0c;方便了對時間的運算方法介紹Date常用方…

在Python 3.8環境中安裝Python 3.6兼容包的方法

在Python 3.8環境中安裝Python 3.6兼容包的方法 用戶的需求是&#xff1a;在Python 3.8環境中重新安裝原本為Python 3.6設計的包。這通常涉及兼容性問題&#xff0c;因為Python 3.8可能引入了一些語法或API變更&#xff0c;導致舊包無法直接運行。以下是逐步解決方案&#xff…

三種DuckDB電子表格插件的union all查詢性能對比

我選取了最穩定、兼容性最好的三種&#xff1a;官方excel對應函數read_xlsx()、官方spatial對應函數st_read()、rusty_sheet對應函數read_sheet。 1.建立兩個包含前50萬和后54萬的xlsx文件&#xff0c;用于比較。利用官方excel的copy()to進行。 D copy (from v1 order by l_ord…

Python 中使用多進程編程的“三兩”問題

文章目錄一、簡介二、選擇合適的啟動方式三、手動終止所有的進程小結一、簡介 這里簡單介紹在Python中使用多進程編程的時候容易遇到的情況和解決辦法&#xff0c;有助于排查和規避某類問題&#xff0c;但是具體問題還是需要具體分析&#xff0c;后續會補充更多的內容。 二、…

Ansible部署應用

目錄Ansible概述1&#xff1a;什么是Ansible2&#xff1a;Ansible的架構組成3&#xff1a;Ansible與SaltStack的對比安裝部署Ansible服務1&#xff1a;系統環境設置2&#xff1a;安裝Ansible&#xff08;第一臺&#xff09;2&#xff1a;配置主機清單3&#xff1a;修改Ansible配…

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

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

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

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

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&…