自动化运维工具 Ansible

Ansible 是一款轻量级的开源自动化运维工具,基于 Python 开发,核心用于批量管理服务器、自动化执行运维任务,无需在目标主机安装代理程序,是企业级运维的常用工具之一。

一、Ansible 的核心特点

  1. 无代理架构目标主机无需安装客户端,通过 SSH(Linux 主机默认)或 WinRM(Windows 主机)与控制节点通信,部署成本极低。
  2. 简单易用 用 YAML 编写Playbook(自动化脚本),语法接近自然语言,非专业开发人员也能快速上手。
  3. 模块化 内置数千个功能模块(如command执行命令、yum安装软件、copy传输文件等),覆盖运维常见场景,也支持自定义模块。
  4. 幂等性重复执行相同任务不会导致异常(例如重复执行 "安装 Nginx" 的任务,只会在未安装时执行,已安装则跳过)。

二、Ansible 的核心组件

  1. 控制节点安装 Ansible 的机器,负责发起自动化任务、管理配置。
  2. 被管理节点需要被自动化操作的服务器。
  3. Inventory(主机清单)/etc/ansible/hosts文件,用于定义被管理节点的分组、IP / 主机名等信息。
  4. PlaybookYAML 格式的自动化脚本,按 "任务集" 编排运维操作(比如 "先装依赖→再部署代码→最后启动服务")。
  5. 模块 Ansible 执行具体操作的最小单元,每个模块对应一个功能(如ping模块测连通性、file模块管理文件)。

三、Ansible 的典型应用场景

  1. 批量执行命令:比如批量查看所有主机的 CPU 负载、磁盘使用率。
  2. 配置管理:批量同步配置文件(如 Nginx、MySQL 的配置)、统一系统参数。
  3. 应用部署:批量安装、启动 / 重启服务(如 Nginx、Tomcat),或部署代码包。
  4. 系统初始化:新机器批量配置主机名、防火墙、用户、SSH 密钥等。
  5. 任务编排:按依赖顺序执行多步骤任务(比如先初始化环境→再部署中间件→最后部署应用)。

Ansible工作机制

Ansible 的工作机制核心是:控制机以 "无代理" 方式(SSH/WinRM)向被管理节点批量下发任务,通过模块化脚本执行操作,执行完自动清理临时文件,最终汇总返回结果。整个过程无需在被管理节点安装任何 Ansible 代理,轻量化且易维护,

Ansible 的 Role(角色) 是对 Playbook 的模块化、结构化封装------ 把零散的运维任务(如安装软件、配置文件、启动服务)按固定目录结构拆分,形成可复用、易维护的 "功能模块"。

简单说:如果把 Playbook 比作 "一份完整的运维操作手册",Role 就是手册里 "拆分成独立章节的标准化流程"(比如 "部署 Nginx" 一章、"配置 MySQL" 一章),可以单独维护、重复调用,解决了大 Playbook 杂乱、复用性差的问题。

四,安装与操作

管理端安装****Ansible
yum install -y epel-release
yum install -y ansible
配置主机清单
配置免密SSH登录

复制代码
ssh-keygen -t rsa  # 生成密钥(和示例一样)
sshpass -p '你服务器的实际密码' ssh-copy-id root@192.168.10.4
sshpass -p '你服务器的实际密码' ssh-copy-id root@192.168.10.5

ssh root@192.168.10.50 首次登录注册密钥

sshpass -p '1' ssh-copy-id -o StrictHostKeyChecking=no root@192.168.10.50

推送密钥并免密登录

Ansible****基础命令

格式: ansible <组名> -m <模块> -a <参数>

常用模块:
command 模块:远程执行命令,不支持管道**/重定向


**shell 模块:支持管道和
shell**特性**

cron 模块:
在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移 除。
ansible-doc -s cron # 按 q 退出

Ansible 默认输出配色逻辑

Ansible 会根据任务执行的状态,自动给输出内容分配颜色(无需手动配置),核心对应关系:

  • 黄色 :对应CHANGED状态 → 表示任务对目标主机的配置产生了实际变更(比如这次是 "新增了定时任务",主机的 crontab 内容被修改);
  • 绿色 :对应SUCCESS状态 → 表示任务执行成功,但主机配置无变更(比如重复执行相同的定时任务,任务已存在,不会修改配置);
  • 红色 :对应FAILED/UNREACHABLE状态 → 表示任务执行失败(比如参数错误)或主机无法连接。
    copy 模块:
    /用于复制指定主机文件到远程主机的
    ansible-doc -s copy
    ping****模块 :
    测试主机联通性
    yum****模块
    管理软件包
    setup****模块:
    收集节点信息
    Inventory支持对主机进行分组:
    Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机
    组内。
相关推荐
RockHopper20252 小时前
自动化与智能化的认知分层原则
自动化·智能化·认知导向
黑不溜秋的2 小时前
Ubuntu 20.04 安装 搜狗输入法
linux·运维·服务器
norsd2 小时前
CentOS 设置 DNS
linux·运维·centos
XXYBMOOO2 小时前
使用 HTML5 Canvas 实现可交互的数据瀑布流(隐藏式运维模式)
运维·交互·html5
Blossom.1182 小时前
Transformer时序预测实战:用PyTorch构建股价预测模型
运维·人工智能·pytorch·python·深度学习·自动化·transformer
模型启动机2 小时前
Google推出托管MCP服务器,让AI Agent轻松接入其工具生态
运维·人工智能·ai·大模型
星夜落月2 小时前
从零开始:在服务器上部署Material for MkDocs完全指南
运维·markdown·建站
峥嵘life2 小时前
Android16 EDLA 认证BTS测试Failed解决总结
android·java·linux·运维·学习
前方一片光明3 小时前
SQL SERVER——通过计划任务方式每月对配置数据、审计数据等进行备份
运维·服务器