自動化運維-ansible中對于大項目的管理

自動化運維-ansible中對于大項目的管理

一、引用主機清單

在Playbook中引用主機時,hosts 字段指定的目標必須與Ansible主機清單中定義的標識符完全匹配。如果清單中配置的是主機名,則在Playbook中使用IP地址或其他別名將無法匹配,導致任務被跳過

錯誤示例

inventory 中配置

在這里插入圖片描述

playbook 中配置

在這里插入圖片描述

發現報錯,直接跳過該任務

在這里插入圖片描述

主機清單引用方式大全

方式示例說明
單臺主機hosts: node1指定清單中的具體主機名
hosts: node1.example.com使用FQDN(前提是清單里如此定義)
hosts: 172.16.30.10使用IP地址(前提是清單里如此定義)
所有主機hosts: all定位到清單中的所有主機
hosts: '*'通配符,同樣代表所有主機
主機組hosts: net定位到net組中的所有主機
模式匹配hosts: '*.example.com'匹配所有以.example.com結尾的主機
hosts: '172.16.30.*'匹配172.16.30.0/24網段的所有主機
hosts: 'web*'匹配所有名稱以web開頭的主機
hosts: node[ 1-5 ]匹配node1, node2, …, node5
hosts: node[ a-d ]匹配nodea, nodeb, nodec, noded
集合操作hosts: net:webserver并集:屬于netwebserver組的主機
hosts: net:&webserver交集:同時屬于netwebserver組的主機
hosts: net:!node1差集:屬于net組但排除node1主機

二、配置并行執行

1. 使用 forks 控制并發連接數

Ansible默認同時只能處理5臺主機(由ansible.cfg中的forks參數控制)

流程如下

  • 一個Play中如果有10臺主機,forks=5
  • Ansible會先在前5臺主機上執行完所有任務
  • 然后再在剩下的5臺主機上執行所有任務

對不同的受控主機

  • Linux受控主機:任務主要在受控端運行,控制節點負載較輕,可適當增加forks值以加速執行
  • 網絡設備:模塊多在控制節點運行,負載較高,不宜設置過高的forks
2. 使用 serial 進行并行執行

默認情況下,一個Play中所有主機必須全部完成一個任務,才會進入下一個任務。如果中間某臺主機任務失敗,整個Play會中止,導致已成功主機的Handlers也無法觸發

執行流程:

  1. 在最先的2臺主機(設定 serial=2)上執行Play,安裝httpd,成功后觸發handler重啟服務
  2. 這2臺處理完畢后,再在接下來的2臺主機上執行相同的Play
  3. 依此類推,直到所有批次完成
  4. 即使某一批次失敗,也只影響該批次,已成功的批次已正常執行了Handler

serial 也可以指定百分比(如 serial: "20%") 或列表(如 serial: [1, 5, 10],表示第一批1臺,第二批5臺,剩余全部10臺一批)

示例

[student@master ansible] vim b.yml
# playbook內容如下
---
- name: test2hosts: node1,node2,node3,node4serial: 2tasks:- name: test21debug:msg: wil

在這里插入圖片描述

三、包含與導入

為了提升Playbook的模塊化和可重用性,可以將任務或整個Playbook分解到不同文件中

1. 導入(import_*) - 靜態預處理

解析Playbook時,Ansible會將導入的文件內容直接復制到當前位置。適用于邏輯簡單、結構固定的場景

  • import_playbook: 導入另一個Playbook文件
  • import_tasks: 導入任務文件

示例

配置 playbook , repo.yml

[student@master ansible] vim repo.yml
# playbook內容如下
---
- name: repohosts: alltasks:- name: baseosyum_repository:name: baseosdescription: rhel9-baseosbaseurl: http://ansible.example.com/rhel9/BaseOSenabled: yesgpgcheck: no- name: appstreamyum_repository:name: appstreamdescription: rhel9-appstreambaseurl: http://ansible.example.com/rhel9/AppStreamenabled: yesgpgcheck: no

配置 taskshttp.yml

[student@master ansible] vim http.yml
# tasks內容如下
---- name: install httpyum: name: httpdstate: installed

配置 playbook , install1.yml

[student@master ansible] vim install1.yml
# playbook內容如下
---
- name: import-repoimport_playbook: repo.yml
- name: install hhosts: node1tasks:- import_tasks: http.yml- name: start httpdservice:name: httpdstate: startedenabled: yes

在這里插入圖片描述

2. 包含(include_*) - 動態執行

Play運行期間遇到include_*語句時,才會處理導入的文件內容。更靈活,支持與循環結合使用

  • include_tasks: 動態包含任務文件

示例

配置 tasks , vsftp.yml

[student@master ansible] vim vsftp.yml
# tasks內容如下
---- name: install vsftpdyum: name: vsftpdstate: installed

配置 playbook , install2.yml

[student@master ansible] vim install2.yml
# playbook內容如下
---
- name: install ftphosts: node1tasks:- include_tasks: vsftp.yml- name: start vsftpdservice:name: vsftpdstate: startedenabled: yes

在這里插入圖片描述

導入 vs. 包含 關鍵區別
特性導入 (import_*)包含 (include_*)
處理時機解析時(靜態)運行時(動態)
循環不支持支持與loop一起使用
條件觸發對所有導入任務應用單個when條件可為包含的每個任務應用不同條件
變量導入時變量必須已定義運行時變量可用,更靈活

最佳實踐: 優先使用導入,除非你需要循環包含依賴于運行時變量的動態功能。

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

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

相關文章

59_基于深度學習的麥穗計數統計系統(yolo11、yolov8、yolov5+UI界面+Python項目源碼+模型+標注好的數據集)

目錄 項目介紹🎯 功能展示🌟 一、環境安裝🎆 環境配置說明📘 安裝指南說明🎥 環境安裝教學視頻 🌟 二、數據集介紹🌟 三、系統環境(框架/依賴庫)說明🧱 系統環…

面試問題詳解十六:Qt 內存管理機制

在 Qt 開發過程中,很多初學者(包括不少有經驗的 C 程序員)經常會產生這樣的疑問:“我在 Qt 中 new 出來的控件好像都沒有 delete,那內存不會泄漏嗎?”比如下面這段代碼: void Widget::createLef…

Pycharm 試用

Ubuntu 重置Pycharm試用期限(30 天) 先關閉Pycharm刪除系統緩存 rm -rf ~/.config/JetBrains/ && rm -rf ~/.local/share/JetBrains/ && rm -rf ~/.cache/JetBrains/刪除已經安裝的 Pycharm 軟件運行目錄去官網下載新的 就行了

C++ Qt 開發核心知識

Qt 框架概述Qt 是一個跨平臺的 C 應用程序開發框架,廣泛用于開發圖形用戶界面程序。其核心特性包括跨平臺能力、豐富的功能模塊和強大的工具集。核心概念與機制元對象系統Qt 擴展了標準 C,通過元對象系統提供信號與槽機制、運行時類型信息和動態屬性系統…

net9 aspose.cell 自定義公式AbstractCalculationEngine,帶超鏈接excel轉html后背景色丟失

AbstractCalculationEngine 是 Aspose.Cells 中一個強大的抽象類,允許您自定義公式計算邏輯。當您需要覆蓋默認計算行為或實現自定義函數時非常有用。直接上代碼1. 創建自定義計算引擎using Aspose.Cells; using System;// 創建自定義計算引擎 public class CustomC…

如何監控員工的電腦?7款實用的員工電腦管理軟件,探索高效管理捷徑!

當銷售團隊在淘寶刷單、設計師用公司電腦挖礦、程序員頻繁訪問代碼托管網站時,企業損失的不僅是帶寬——低效、泄密、合規風險正成為隱形利潤殺手。 傳統管理依賴“人盯人”或抽查日志,但面對分布式辦公與遠程協作趨勢,這些方法早已力不從心…

機器視覺軟件--VisionPro、Visual Master,Halcon 和 OpenCV 的學習路線

Halcon 和 OpenCV區別 Halcon 和 OpenCV 都是計算機視覺領域的重要工具,但它們的設計理念、功能側重和適用場景有顯著不同。下面這個表格匯總了它們的核心區別,方便你快速了解: 開發模式與體驗??:Halcon 配備了強大的??圖形化…

算法-根據前序+中序遍歷打印樹的右視圖

題目請根據二叉樹的前序遍歷,中序遍歷恢復二叉樹,并打印出二叉樹的右視圖數據范圍: 0≤n≤100000≤n≤10000 要求: 空間復雜度 O(n)O(n),時間復雜度 O(n)O(n)如輸入[1,2,4,5,3],[4,2,5,1,3]時,通過前序遍歷…

Kafka面試精講 Day 7:消息序列化與壓縮策略

【Kafka面試精講 Day 7】消息序列化與壓縮策略 在Kafka的高性能消息系統中,消息序列化與壓縮是影響吞吐量、延遲和網絡開銷的核心環節。作為“Kafka面試精講”系列的第7天,本文聚焦于這一關鍵主題,深入剖析其原理、實現方式、配置策略及常見…

Xterminal軟件下載_Xterminal ssh遠程鏈接工具下載__Xterminal安裝包 網盤下載_Xterminal ssh遠程鏈接工具安裝包

Xterminal 作為一款國產 SSH 工具,專為開發人員量身打造。它支持 SSH 和 Telnet 協議連接遠程服務器與虛擬機,無論是進行代碼部署,還是服務器運維,都能輕松勝任。軟件界面采用極簡設計,黑色背景搭配白色文字&#xff0…

Lua > 洛谷

Lua > 洛谷P1000 超級瑪麗游戲P1001 AB ProblemP1008 [NOIP 1998 普及組] 三連擊P1035 [NOIP 2002 普及組] 級數求和P1046 [NOIP 2005 普及組] 陶陶摘蘋果P1047 [NOIP 2005 普及組] 校門外的樹P1085 [NOIP 2004 普及組] 不高興的津津P1089 [NOIP 2004 提高組] 津津的儲蓄計劃…

小企業環境-火山方舟和扣子

背景說明 并不是說應該怎么辦,而是基本配置有這些可以進行使用,具體不同企業使用的時候肯定要個性化配置。 使用了火山方舟和扣子 火山方舟 應用實驗室列表 簡單使用了提示詞的功能,后端服務ARK_API_KEY 應用ID 來對應請求發送http請求…

QT-事件

Qt事件 除了信號和槽通信機制外,Qt中還提供了事件處理機制實現與用戶的交互和對象間的通信。Qt捕獲底層操作系統消息,進行封裝之后轉換為Qt事件,事件處理后才發出信號。 一、事件概述Qt中事件是程序內部或外部發生的動作。比如程序外部&#…

HI3519DRFCV500/HI3519DV500海思核心板IPC算力2.5T圖像ISP超高清智能視覺應用提供SDK軟件開發包

Hi3519DV500是一顆面向視覺行業推出的超高清智能 SoC。最高支持四路sensor輸入,支持最高4K30fps的ISP圖像處理能力,支持 2F WDR、多級降噪、六軸防抖、全景拼接、多光 譜融合等多種傳統圖像增強和處理算法,支持通過AI算法對輸入圖像進行實時降…

go 初始化組件最佳實踐

Go 語言初始化最佳實踐 在 Go 語言中, 有一個 init() 函數可以對程序進行包級別的初始化, 但 init() 函數有諸多不便, 例如: 無法返回錯誤, 進行耗時初始化時, 會增加程序啟動時間。因此 init() 函數并不適用于所有初始化。 1.初始化方式 在程序進行初始化時,我們應…

域名暫停解析是怎么回事

域名注冊和使用是需要付費的,如果沒有及時續費,域名注冊商就會暫停該域名的解析服務。相關數據顯示,大約有 30% 的域名暫停解析情況是由于欠費引起的。比如,有個小公司的網站域名到期了,負責續費的員工忘記操作&#x…

前端開發的“三劍客”—— ??HTML、CSS、JavaScript??

前端開發的“三劍客”—— ??HTML、CSS、JavaScript??,是構建所有網頁和Web應用的基石。它們分工明確又緊密協作,共同實現了網頁的“內容結構”“視覺表現”和“交互行為”。以下是三者的詳細解析及協作邏輯:??1. HTML:網頁…

TDengine TIMEDIFF() 函數用戶使用手冊

TDengine TIMEDIFF() 函數詳細使用手冊 目錄 功能概述函數語法參數說明返回值說明版本變更說明技術特性使用場景及示例時間單位處理數據類型兼容性注意事項常見問題最佳實踐 功能概述 TIMEDIFF() 函數用于計算兩個時間戳的差值,返回 expr1 - expr2 的結果。結果…

數據結構:棧和隊列(上)

匯總代碼見:登錄 - Gitee.com 上一篇文章:數據結構:雙向鏈表-CSDN博客 與本文相關的結構體傳參:自定義類型:結構體-CSDN博客 1.棧 1.1概念和結構 棧:一種特殊的線性表,其只允許在固定的一端…

文檔抽取技術:提取非結構化文檔中的關鍵信息,提升檔案管理、金融保險和法律合規領域的效率與準確性

在信息爆炸的時代,各種機構、企業等都面臨著海量非結構化文檔數據的挑戰。報告、合同、票據、檔案記錄、法律文書等文檔中蘊藏著巨大的數據,但傳統依靠人工閱讀、理解和錄入的方式效率低下、成本高昂且容易出錯。文檔抽取技術作為人工智能和自然語言處理…