使用 Ansible 可以实现这个吗?

使用 Ansible 可以实现这个吗?

我正在尝试组建一个 Ansible 环境来完成以下任务......

  • Ansible 剧本的提供商版本控制
  • 自动将已批准的拉取请求推送到镜像服务器
  • Ansible 服务器通过镜像(即代理)运行 playbook,以便在托管节点上执行

这种特殊设置的原因...

  1. 镜像已具有访问所有托管节点的权限
  2. 镜像上已批准的剧本将是只读的,以不允许执行它们的人更改它们

我知道有 Ansible Tower(或 AWX),但我试图通过仅建立具有 Ansible 功能的 Linux 服务器来完成此设置。至于我的问题...

  1. 是否可以通过代理运行剧本?
  2. 如果是这样,有没有关于如何实现这一点的好参考资料?

谢谢你!

Ansible 环境概念验证

答案1

Ansible Engine 本身(来自 ansible 包的 ansible-playbook)提供了一种远程访问主机并在其上运行模块的方法。就是这样,核心工具没有 API。添加更多功能(如批准或基于角色的访问控制)意味着在顶部添加组件。可能利用您可能已经使用的工具。

ansible-runner是支持 AWX 的 Ansible API,被抽象成一个库,并且容器镜像。考虑用它来编写 Ansible 脚本。如果你想知道为什么没有官方的 ansible 容器镜像,这就是了。

一个相对简单的例子就是运行 ansible-playbook。剧本开发通过任何协作变更控制流程获得批准。然后有人手动登录堡垒/管理主机,从版本控制中获取已批准的剧本,并运行该确切标签。很简单,不需要设置额外的组件。但缺乏对具体运行什么的严格控制。让剧本对运行它们的人来说不可变并不容易,仍然需要信任这个人。

面向版本控制的持续交付管道可以满足您的工作流程。像 GitLab 这样的功能齐全的 forge 可能需要批准才能合并请求。批准后,生成的剧本会自动在具有 ansible-runner 的管道工作器上运行。工作器是通过 ssh 远程进入环境主机的。强控制确保运行的是批准的版本。但是,这种管道样式针对开发人员体验进行了优化,可能不适用于同一事物的计划运行。

任何可以运行任意脚本的 ops 工具都可以运行剧本。Rundeck 或 Jenkins 可能不是功能齐全的开发中心,但在触发器上运行事物是它们的核心竞争力。再次考虑将 ansible-runner 作为执行 Ansible 的环境。

还有 Ansible 特定的 Web 界面,主要是 AWX 或信号。AWX 相当复杂,它能为任何规模的企业完成所有 Ansible 事务。Semaphore 稍微简单一些。Ansible 专用可能是一个优势。但它们绝不是终端上交互式 Ansible 的唯一替代品。您的组织可能更喜欢其他工具来开发、批准和运行事物。

相关内容