第十三天 - Ansible基礎架構 - YAML語法與Playbook - 練習:批量配置部署

Ansible自動化運維實戰:從入門到批量配置部署

前言:自動化運維的時代選擇

在服務器規模呈指數級增長的今天,手工操作已無法滿足運維需求。本文將手把手教你使用Ansible這個明星級自動化工具,通過YAML語法和Playbook實現批量配置部署。即使你是零基礎的小白,也能在2小時內掌握自動化運維的核心技能!


一、Ansible基礎架構解析

1.1 核心組件與工作原理

SSH協議
SSH協議
SSH協議
控制節點
被管節點1
被管節點2
被管節點3
組件說明:
  • Inventory:被管設備清單(IP/域名集合)
  • Modules:執行單元(共3500+內置模塊)
  • Playbook:自動化劇本(YAML格式)
  • Plugins:擴展功能(日志、緩存等)

1.2 環境搭建(Ubuntu 20.04示例)

# 安裝Ansible
sudo apt update
sudo apt install ansible -y# 配置SSH免密登錄
ssh-keygen -t rsa
ssh-copy-id user@target-server# 驗證安裝
ansible --version

二、YAML語法速成課

2.1 基礎語法規則

# 列表表示法
packages:- nginx- mysql-server- python3# 字典結構
server:name: web01ip: 192.168.1.100ports: [80, 443]# 多行文本
motd: |歡迎登錄生產環境服務器!操作前請三思!

2.2 Ansible專用語法

# 變量定義
vars:http_port: 8080# 任務執行
tasks:- name: 創建目錄file:path: /data/logsstate: directorymode: '0755'

三、Playbook深度解析

3.1 Playbook結構解剖

---
- name: 基礎環境配置hosts: webserversbecome: yesvars:timezone: Asia/Shanghaitasks:- name: 設置時區timezone:name: "{{ timezone }}"handlers:- name: 重啟cron服務service:name: cronstate: restarted

3.2 核心元素說明

  • hosts:目標主機組
  • vars:全局變量
  • tasks:執行任務列表
  • handlers:觸發操作
  • tags:任務標簽

四、批量配置部署實戰

4.1 場景需求

  • 為20臺Web服務器部署Nginx
  • 統一配置防火墻規則
  • 設置標準化時區
  • 部署后自動檢查服務狀態

4.2 完整Playbook示例

---
- name: Web服務器標準化部署hosts: web_clusterbecome: yesvars:nginx_version: 1.18.0allowed_ports: [80, 443]tasks:- name: 更新軟件源apt:update_cache: yescache_valid_time: 3600- name: 安裝Nginxapt:name: nginx={{ nginx_version }}state: present- name: 配置防火墻ufw:rule: allowport: "{{ item }}"loop: "{{ allowed_ports }}"- name: 拷貝Nginx配置template:src: templates/nginx.conf.j2dest: /etc/nginx/nginx.confnotify: 重啟Nginx服務handlers:- name: 重啟Nginx服務service:name: nginxstate: restarted- name: 驗證部署command: nginx -tregister: resultfailed_when: "'syntax is ok' not in result.stdout"

五、Ansible進階技巧

5.1 角色(Roles)組織

site.yml
roles/├── common/│   ├── tasks/│   ├── handlers/│   └── vars/└── webserver/├── templates/└── files/

5.2 變量優先級管理

  1. 命令行參數(-e)
  2. Playbook變量
  3. Host變量
  4. Group變量
  5. Inventory變量

5.3 動態Inventory

#!/usr/bin/env python
import jsonhosts = {"web": ["192.168.1.101", "192.168.1.102"],"db": ["10.0.0.101"]
}print(json.dumps(hosts))

六、生產環境最佳實踐

6.1 安全配置建議

# ansible.cfg
[defaults]
host_key_checking = False
private_key_file = ~/.ssh/ops_key
log_path = /var/log/ansible.log[privilege_escalation]
become=True
become_method=sudo
become_user=root

6.2 性能優化方案

  • 開啟pipelining
  • 使用SSH長連接
  • 設置facts緩存
  • 并行執行策略

七、調試與排錯指南

7.1 常用調試命令

# 語法檢查
ansible-playbook --syntax-check deploy.yml# 試運行(Dry Run)
ansible-playbook -C deploy.yml# 分步執行
ansible-playbook --step deploy.yml# 指定標簽執行
ansible-playbook --tags "firewall" deploy.yml

7.2 常見錯誤處理

# 權限問題處理
- name: 修復目錄權限file:path: /dataowner: www-datagroup: www-datarecurse: yesstate: directory

八、學習資源推薦

  1. Ansible官方文檔(https://docs.ansible.com)
  2. 《Ansible權威指南》
  3. Ansible Galaxy社區(https://galaxy.ansible.com)
  4. Red Hat Ansible實驗平臺

結語:自動化運維的星辰大海

通過本教程,我們完成了:

  • Ansible基礎架構認知 → YAML語法精通 → 完整Playbook開發
  • 實現20臺服務器批量部署
  • 掌握生產級最佳實踐

課后挑戰:嘗試為數據庫服務器編寫自動化部署Playbook,要求包含:

  • MySQL 8.0安裝
  • 安全加固配置
  • 主從復制配置
  • 監控探針部署

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

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

相關文章

Redis的過期和內存淘汰策略

文章目錄 惰性刪除定期刪除內存滿了,數據淘汰策略 Redis 提供了兩種刪除策略: 惰性刪除 、定期刪除 惰性刪除 定期刪除 兩種清除模式: 內存滿了,數據淘汰策略 Redis 提供了八種數據淘汰策略: 1. 默認是不淘汰任何的 key&#x…

用PHPExcel 封裝的導出方法,支持導出無限列

用PHPExcel 封裝的導出方法,支持導出無限列 避免PHPExcel_Exception Invalid cell coordinate [1 異常錯誤 /*** EXCEL導出* param [string] $file_name 保存的文件名及表格工作區名,不加excel后綴名* param [array] $fields 二維數組* param [array] $…

WHAT - React 元素接收的 ref 詳解

目錄 1. ref 的基本概念2. 如何使用 ref2.1 基本用法2.2 類組件使用 createRef 3. forwardRef 轉發 ref4. ref 的應用場景5. ref 和函數組件總結 在 React 中,ref(引用)用于訪問 DOM 元素或類組件實例。它允許我們直接與元素進行交互&#xf…

【QT】QT的消息盒子和對話框(自定義對話框)

QT的消息盒子和對話框(自定義對話框) 一、消息盒子QMessageBox1、彈出警告盒子示例代碼:現象: 2、致命錯誤盒子示例代碼:現象: 3、幫助盒子示例代碼:現象: 4、示例代碼: …

依靠視頻設備軌跡回放平臺EasyCVR構建視頻監控,為幼教連鎖園區安全護航

一、項目背景 幼教行業連鎖化發展態勢越發明顯。在此趨勢下,幼兒園管理者對于深入了解園內日常教學與生活情況的需求愈發緊迫,將這些數據作為提升管理水平、優化教育服務的重要依據。同時,安裝監控系統不僅有效緩解家長對孩子在校安全與生活…

Stable Diffusion+Pyqt5: 實現圖像生成與管理界面(帶保存 + 歷史記錄 + 刪除功能)——我的實驗記錄(結尾附系統效果圖)

目錄 🧠 前言 🧾 我的需求 🔧 實現過程(按功能一步步來) 🚶?♂? Step 1:基本圖像生成界面 🗃? Step 2:保存圖片并顯示歷史記錄 📏 Step 3&#xff1a…

量子計算未來的潛力和挑戰

據麥肯錫預測,到 2035 年或 2040 年,量子計算市場規模可能增長至約 800 億美元。目前,許多量子比特技術正競相成為首臺通用、無差錯量子計算機的基礎,但仍面臨諸多挑戰。 我們將探討量子計算的未來前景、潛力,以及它對…

ArcGIS 給大面內小面字段賦值

文章目錄 引言:地理數據處理中的自動化賦值為何重要?實現思路模型實現關鍵點效果實現步驟1、準備數據2、執行3、完成4、效果引言:地理數據處理中的自動化賦值為何重要? 在地理信息系統(GIS)的日常工作中,空間數據的屬性字段賦值是高頻且關鍵的操作,例如在土地利用規劃…

如何打通虛擬化-容器環境并保障流量安全?SmartX VCCI 方案升級!

為了提升資源利用率、交付效率和業務靈活性,不少企業用戶都在推進從傳統架構向云原生架構的演進,并采用虛擬機與容器共存的混合模式支持多種業務系統。由于兩個環境在業務交互層面形成高度耦合,企業需要具備簡單、高效方案,實現虛…

stable diffusion 量化加速點

文章目錄 一、導出為dynamic shape1)函數講解(函數導出、輸出檢查)2)代碼展示二、導出為static shape1)函數講解(略)2)代碼展示三、序列化為FP32測速1)測速2)代碼四、序列化為FP16測速1)測速2)代碼同上五、發現并解決解決CLIP FP16溢出,并測速1)如何找到溢出的算子…

7-openwrt-one通過web頁面配置訪客網絡、無線中繼等功能

前幾個章節一直在介紹編譯、分區之類的,都還沒正常開始使用這個路由器的wifi。默認wifi是沒有啟動的,前面還是通過手動修改uci配置啟動的,這個章節介紹下官方web頁面的使用。特別是訪客網絡、無線中繼 1、開啟wifi,配置wifi基本信息 我們使用有線連接路由器,通過192.168.…

AcWing 6099. 座位

原題目鏈接 問題描述 有 n 頭奶牛(n ≥ 5),編號為 1 ~ n,按照某種順序圍著一張圓桌坐成一圈。 奶牛之間存在如下的朋友關系: 如果兩頭奶牛相鄰,則它們是朋友;如果兩頭奶牛之間只隔著一頭奶…

44、Spring Boot 詳細講義(一)

Spring Boot 詳細講義 目錄 Spring Boot 簡介Spring Boot 快速入門Spring Boot 核心功能Spring Boot 技術棧與集成Spring Boot 高級主題Spring Boot 項目實戰Spring Boot 最佳實踐總結 一、Spring Boot 簡介 1. Spring Boot 概念和核心特點 1.1、什么是 Spring Boot&#…

配置mac mini M4 的一些軟件

最近更換了 mac mini M4 ,想要重新下載配置軟件 ,記錄一下。 Homebrew是什么? homebrew是一款Mac OS平臺下的軟件包管理工具,擁有安裝、卸載、更新、查看、搜索等功能。通過簡單的指令可以實現包管理,而不用關心各種…

網絡空間安全(54)CSRF

一、定義與原理 CSRF(Cross-Site Request Forgery),全稱為跨站請求偽造,也被稱為One Click Attack或Session Riding,縮寫為CSRF或XSRF。它是一種網絡安全漏洞,攻擊者通過偽造用戶的請求,利用用戶…

分布式文件存儲系統FastDFS

文章目錄 1 分布式文件存儲1_分布式文件存儲的由來2_常見的分布式存儲框架 2 FastDFS介紹3 FastDFS安裝1_拉取鏡像文件2_構建Tracker服務3_構建Storage服務4_測試圖片上傳 4 客戶端操作1_Fastdfs-java-client2_文件上傳3_文件下載4_獲取文件信息5_問題 5 SpringBoot整合 1 分布…

安裝了VM Tools,仍無法復制拖動-解決方案

今天在安裝ubuntu時遇到了困擾許久的問題,安裝了VM Tools,仍無法拖動主機文件到虛擬機,主要有兩種原因并對應解決辦法。 1.相關虛擬機設置選項卡中-客戶機隔離-兩個功能沒有勾選 解決方案:勾選重啟虛擬機即可 2.(這個…

Jmeter分布式測試啟動

代理客戶端配置 打開jmeter.properties文件,取消注釋并設置端口(如server_port1099), 并添加server.rmi.ssl.disabletrue禁用SSL加密。 (Linux系統)修改jmeter-server文件中的RMI_HOST_DEF為代理機實際IP。…

火語言RPA--Oracle-導入數據表格

【組件功能】:導入特定的表格數據到包含同樣字段的數據表 將表格對象數據通過數據庫操作對象導入到指定數據庫。 配置預覽 配置說明 源表格 表格來源有“來自表格對象”和“來自表達式”2種,表達式支持DataTable類型變量。 對象 對應來自表格對象&…

Java的Selenium的特殊元素操作與定位之驗證碼

1.使用OCR技術識別驗證 步驟: 截取整個網頁的截圖。 定位驗證碼圖片元素。 根據驗證碼圖片的位置和大小,從截圖中裁剪出驗證碼圖片。 使用OCR工具(如Tesseract)識別驗證碼圖片中的文本。 2.手動處理驗證碼 步驟:…