让Ansible和Rundeck一起工作是一个好主意,还是使用任何一个就足够了?

shi*_*zhz 43 jenkins continuous-delivery ansible rundeck devops

最近我在看Ansible,并希望在项目中使用它.还有另一个工具Rundeck可以用来做各种操作工作.我对这两种工具都没有经验,这是我目前对它们的理解:

类似的观点

  • 这两个工具都是无代理的,并使用SSH在远程服务器上执行命令

  • Rundeck的主要概念是Node,与Ansible的库存相同,关键思想是定义/管理/分组目标服务器

  • Rundeck可以在选定的节点上执行ad-hoc命令,Ansible也可以非常方便地执行此操作.
  • Rundeck可以定义工作流并在选定的节点上执行,这可以通过编写playbook来使用Ansible完成
  • Rundeck可以与Jenkins等CI工具集成进行部署工作,我们也可以定义一个Jenkins作业来运行ansible-playbook来进行部署工作

不同点

  • Rundeck有Job的概念,Ansible没有

  • Rundeck有Job Scheduler,Ansible只能通过Jenkins或Cron任务等其他工具实现这一点

  • 默认情况下,Rundeck免费提供Web UI,但您必须支付Ansible Tower的费用

似乎Ansible和Rundeck都可用于执行配置/管理/部署工作,可能以不同的方式.所以我的问题是:

  • 这两种补充工具是否设计用于不同目的?如果它们是补充工具,为什么Ansibl只与Chef/Puppet/Slat等工具相比而不与Rundeck相比?如果他们不是为什么他们有这么多相似的功能?
  • 我们已经在使用Jenkins for CI,构建一个Continuous-Delivery管道,哪个工具(Ansible/Rundeck)更适合用于部署?
  • 如果它们可以一起使用,那么最佳做法是什么?

非常感谢任何建议和经验分享.

otu*_*man 38

TL; DR - 考虑到你的CI/CD的Jenkins环境我建议只使用Ansible.

您已经发现Ansible和Rundeck之间存在相当大的交叉,因此最好将注意力集中在每个产品的重点,风格和用途上.

焦点

我相信Rundeck的重点是使系统管理员能够构建一个(基于Web的)自助服务门户,该门户可供其他系统管理员访问,并且可能更少"技术"/系统管理员.Rundeck的网站上写着" 将您的运营程序转变为自助服务工作.安全地为他人提供所需的控制和可视性. " Rundeck也觉得它对世界有一个更"集中"的观点:你将作业加载到数据库中,这就是他们居住的地方.

对我而言,Ansible适用于devops - 因此构建和自动部署(自建)应用程序的方式使其具有高度可重复性.我认为Ansible更专注于构建自己产品的软件开发公司:Ansible'playbooks'是文本文件,因此通常存储在源代码控制中,通常与Playbooks将部署的应用程序一起存储.

创造就业机会

使用Rundeck,您通常可以通过Web UI创建作业.

使用Ansible,您可以通过文本编辑器在文件中创建任务/剧本.

操作/任务/工作方式

默认情况下Rundeck是必不可少的 - 您编写执行的脚本(通过SSH).

Ansible既是命令式的(即执行bash语句),也是声明性的,所以在某些情况下,比如说,启动Apache你可以使用该service任务来确保它正在运行.这更接近其他配置管理工具,如Puppet和Chef.

复杂的工作/脚本

Rundeck能够通过在Job的工作流程中定义一个步骤来运行另一个工作,但从经验来看,这感觉就像是一个附加功能,而不是一个严肃的顶级功能.

Ansible旨在创建复杂的操作; running/includes/etc是顶级功能.

它是如何运行的

Rundeck是一个服务器应用程序.如果您想从其他地方(如CI)运行作业,您需要调用cli或进行API调用.

Straight Ansible是命令行.

条件

由于Rundeck Ansible 的交叉和整体灵活性,您可以在每个中实现上述所有功能.您可以通过将Rundeck作业导出到YAML或XML并将其检入源代码管理来实现对Rundeck作业的版本控制.您可以使用Tower在Ansible中获取Web UI.等等

你的问题:

补充工具?

我可以设想使用两者的SaaS商店:可以使用Ansible执行所有部署操作,然后使用Rundeck执行一次性的即席作业.

然而,虽然我可以想象它,但我不建议作为一个起点.我,我从Ansible开始,看看我有多远.如果我发现我确实需要一次性运行,我只会在Rundeck中进行分层.

CI/CD

Ansible:您的环境听起来更像是一个软件公司,您正在部署自己的应用程序.它可能应该是可重复的(特别是当您进行持续交付时),因此您需要在源代码管理中部署脚本.你会想要简单,Ansible就是"只是文本文件".我希望你也希望你的开发人员能够在他们的机器上运行东西(对吗?),Ansible是分散的.

一起使用(用于CI/CD)

从Ansible打电话给Rundeck,没有.当然,这是可能的,但我很难找到合理的理由.至少,不是非常专业的特定应用程序或框架原因.

从Rundeck调用Ansible,是的.我可以设想有人首先在Ansible中构建一些可重复的adhoc命令.然后我可以看到有一点需要能够在没有命令行的情况下调用它(例如:非技术用户).但是,这又是针对您的环境的.

  • 以下是从 Rundeck 运行 Ansible 的一些重要原因: (1) 部署的日志历史记录——当出现问题时,您可以返回并查看日志,或者仅查看实际部署的内容。(2) 开发人员、经理和其他利益相关者可以在自己的应用程序层上拥有部署。(3)使用方便。(4) 它实际上运行在 Ansible 无法运行的 Windows 机器上。 (2认同)

小智 5

我的观点 - rundeck 和 ansible(免费,没有塔)做不同类型的工作

  1. Ansible(无塔) - 配置管理(服务器/应用程序供应,大量配置更新)

  2. Rundeck - 具有访问控制、通知、作业输出等功能的集中式作业调度程序(存档旧日志,运行一些脚本等)


ARL*_*ARL 5

在问这个问题时,作者正确地指出 Ansible 仅提供收费的 UI。

UI现已开源:AWX