从repo和Ansible部署代码的最佳方法是什么?

时间:2015-10-07 11:01:33

标签: git deployment ansible devops

对于我们的电子商务网站,我使用Ansible的以下部署过程:

  • 将资源从存储库拉到远程计算机
  • 此存储库的符号链接到/var/www/mysite/current
  • 配置文件的符号链接

但我不确定这是部署代码的最佳方式,因为我们可以在遥控器上安装所有不需要的文件。

所以我想知道它是否会更好:

  • 将代码拉入本地(例如在tmp中)
  • 进行存档并直接在/var/www/mysite/release/xxxxxxx
  • 中将存档上传到遥控器
  • 发布到当前的符号链接
你怎么看?有没有办法用Ansible做到这一点?

谢谢。

1 个答案:

答案 0 :(得分:1)

在不了解部署环境的所有复杂性的情况下,是否可以获得“最佳”答案是一个棘手的问题。话虽如此,我会根据您所说的内容考虑几件事情:

为什么要将整个仓库部署成问题?

您是否存储了不以任何方式与您的代码交互的大型二进制文件?您可能希望考虑将它们拆分到另一个存储库,或者以不同的方式管理它们(例如,大型磁盘映像可以由构建系统提供,而不是保存在git中)。具有这些其他组件的子模块也可能是一种有用的方法,因为如果需要,可以在不拉入子模块的情况下克隆存储库。

或者git repo的大历史是否导致克隆变大?在这种情况下,你可以做一个浅层克隆,Ansible的git模块支持。

存档和复制

这听起来像是一个比它需要的更复杂的解决方案。

据推测,这将涉及保留您希望在Ansible仓库中删除的文件列表(增加Ansible代码和目标部署仓库的耦合),将本地克隆协调为临时文件,删除文件,执行归档,执行远程转移,远程取消归档。

这与简单地调用Ansible git子模块形成对比。

我讨厌在不需要的地方添加更多复杂性。我的目标是最简单的方法。