什么时候使用fabric或ansible?

Posted

技术标签:

【中文标题】什么时候使用fabric或ansible?【英文标题】:when to use fabric or ansible? 【发布时间】:2017-01-15 04:07:44 【问题描述】:

概览

我想要可靠的 django 部署,但我认为我没有遵循这里的最佳实践。到目前为止,我一直在使用 Fabric 作为配置管理工具来部署我的 django 站点,但我不确定这是不是最好的方法。

在high performance django 书中有一条警告说:

Fabric 不是配置管理工具。试图将其用作一个 最终会给你带来心痛和痛苦。面料是极好的 在一个或多个远程系统中执行脚本的选择,但这是 只是拼图的一小部分。不要通过建造来重新发明*** 您自己的基于 Fabric 的配置管理系统

所以,我决定要学习 ansible。

问题

以某种方式同时使用 fabric 和 ansible 工具有意义吗? 是否可以使用我的 windows 开发环境中的 ansible 部署到生产 centos(6/7) 服务器? 有一个不错的站点https://galaxy.ansible.com/ 包含很多剧本,有什么好的建议在centos 服务器上部署django 吗?

【问题讨论】:

Fabric 和 Ansible 都以类似的方式启用编排,因此使用两者没有意义,因为 Fabric 将是 Ansible 的子集。第二个问题的答案是肯定的。我不知道第三个,所以我把这个作为评论。 对于问题 2,it's not possible to use a Windows server as the control machine。您可以在本地运行虚拟机,然后从那里使用 ansible。 @Alasdair 我猜 Matt Schuchard 的意思是在 cygwin 上运行 ansible。假设我将在本地使用虚拟机来部署我的东西,这种方法的主要不便之处是什么(我将在 Windows 上开发我的 django 站点)? Fabric 是完全多平台的,这很棒......如果 ansible 不是我用例的最佳选择,还有其他好的配置管理工具推荐吗(开发盒上的 windows 和生产盒上的 centos)? 实际上我认为我假设在 Windows 10 上使用“LINE”(或者可能不使用)。否则,@Alasdair 在第 2 点上可能是正确的。 @MattSchuchard 老实说,我真的很高兴在 Windows 上编写代码,我在那个平台上的工作效率很高,而且我编写代码的速度非常快。但是,当然,在 Windows 上部署这些东西会很痛苦。我用的是windows7,但如果你告诉我升级到windows10会给我带来很多好处,我当然可以考虑 【参考方案1】:

同时使用 fabric 和 ansible 工具有意义吗?

是的。您的所有逻辑都应该存在于 Ansible 中,并且您可以使用 Fabric 作为轻量级包装器。

fab deploy

比例如更容易记住

ansible-playbook -v --inventory=production --tags=app site.yml

是否可以使用我的 windows 开发环境中的 ansible 部署到生产 centos(6/7) 服务器?

听起来你做不到。或者,如果您使用 Fabric,它可以将您的 ansible playbook 复制到服务器(或直接从 git 拉取)并从那里运行 ansible。

【讨论】:

感谢您的回答 +1。在验证你的好答案之前,你知道我在哪里可以找到如何直接在服务器上运行 ansible 剧本?我认为这只能通过 linux 控制机器实现。如果是这样的话,这听起来像是一个合理的好工作流程,fabric+ansible,不错的组合! :) 只需将您的一台 Linux 服务器设为“控制机器”即可。它可以同时运行 Ansible 和由 Ansible 配置。 Fabric wrap-up SSH 到那台机器(从你的 Windows 机器)并运行 playbook。 非常感谢!这周我会试一试这种方法;-) 我看不到面料部分的重点。这比 ansible 命令的 bash 别名更好吗? @wobbily_col 更便携、更易于共享、更易于编写更复杂的脚本等。不过,这些可能并非在所有情况下都很重要。

以上是关于什么时候使用fabric或ansible?的主要内容,如果未能解决你的问题,请参考以下文章

Fabric vs Plumbum:差异,用例,优点和缺点

使用Fabric 和 Ansible自动化部署Django

python自动化管理Ansible(Ansible,Fabric,hosts)

ansible基本使用

批量运维管理工具之Ansible

ansible-02