对于我们的电子商务网站,我使用Ansible的以下部署过程:
/var/www/mysite/current
但我不确定这是部署代码的最佳方式,因为我们可以在遥控器上安装所有不需要的文件。
所以我想知道它是否会更好:
/var/www/mysite/release/xxxxxxx
谢谢。
答案 0 :(得分:1)
在不了解部署环境的所有复杂性的情况下,是否可以获得“最佳”答案是一个棘手的问题。话虽如此,我会根据您所说的内容考虑几件事情:
为什么要将整个仓库部署成问题?
您是否存储了不以任何方式与您的代码交互的大型二进制文件?您可能希望考虑将它们拆分到另一个存储库,或者以不同的方式管理它们(例如,大型磁盘映像可以由构建系统提供,而不是保存在git中)。具有这些其他组件的子模块也可能是一种有用的方法,因为如果需要,可以在不拉入子模块的情况下克隆存储库。
或者git repo的大历史是否导致克隆变大?在这种情况下,你可以做一个浅层克隆,Ansible的git模块支持。
存档和复制
这听起来像是一个比它需要的更复杂的解决方案。
据推测,这将涉及保留您希望在Ansible仓库中删除的文件列表(增加Ansible代码和目标部署仓库的耦合),将本地克隆协调为临时文件,删除文件,执行归档,执行远程转移,远程取消归档。
这与简单地调用Ansible git
子模块形成对比。
我讨厌在不需要的地方添加更多复杂性。我的目标是最简单的方法。