自动化运维工具 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支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机
    组内。
相关推荐
XIAOHEZIcode9 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
dayuOK63074 天前
写作卡壳怎么办?我的“5分钟启动法”
人工智能·职场和发展·自动化·新媒体运营·媒体