一
Ansible 是开源自动化运维平台,用于解决手动管理服务器的各类问题:
-
手动管理多台服务器时,易出现操作遗漏、配置不一致、问题排查困难等问题
-
通过 Ansible 可将配置逻辑写入 Playbook,单次执行即可完成所有主机的统一配置,配置可重复使用
-
该模式实现了基础架构即代码,配置文件可纳入版本控制系统(如 Git)管理,支持变更追溯与问题回滚,适配团队协作场景。
二、核心组件定义
|------------|-------------------------------------------------------------------------|
| 组件名称 | 定义说明 |
| 控制节点 | 安装 Ansible 的主机,所有 Ansible 命令均在此节点执行 |
| 受管主机 | 被 Ansible 管理的主机,无需安装 Ansible,仅需满足连接与运行环境要求 |
| Module(模块) | Ansible 最小执行单元,Ansible 内置大量现成模块,可完成各类运维操作,如 yum 模块用于软件安装,user 模块用于用户管理 |
| Task(任务) | 单次调用模块的操作,是 Play 中的最小执行项 |
| Play | 针对一组主机的一组任务的集合,用于完成某一类主机的配置 |
| Playbook | 由一个或多个 Play 组成的文件,可完成完整的应用部署等复杂任务 |
| 幂等性 | Ansible 的核心特性,同一 Playbook 多次执行结果一致,若系统已处于目标状态,则不会执行任何变更操作,避免重复操作导致的系统异常 |
三、重点难点梳理
1. 无代理架构
无代理是 Ansible 的核心架构特性:
-
部分自动化工具要求在所有受管主机上安装专用代理程序,该程序需常驻主机,与控制节点保持连接以接收指令,需额外维护代理的运行与升级
-
Ansible 无需在受管主机安装专用代理程序,仅需通过 SSH(Linux)或 WinRM(Windows)完成连接,受管主机仅需满足 Python 运行环境要求即可被管理,大幅降低部署与维护成本。
2. 内容集合
内容集合是 Ansible 的自动化内容分发格式,用于解决传统模块管理的问题:
-
早期 Ansible 将所有模块打包在核心安装包中,导致核心包体积过大,且模块版本与 Ansible 核心版本绑定,无法单独更新模块
-
内容集合将模块、角色、插件按功能、平台拆分为独立的打包单元,如
amazon.aws集合包含 AWS 云服务管理相关内容,azure.azcollection集合包含 Azure 相关内容,核心基础模块打包为ansible.builtin集合,默认随 Ansible Core 提供 -
该模式下,用户可按需安装所需集合,支持单独更新集合版本,无需变更 Ansible 核心版本;红帽企业版提供 120 + 经过测试认证的官方集合,可获得红帽技术支持。
3. 声明式配置
Ansible 采用声明式的配置模式,与传统脚本存在区别:
-
传统脚本为过程式,需定义每一步的执行操作,明确告知系统执行步骤
-
Ansible 为声明式,仅需定义系统的目标状态,Ansible 会自动处理实现该状态的具体操作,仅会将系统调整至目标状态,若系统已达标则无操作
-
该特性是 Ansible 的核心设计,不可将 Ansible 作为普通脚本工具使用,否则会浪费其特性。