教材原文:RHCA 官方英文教材(教材第 229~258 页)(OCR 整书版已从本站移除,本页为章节精读) 关联知识:02-08-Ansible自动化(RH294DO447)、03-Kubernetes知识库(对照 OpenShift 部署形态);本系列配套 00-RHCA教材精读-导航与学习法.md 章节结构:6.1 Tower 架构(为什么用 Tower)→ 6.2 安装 Tower(要求/许可/安装器/setup.sh)→ 6.3 导航 Tower Web UI(Dashboard/导航栏/Job 模板/启动作业)+ 章节 Quiz
- GOAL: Explain what Red Hat Ansible Tower is and demonstrate a basic ability to navigate and use its web UI(解释 Tower 是什么,并演示基本的 Web UI 导航与使用能力)。
- OBJECTIVES:① 描述 Tower 架构、用例与安装要求;② 以单机方式安装 Tower(single-server);③ 导航 Web UI,用现成的 job template/project/credential/inventory 成功启动一个 job;④ 理解 License、Dashboard、导航栏与 Settings。
- 概念链:Project(playbook 集合)→ Inventory(主机)→ Credential(登录凭据)→ Job Template(组合前三者)→ Job(模板的一次执行)。
- 痛点:① Ansible 本身没有“共享访问管理”,多人/多团队共用一套 Ansible 基建难管控;② 复杂任务常需高权限管理员凭据,直接下发不安全;③ 团队工具偏好不同(命令行 vs CI/CD vs GUI)。
- Tower 解法:集中 Web UI + RBAC(组织/团队/用户分级授权)+ 集中日志审计 + 凭据中心化(用户可用凭据但看不到明文)+ REST API(对接 Jenkins/CloudForms/Satellite 等,便于 CI/CD);订阅并入 Red Hat Ansible Automation(Tower + Engine 一起支持)。
- 技术底座:Tower 是跑在 Linux 上的 Django Web 应用;数据存 PostgreSQL;消息用 RabbitMQ(v3.0 前曾用 MongoDB,现已移除,只用 PostgreSQL);用户通过 Web UI 或 RESTful API 操作——Web UI 每个动作本质都是调 API。
| 架构 | 说明 |
|---|
| Single Machine with Integrated Database(标准) | Web 前端 + API 后端 + PostgreSQL 全在一台机,课程聚焦此形态 |
| Single Machine with Remote Database | Tower 单机 + PostgreSQL 放另一台(可用现成 PG 实例,或让安装器在远端建库) |
| High Availability Multimachine Cluster | Tower 3.1 起为 active-active 高可用集群(旧版是 active-passive 主备) |
| OpenShift Pod with Remote Database | 容器化集群跑在 OpenShift Pod(4 容器),随负载伸缩,安装方式不同 |
- Visual Dashboard:总览主机/清单/项目状态与近期作业结果。
- RBAC:在 Organization(RBAC 最高层级)/Team/User 上授权访问项目、清单等资源。
- Graphical Inventory Management:图形化建组加主机,并可从云/虚拟化/CMDB 同步动态清单。
- Job Scheduling:一次性或定期调度作业(备份类任务放非工作时段)。
- Real-time & Historical Job Reporting:实时看输出 + 历史作业可查。
- User-triggered Automation:把复杂操作封装成简单自服务按钮。
- Remote Command Execution:Web 上跑 ad hoc 命令,RBAC 管权限。
- Credential Management:集中管凭据并加密,用户只可“用”不可“看”。
- Centralized Logging & Auditing:记录谁在何时跑了什么;可对接 Splunk/Sumologic。
- Integrated Notifications:作业成败通知(Email/Slack/HipChat 等)。
- Multi-playbook Workflows:把多个 playbook 串成工作流(配图形化编辑器)。
- RESTful API:Web UI 全部功能都暴露给 API,自带可浏览文档。
架构/特性匹配题:常把“四种架构特点”“哪个组件负责存储/消息”“特性名称与描述连线”作为 Quiz 素材。
| 项 | 要求 |
|---|
| 操作系统 | 64 位 x86_64;RHEL 8.0+(或 7.4+);支持 RHEL/CentOS |
| 浏览器 | 受支持的 Firefox / Chrome 最新版(其它 HTML5 浏览器可用但不保证) |
| 内存 | 最低 4 GB;建议每个额外 fork 配 100 MB + Tower 服务 2 GB(EC2 建议 m4.large,>100 主机用 m4.xlarge) |
| 磁盘 | 至少 20 GB,其中 /var 至少 10 GB |
| Ansible Engine | 装最新稳定版;安装器会自动尝试安装 Engine 与依赖 |
| SELinux | 仅支持 targeted 策略(enforcing/permissive/disabled 均可) |
| 受管主机 | 要求同对应版本 Ansible 的受管端要求(不是 Tower 机要求) |
| OpenShift Pod 形态 | 每 Pod 6 GB 内存 + 3 CPU 核 |
- 注意数字:内存 4GB、磁盘 20GB(/var 10GB)、fork 100MB、EC2 m4.large/m4.xlarge。
- 可免费申请 trial license;2019-06 起 Tower 并入 Red Hat Ansible Automation 订阅(含 Tower+Engine+网络/服务器用例支持)。
- 组件开源许可说明在
/usr/share/doc/ansible-tower 目录下。
| 安装器 | 特点 |
|---|
标准 setup(ansible-tower-setup-latest.tar.gz) | 体积小,但需要联网从各软件仓库下载 Tower 包 |
bundled setup(ansible-tower-setup-bundle-latest.el8.tar.gz) | 自带初始 RPM 依赖,适合离线/隔离网络环境(RHEL7 另有对应 bundle) |
- root 登录 Tower 主机,下载 setup bundle(实验室用内网源 curl 拉取,生产从 releases.ansible.com 下载)。
- 解压并进入目录:
tar xzf ansible-tower-setup-bundle-latest.el8.tar.gz → cd ansible-tower-setup-bundle-3.5.0-1.el8。 - 编辑
inventory 文件设置三组密码:admin_password(Tower admin)、pg_password(PostgreSQL,库名 awx、用户 awx)、rabbitmq_password(RabbitMQ,vhost/用户 tower);可选 pg_host/pg_port(远程库)等。
- WARNING:这些密码无复杂度限制但要设强;admin 拥有 Tower 完全控制权;PostgreSQL 与 RabbitMQ 端口默认对外网卡暴露。
./setup.sh 执行安装(本质是跑一个 Ansible Playbook 的 shell 脚本);成功提示 + 日志在 /var/log/tower/setup-*.log。- 浏览器访问 Tower 主机 → 跳 HTTPS 登录页(自签证书会有告警,替换 CA 签名证书在后续章节讲)。
- 用 admin 账号 + 安装时设置的密码登录。
- 首次登录提示输入 license 并接受 EULA → 进入 Dashboard。
- 安装前置:实验室先
lab tower-install start 配置 tower.lab.example.com 的 Yum 仓库(含 RHEL/Extras 依赖),下载安装包用 curl --remote-name http://content.example.com/ansible2.8/x86_64/dvd/setup-bundle/...。
| 板块 | 内容 |
|---|
| Summary | 顶部汇总:受管主机/清单/项目状态(点格子下钻明细页) |
| Job Status | 作业成败随时间图形(PERIOD 调时间窗、JOB TYPE 选类型、VIEW 选全部/仅失败/仅成功) |
| Recently Used Templates | 最近用过的模板 + 每次作业结果色块(绿成功红失败,悬停看 job id) |
| Recent Job Runs | 最近执行的作业列表(圆点绿/红示成败),点击进 Job Details |
| 入口 | 含义 |
|---|
| Jobs | 一次 playbook 在某清单上的执行 |
| Templates | 启动 job 的参数模板(≈ 一条保存好的 ansible-playbook 命令) |
| Credentials | 登录受管主机/解 Vault/同步动态清单/拉取 SCM 的认证数据 |
| Projects | 一组相关 playbook 的集合(可从 SCM/本地目录取) |
| Inventories | 受管主机集合 |
| Inventory Scripts | 动态清单脚本(云/CMDB 生成) |
| Organizations | 资源(Team/Project/Inventory)的逻辑分组,RBAC 最高层级,常用于部门隔离 |
| Users / Teams | 用户 / 用户组,均可授予资源角色 |
| Notifications | 通知模板(Email/IRC/HipChat…) |
| Management Jobs | 系统清理作业(清 job history/activity stream 旧数据,控存储/合规) |
| Settings | 设置页(分类见下) |
- Authentication:第三方登录(LDAP、Azure AD、GitHub、Google OAuth2,SUB CATEGORY 切换)。
- Jobs:作业执行高级设置——每用户可建计划任务数、ad hoc 允许的模块、项目更新/job 超时等。
- System:日志聚合、activity stream、杂项。
- User Interface:分析上报、自定义 logo 与登录提示。
- License:查看/安装/升级 license。
- 右上角:账户名(Account Configuration 个人页)、About(版本信息:Tower 版本 + 所用 Ansible 版本)、文档图标(View Documentation)、电源图标(Log Out)。
- 通用控件:面包屑导航(左上,快速回上级页);Activity Stream 图标(页面右上、Logout 旁,看当前页面相关事件与操作人);搜索框 + Key 按钮(看字段语法说明/选项帮助)。
- Demo 配置示例:Demo Inventory(静态清单,1 台 localhost,inventory 变量
ansible_connection: local)→ Demo Credential(machine 凭据)→ Demo Project(从本地目录取 playbook)→ Demo Job Template(Job Type=Run,选 hello_world.yml,跑 Demo Inventory + Demo Credential;因不需要提权且连 localhost,凭据几乎不需要内容)。 - 启动:Templates 列表右侧火箭图标(Start a job)→ 状态页 DETAILS 显示发起人/模板/项目/清单(运行中状态 Pending)→ 输出窗格与 ansible-playbook 输出一致(可排障)→ 完成后 Dashboard 的 Recent Job Runs 出现链接;Jobs 页保留全部历史。
- 对照 CLI:Job Template ≈ 保存的 ansible-playbook 命令;Launch ≈ 从 shell history 重放;Extra Variables ≈
-e/--extra-vars。
- tower-install:准备 Yum 源 → 下载并解压 bundle → 编辑 inventory 设密码 →
./setup.sh → 浏览器首次登录输 license 接受 EULA → 确认 Dashboard 出现。 - tower-webui:admin/redhat 登录 tower → 查看 Demo Project(SCM TYPE/Project base path/playbook directory 字段)→ 看 Demo Inventory(localhost + ansible_connection: local)与 Demo Credential → 打开 Demo Job Template 各字段 → 点火箭启动 → 观察 Job 输出与状态 → Jobs 页复查历史。
| 场景 | 命令/路径 |
|---|
| 下载安装器(在线) | curl -O https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz |
| 下载离线 bundle | curl -O .../setup-bundle/ansible-tower-setup-bundle-latest.el8.tar.gz |
| 解压安装 | tar xzf ansible-tower-setup-bundle-latest.el8.tar.gz → cd ansible-tower-setup-bundle-*/ |
| 设密码 | 编辑 inventory:admin_password / pg_password / rabbitmq_password |
| 执行安装 | ./setup.sh(日志 /var/log/tower/setup-*.log) |
| 组件许可说明 | /usr/share/doc/ansible-tower |
| 访问入口 | https://<tower-host>(admin 首次登录输 license) |
| 实验 | lab tower-install start|finish、lab tower-webui start|finish |
| 英文 | 中文速记 |
|---|
| Ansible Tower | 企业级 Ansible 集中管理平台(Web UI + API + DB) |
| Django web application | Tower 的 Web 框架 |
| PostgreSQL / RabbitMQ | 后端数据库 / 消息系统(v3.0 起去 MongoDB) |
| RBAC | 基于角色的访问控制(最高层级 Organization) |
| job / job template | 作业 / 作业模板(模板≈保存的命令) |
| project | playbook 项目集合 |
| inventory / credential | 清单 / 凭据(加密、只可借用不可见) |
| Dashboard | 总览页(Summary/Job Status/模板/Recent Runs) |
| activity stream | 活动流(事件审计) |
| notifications | 通知(Email/Slack/HipChat/IRC) |
| workflow | 多 playbook 工作流 |
| RESTful API | 暴露 Web UI 全部功能的 API |
| bundled installer | 离线 bundle 安装器(自带 RPM 依赖) |
| setup.sh / inventory 文件 | 安装脚本 / 安装参数(三组密码) |
| license / EULA | 许可与最终用户协议(首次登录输入) |
| remote command execution | 远程 ad hoc 命令执行 |
| management jobs | 系统清理作业 |
- Tower 解决了裸 Ansible 哪四类痛点?对应哪些特性?
- 技术底座三件套(Web 框架/数据库/消息系统)?v3.0 前用什么数据库?
- 四种部署架构及各自适用场景?课程用哪一种?
- 特性速记:RBAC 最高层级是什么?凭据“可借不可看”怎么实现?通知/工作流/API 各解决什么?
- 单机安装内存/磁盘(/var)/fork 三条数字?EC2 建议机型?
- 两种安装器差异?离线环境选哪种?setup.sh 前要编辑 inventory 里的哪三个密码?
- 概念链 project/inventory/credential/template/job 的先后关系?与 ansible-playbook 命令参数如何对应?
- Dashboard 四大板块与左侧导航栏 11+ 入口各是什么?Settings 五个分类?
- 启动一个 job 的完整点击路径?运行中状态显示什么?去哪看历史与排障输出?
- SUMMARY 六条要点复述。