Ansible Tower/AWX可视化运维平台搭建与实战指南
前言
Ansible 作为轻量级、无代理的自动化运维工具,已被广泛用于批量配置管理和应用部署。然而,在规模化使用场景下,纯命令行模式的 Ansible 在任务管理、权限控制、审计追溯等方面存在明显不足。Ansible Tower(红帽官方商业版)及其开源上游 AWX 提供了完整的 Web UI,将 Ansible 的能力以可视化方式呈现,适合团队协作和规范化管理。
本文介绍 AWX/Tower 的核心功能、部署步骤及实战技巧,帮助运维团队快速搭建并用好这一平台。
一、AWX 与 Ansible Tower 的关系
| 维度 | AWX | Ansible Tower |
|---|---|---|
| 定位 | 开源上游项目 | 商业产品 |
| 更新节奏 | 频繁(社区驱动) | 稳定(Red Hat 支持) |
| 授权 | Apache 2.0 | 订阅制 |
| 核心功能 | 基本一致 | 认证、监控、支持服务 |
生产环境如需稳定性保障,建议使用 Ansible Tower;验证新功能或内部自建场景,推荐 AWX。
二、部署方案
2.1 环境要求
- 操作系统:CentOS 7+ / Rocky 8+ / Ubuntu 20.04+
- 内存:建议 4GB 以上(Tower 最低 2GB)
- CPU:2 核以上
- Docker 与 docker-compose 已安装(推荐 Standalone 部署)或 K8s 环境(用于 Operator 部署)
- PostgreSQL 12+(Tower 内置,AWX 内置)
2.2 使用 docker-compose 快速部署 AWX
1 | # 安装 Docker 与 docker-compose |
安装完成后,访问 http://<服务器IP>,默认用户名 admin,密码为 django_superuser_password 中设定的值。
2.3 Kubernetes 部署 AWX(推荐生产场景)
1 | # 使用 operator 方式部署 |
三、核心功能与使用流程
3.1 组织与权限模型
AWX 采用三层权限模型:
- Organization(组织):最顶层,对应业务线或部门
- Team(团队):将用户分组,批量分配权限
- User(用户):本地用户或对接 LDAP/AD
建议在 LDAP 集成后,按部门创建 Team 并授予相应角色,避免逐个用户配置。
3.2 创建 Inventory(主机清单)
进入 Resources → Inventories → Add,有两种方式:
- 手动添加:填写主机名/IP、变量
- 使用智能主机组(Smart Host):基于正则表达式或变量条件动态筛选
生产中推荐使用 Source Control 方式,将 inventory 文件托管在 Git 仓库,确保清单版本化:
1 | # inventory 文件示例 |
3.3 项目(Project)与 Git 集成
将 Playbook 托管在 GitLab/Gitea,AWX 通过 Webhook 实时拉取更新:
- 进入 Resources → Projects → Add
- 选择 SCM Type = Git,填入仓库地址和凭据
- 启用 Update on Launch,每次执行 Job 前自动同步最新 Playbook
3.4 任务模板(Job Template)与工作流
Job Template 是 AWX 的核心执行单元。一个标准流程:
- Survey:定义变量收集表单(如输入环境名称、版本号)
- Credentials:关联 SSH 密钥或 Vault 凭据
- 执行策略:选择并发数(Forks)、失败策略
工作流(Workflow) 将多个 Job Template 按条件串联,实现复杂场景:
1 | Start |
3.5 任务调度与通知集成
AWX 支持 Cron 风格的任务调度,可设置:
- 每日凌晨执行一次配置审计
- 每 5 分钟执行一次探活检测
- 配合 Notification Templates 对接钉钉、企业微信或邮件
通知模板配置示例(企业微信):
1 | { |
四、运维实践建议
4.1 命名规范
为便于管理,建议统一命名规则:
- 项目:
prj-<业务线>-<应用名> - 主机清单:
inv-<环境>(如inv-prod、inv-test) - 任务模板:
job-<操作类型>-<对象>(如job-deploy-nginx)
4.2 敏感信息管理
使用 Ansible Vault 加密敏感变量文件,在 AWX 中通过 Custom Credential 类型引用:
1 | # 创建 Vault 文件 |
4.3 审计日志
AWX 自动记录所有任务执行的输出和结果,可导出为 CSV,满足合规审计需求。建议定期将审计日志归档至日志服务器。
4.4 高可用部署
生产环境推荐:
- 使用 PostgreSQL 主从复制替代内置 PostgreSQL
- Redis 独立部署(AWX 内置 Redis 用于消息队列)
- Web 层使用 Nginx 反向代理 + Keepalived 做 VIP 漂移
- AWX Task/Web 节点水平扩展,多节点共享数据库和 Redis
五、常见问题
Q1:Job 运行报 “Permission denied”
检查 Credential 中 SSH 密钥是否正确、私钥权限是否为 0600,远程目标用户是否在远程服务器的 sudoers 中有免密权限。
Q2:AWX Web 界面加载缓慢
通常是 awx_web 容器内存不足导致,增加容器内存限制:
1 | docker-compose up -d awx_web --memory=2G |
Q3:Git 仓库无法访问
检查 AWX 容器内网络 DNS 配置,编辑 /etc/docker/daemon.json 添加 DNS:
1 | { |
结语
AWX/Tower 将 Ansible 的命令行能力转化为团队协作平台,适合 5 人以上运维团队或需要规范化管理的场景。重点在于:规范主机清单管理、善用 Vault 保护密钥、通过工作流串联复杂任务,并结合 LDAP/AD 实现精细化权限控制。平台搭建不难,用好才是关键。