自动化运维工具 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支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机
    组内。
相关推荐
Nobody__19 分钟前
解决多台服务器 UID/GID 做对齐后,文件系统元数据未更新的情况
运维·服务器
兆龙电子单片机设计31 分钟前
【STM32项目开源】STM32单片机智能语音家居控制系统
stm32·单片机·嵌入式硬件·物联网·开源·自动化
珂玥c39 分钟前
windows系统nfs挂载
运维·windows·ssh·remmina·cygwin
菜择贰41 分钟前
在linux(wayland)中禁用键盘
linux·运维·chrome
梦想的旅途21 小时前
基于 UI 自动化(RPA)实现企业微信外部群操作的架构设计
ui·自动化·rpa
霸气十足+拼命+追梦少年1 小时前
服务器挂载U盘或硬盘
运维·服务器
慕容雪_1 小时前
运维笔记-笔记本无线网卡连接wifi,有线网卡连接内网
运维·内网·远程
小杰帅气1 小时前
进程优先级与切换调度
linux·运维·服务器
华纳云IDC服务商1 小时前
DNS负载均衡能自动避开故障服务器吗?
运维·服务器·负载均衡
奋斗的阿狸_19862 小时前
键盘组合键监听与 xterm 唤醒程序
linux·运维·服务器