第十三天 - 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.mzph.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.手动处理验证码 步骤:…