最近我开始阅读有关使用虚拟化软件构建开发环境(我是初学者)的看法,并且“基础架构作为代码”似乎是一个非常强大的概念 .
我非常喜欢描述here的工作流程结构:
-
团队周围使用相同的基础VirtualBox图像
-
Vagrant用于快速'build up'和'provision'这样的图像到所需的配置借助于
-
Chef(或Puppet)食谱,这是唯一需要置于版本控制之下的代码片段 .
但是,我仍然不太明白如何在 生产环境 服务器上传输和部署代码 .
据我所知,保持DEV和PROD环境相同的常用方法是将Production服务器实例管理为另一个要使用Chef配置的虚拟映像 . 我可以在Production服务器上安装完全相同的操作系统,因为我(和团队)每天都使用VirtualBox-Vagrant-Chef .
但是, 生产环境 服务器可能具有与虚拟客户机操作系统中的硬件不同的硬件,这可能会再次导致不一致 .
So, here is the question:
从使用VirtualBox-Vagrant-Chef工具链管理的开发环境向 生产环境 服务器传输和部署代码的已知和常见最佳做法是什么?这种做法是否允许任何持续部署?
[编辑]:注意:是否有任何操作在 生产环境 服务器上运行与Chef / Vagrant配置的相同VM实例,就像在diagram上描述的那样?
2 回答
我是你链接的文章的作者,所以我的0.02
如果我正确理解了您的问题,您不会将vms从dev移动到 生产环境 ,您可以创建一个可重复的过程,允许您一次又一次地创建相同的结束状态(OS配置应用程序),无论目标位于何处 .
通过使用vagrant,您可以保证您的开发人员使用与 生产环境 服务器使用相同的操作系统,无论他们使用哪种操作系统进行开发 .
使用Puppet / Chef可以保证操作系统的配置相同,无论它是在带有Vagrant的vm, 生产环境 中的虚拟机, Cloud 虚拟机还是裸机硬件中运行 . 它不需要是虚拟的 .
对于Puppet(Chef也很可能也这样做),你可以 Build 清单(配方),使它们在你的流浪环境中表现不同,例如:
在这种情况下,关于持续交付的问题有点过于宽泛 . 我认为答案将是“是”,因为它的 Value .