Ansible介绍

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 作为普通脚本工具使用,否则会浪费其特性。

相关推荐
悠然南风16 小时前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠10 天前
ansible编辑
网络·ansible
芳心粽伙饭10 天前
Ansible课后作业
ansible
烁34711 天前
Ansible初识
ansible
烁34711 天前
Ansible安装部署调试
ansible
烁34711 天前
Ansible命令
ansible
小义_12 天前
【Ansible】(三)基础配置与连接设置
云原生·ansible
炸炸鱼.16 天前
Ansible 企业级实战:Playbook 与 Roles 完全指南
网络·ansible
风曦Kisaki17 天前
# 自动化运维Day03:Ansible模块进阶(setup,debug),四种常用变量,进阶语法;Ansible Roles(角色)
运维·自动化·ansible
炸炸鱼.19 天前
Ansible 部署应用:从入门到精通
ansible