Ansible 是开源自动化运维平台,用于解决手动管理服务器的各类问题:

  1. 手动管理多台服务器时,易出现操作遗漏、配置不一致、问题排查困难等问题

  2. 通过 Ansible 可将配置逻辑写入 Playbook,单次执行即可完成所有主机的统一配置,配置可重复使用

  3. 该模式实现了基础架构即代码,配置文件可纳入版本控制系统(如 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 作为普通脚本工具使用,否则会浪费其特性。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐