Ansible自动化(六) 聊一聊Ansible⾃动化控制器
1 | 作者:李晓辉 |
在 RHAAP2 中引入的自动化执行环境让自动化控制器能够将控制面板和执行环境分开,带来了很大的灵活性。
在 Red Hat Ansible Tower 3.8 及之前的版本里,执行环境和运行 Ansible Tower 的系统是紧密绑定的。这样一来,管理不同 playbook 所需的模块和依赖就变得有些麻烦了。如果两个 playbook 需要不同的环境,那就得在 Ansible Tower 上为每个环境创建多个 Python 虚拟环境,结果很多公司可能会有成百上千个这样的虚拟环境。
但有了自动化控制器,这一切变得简单多了。控制器不再依赖系统上的可执行文件和 Python 安装,而是使用自动化执行环境。这些环境是容器镜像,你可以从中央容器仓库拉取它们,安装到自动化控制器中,然后通过 Web UI 管理。如果需要,还可以创建自定义的执行环境。
Ansible自动化控制器简介
Ansible 自动化控制器(以前叫 Ansible Tower)是 Ansible 自动化平台的一部分,专门为了简化和管理自动化任务而设计的。它提供了一个功能强大的 Web 用户界面和 API,帮助团队更高效地执行和监控 Ansible Playbook。同时,它也支持企业级的安全性和可扩展性,确保大规模自动化任务的顺利运行。
核心功能
集中化管理:提供一个中心化的操作界面,用于管理Playbook、清单(Inventory)和凭证(Credentials)。
可视化与监控:通过直观的仪表盘查看任务状态和执行历史,实时跟踪自动化流程。
权限控制:支持基于角色的访问控制(RBAC),确保团队成员只接触与其职责相关的资源。
工作流自动化:可以编排复杂的多任务工作流,实现任务的自动化联动。
调度与日志:支持任务调度和详细日志记录,便于审计与问题排查。
可扩展性:通过API集成第三方系统,打造端到端的自动化解决方案。
主要优势
团队协作:简化了不同团队间的协同工作,从开发到运维无缝衔接。
效率提升:减少手动操作,通过自动化提升生产力。
安全合规:支持安全凭证存储和详细的审计功能,符合企业合规需求。
跨平台能力:支持在不同系统和环境中执行自动化任务,包括云平台和本地服务器。
Tower架构与⾃动化控制器的对比
架构层面
Ansible Tower:
初始版本是一个独立的自动化管理解决方案,采用多层架构,包括Web界面、API层和后端数据库。
使用Django框架构建。
依赖于RabbitMQ作为任务队列管理,任务调度和任务分发由内部机制完成。
Ansible自动化控制器:
作为Ansible自动化平台的一部分,融合了更现代的容器化和微服务架构。
支持Kubernetes或OpenShift环境进行部署,增强了扩展性和弹性。
依托PostgreSQL数据库,任务队列管理逐渐转向更现代化的解决方案。
集成了执行环境(Execution Environment),支持容器化运行Playbook。
功能层面
Ansible Tower:
提供直观的Web界面用于Playbook执行、清单和凭证管理。
支持基本的任务调度与监控。
包含基于角色的访问控制(RBAC)功能,适合团队协作。
提供简单的API用于第三方集成。
Ansible自动化控制器:
在保留Tower核心功能的基础上,新增了执行环境管理功能,确保一致性和可移植性。
支持工作流(Workflow)嵌套及复杂任务依赖的管理。
更高效的RBAC控制,细化权限分配。
提供增强的API和更深入的事件审计功能,支持企业级使用场景。
与Ansible Navigator无缝集成,提升开发和测试效率。
使用体验
Ansible Tower:
易于使用,但在大型集成场景中显得局限,尤其在高并发任务和大规模部署中。
执行环境依赖于本地配置,管理模块和依赖项较复杂。
Ansible自动化控制器:
提供容器化执行环境,降低了本地依赖配置的复杂性。
更适合现代企业分布式环境,支持跨云、多节点的自动化任务执行。
工作流程设计与任务执行更高效,用户体验更加流畅。
来看一下 Ansible Tower 3.8 的架构吧:
这种架构有几个问题:
- 它是一个集中式的单体应用。
- 控制节点同时承担了控制平面和执行平面的功能。
- 这种架构比较僵化,导致扩展性不够强。
现在看看自动化控制器的架构:
这种架构有几个显著的优势:
- 它是一个分散式、模块化的应用。
- 控制平面和执行平面分开了。
- 使用容器化的虚拟环境。
- 通过容器编排器,可以按需扩展。
这种设计使得自动化控制器能够在控制器系统上运行控制平面(带有 Web UI 和 API),而把自动化执行环境放在更接近受管系统的其他计算机上,这样不仅提高了效率,也增强了扩展性。
⾃动化控制器功能
可视化控制面板
自动化控制器的 Web UI 提供了一个清晰的控制面板,帮助你轻松查看主机和清单的当前状态,执行任务,并查看最近的任务执行结果。
RBAC(基于角色的访问控制)
可以将用户的访问权限分配到自动化控制器中的各个对象,如组织、项目和清单等,确保每个人只能访问其权限范围内的内容。
图形化清单管理
通过 Web UI,可以方便地向清单中添加主机组和主机,还能从外部源(如云服务或 Git)更新清单。
任务管理和作业调度
支持调度 Playbook 执行,并根据需要从外部数据源更新。这样,你的日常任务就能自动化运行,不需要人工值守。
实时与历史作业状态报告
Web UI 会实时显示 Playbook 的输出和执行结果,且能回溯查看历史作业的执行情况。
用户触发的自动化
具有权限的用户只需点击一下按钮,即可启动作业模板或工作流模板,轻松触发自动化任务。
凭据管理
集中管理身份验证凭据,可以在运行 Playbook 时引用,且自动化控制器会加密保存密码或密钥,保障安全。
集中式日志记录与审计
所有的 Playbook 执行和远程命令都会被记录下来,你也可以将日志集成到第三方日志聚合系统中,进行统一管理。
集成式通知
在任务执行开始时,会自动发送通知,告知执行的成功与否,帮助你实时跟进。
多 Playbook 工作流
复杂操作通常需要连续执行多个 Playbook。自动化控制器支持将多个 Playbook 串联起来,形成工作流,帮助完成更复杂的操作,如调度、配置、部署等。直观的工作流编辑器也使得构建多 Playbook 流程变得更简单。
可浏览的 RESTful API
自动化控制器提供了可通过 Web UI 使用的功能的 RESTful API,并且其浏览功能让 API 自带文档,使用起来更方便。