最近我在看 Ansible,想在项目中使用它。还有另一个工具 Rundeck 可以用来做各种操作工作。我没有使用这两种工具的经验,这是我目前对它们的理解:
相似点
这两个工具都是无代理的,并且使用 SSH 在远程服务器上执行命令
Rundeck的主要概念是Node,和Ansible的inventory一样,关键思想是定义/管理/分组目标服务器
- 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 进行 CI 构建持续交付管道,使用哪个工具(Ansible/Rundeck)进行部署是一个更好的主意?
- 如果它们可以一起使用,最佳做法是什么?
非常感谢任何建议和经验分享。