最近我开始阅读有关使用虚拟化软件构建开发环境(我是初学者)的看法,并且"基础架构作为代码"似乎是一个非常强大的概念.
我非常喜欢这里描述的工作流程结构:
团队周围使用相同的基础VirtualBox图像
Vagrant用于在帮助下快速"建立"并"提供"这样的图像到所需的配置
Chef(或Puppet)食谱,这是唯一需要置于版本控制之下的代码.
但是,我仍然不太明白如何在生产服务器上传输和部署代码.
据我所知,保持DEV和PROD环境相同的常用方法是将Production服务器实例管理为另一个要使用Chef配置的虚拟映像.我可以在Production服务器上安装完全相同的操作系统,因为我(和团队)每天都使用VirtualBox-Vagrant-Chef.
但是,生产服务器可能具有与虚拟客户机操作系统中的硬件不同的硬件,这可能会再次导致不一致.
所以,这是一个问题:
从使用VirtualBox-Vagrant-Chef工具链管理的开发环境向生产服务器传输和部署代码的已知和常见最佳做法是什么?这种做法是否允许任何持续部署?
[编辑]:注意:是否有任何在生产服务器上运行与Chef/Vagrant配置相同的VM实例的做法,如此图所示?
我是你链接的文章的作者,所以我的0.02
如果我正确理解了你的问题,你就不会将vms从开发转移到生产,你创建了一个可重复的过程,允许你一遍又一遍地创建相同的结束状态(OS + config + app),无论目的地在哪里是.
通过使用vagrant,您可以保证您的开发人员使用与生产服务器使用相同的操作系统,无论他们使用哪种操作系统进行开发.
使用Puppet/Chef可以保证操作系统的配置相同,无论它是在带有Vagrant的vm,生产中的虚拟机,云虚拟机还是裸机硬件中运行.它不需要是虚拟的.