0

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

  • 从存储库中拉取源到远程机器
  • 到此存储库的符号链接到/var/www/mysite/current
  • 配置文件的符号链接

但我不确定这是部署代码的最佳方式,因为我们可以在远程拥有所有不需要的文件的 repo。

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

  • 在本地提取代码(例如在 tmp 中)
  • 制作存档并将存档直接上传到远程/var/www/mysite/release/xxxxxxx
  • 发布到当前的符号链接

你怎么看?有没有办法用 Ansible 做到这一点?

谢谢你。

4

1 回答 1

1

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

为什么部署整个 repo 是个问题?

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

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

存档和复制

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

大概这将涉及在 Ansible 存储库中保留要删除的文件列表(增加 Ansible 代码和目标部署的存储库的耦合),将本地克隆协调到临时文件中,删除文件,执行存档,执行远程传输,进行远程解档。

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

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

于 2015-10-08T18:54:07.333 回答