如何从本地 VirtualBox / Vagrant 开发环境部署到生产环境?

     2023-03-04     203

关键词:

【中文标题】如何从本地 VirtualBox / Vagrant 开发环境部署到生产环境?【英文标题】:How is deployment to Production done from local VirtualBox / Vagrant development environment? 【发布时间】:2014-08-02 18:04:51 【问题描述】:

最近我开始阅读有关使用虚拟化软件构建开发环境的文章(我是初学者),似乎“基础设施即代码”是一个非常强大的概念。

我真的很喜欢here 描述的工作流结构:

    团队使用相同的基本 VirtualBox 映像 Vagrant 用于借助 Chef(或 Puppet)食谱,这是唯一需要置于版本控制之下的代码。

但是,我仍然不太了解代码是如何传输和部署在生产服务器上的。

据我了解,保持 DEV 和 PROD 环境相同的常用方法是将生产服务器实例作为另一个要使用 Chef 配置的虚拟映像来管理。我可以在生产服务器上安装与我(和团队)每天使用 VirtualBox-Vagrant-Chef 完全相同的操作系统。

但生产服务器的硬件可能与虚拟客户操作系统中的硬件不同,这可能会再次导致不一致。

那么,问题来了:

将代码从使用 VirtualBox-Vagrant-Chef 工具链管理的开发环境传输和部署到生产服务器的已知和常见最佳实践是什么?这种做法是否允许任何持续部署?

[编辑]:注意:是否有在生产服务器上运行使用 Chef/Vagrant 配置的相同 VM 实例的任何做法,就像在此 diagram 中描述的那样?

【问题讨论】:

就我而言,我选择在 dev 和 prod 中使用相同的 Linux 发行版,并且我还使用 Chef 管理生产服务器。这样我就可以确定在两种环境中都可以使用相同版本的 apache、db 等。出于这个原因,我在 AWS 中使用 Ubuntu 而不是 Amazon Linux。 Daniel,您的开发人员是物理机还是虚拟机?另外,您能否详细说明一下 Ubuntu-AWS 与 Amazon Linux? Dev 位于我使用 Vagrant(在 VirtualBox 之上)运行并使用 Chef Solo 进行配置的 VM 中,但它可能是物理服务器。它没有太大区别。如果我推荐 Ubuntu,是因为这样你可以在 Vagrant 和 AWS 中拥有完全相同的操作系统;这样,您就不必使您的 Cookbook 适应两个不同的操作系统。这只是优化你的时间的问题。 Linux AMI 是 Red Had 家族,但软件包与 Centos 中的不同。顺便说一句,如果您想学习 Chef,请为自己的辛勤工作做好准备。找到好的文档并不容易。 packer.io 可能与此处相关。 【参考方案1】:

在 Puppet 的情况下(厨师很可能也可以这样做),您可以构建清单(食谱),使其在您的流浪环境中表现不同,例如

if $::virtual != "virtualbox"  # not in vagrant
    include sysctl_tuning

在这种情况下,关于持续交付的问题有点过于宽泛了。我认为答案是“是”,因为它值得。

【讨论】:

Felix,我更感兴趣的是以“适当”的方式使用 Chef/Puppet+Vagrant 的所有优点,即从一开始就避免使用不同的平台。 意味着你将把你的生产转移到 Vagrant?那是......“有趣”可以肯定;-)【参考方案2】:

我是你链接的文章的作者,所以我的 0.02

如果我正确理解了您的问题,您不会将 vm 从 dev 转移到生产,而是创建一个可重复的过程,允许您一遍又一遍地创建相同的最终状态(OS + config + app),无论如何目的地在哪里。

通过使用 vagrant,您可以保证您的开发人员使用与生产服务器相同的操作系统,无论他们使用什么操作系统进行开发。

使用 Puppet/Chef 可以保证操作系统的配置是相同的,无论它是在带有 Vagrant 的 vm、生产中的 vm、云 vm 还是裸机硬件中运行。它不需要是虚拟的。

【讨论】:

很抱歉写了这么老的帖子,但我想了解一些东西。如果我理解您的说法正确,您不会使用代码部署您的虚拟机,您只需使用 vagrant 在任何地方复制同一个框。当你想更新你的应用程序时,从技术上讲,你不需要刷新你的盒子,只需使用 GIT 或 wathever VCS 更新你的代码。代码使用盒子来确保相同的环境,但盒子不会被部署一次,然后你只需使用 GIT 更新你的代码库。对吗?

VirtualBox:如何从主机访问 VM 上的虚拟主机?

】VirtualBox:如何从主机访问VM上的虚拟主机?【英文标题】:VirtualBox:HowtoaccessvirtualhostonVMfromhost?【发布时间】:2016-07-2302:45:58【问题描述】:如何从主机访问在虚拟机上创建的Apache虚拟域。VirtualBox上的虚拟机设置:VirtualBox上的... 查看详情

如何使用virtualbox虚拟机

...用.将已安装好的虚拟系统镜像XXX.vdi文件copy到本地.打开VirtualBox管理器.选择"新建"->Next->输入虚拟电脑的名称,该名称将会在VirtualBox管理器的左边显示.选择好操作系统的类型和版本.->给虚拟电脑分配内存.默认是512M,可以修... 查看详情

如何从 vagrant virtualbox 机器连接主机 PostgreSQL

】如何从vagrantvirtualbox机器连接主机PostgreSQL【英文标题】:HowtoconnectwithhostPostgreSQLfromvagrantvirtualboxmachine【发布时间】:2013-11-2420:38:33【问题描述】:我有一台在MacOSX主机上运行Ubuntu12.04的VirtualBox机器。在我的主机(MacOSX)中,... 查看详情

如何从另一个 virtualbox 来宾访问 vagrant 来宾?

】如何从另一个virtualbox来宾访问vagrant来宾?【英文标题】:HowcanIaccessavagrantguestfromanothervirtualboxguest?【发布时间】:2015-02-0901:37:15【问题描述】:场景是我的开发环境在我的笔记本电脑(主机)上的Vagrant盒子上,我想在vitualboxv... 查看详情

如何通过主机从外部通过 SSH 连接到 VirtualBox 来宾? [关闭]

】如何通过主机从外部通过SSH连接到VirtualBox来宾?[关闭]【英文标题】:HowtoSSHtoaVirtualBoxguestexternallythroughahost?[closed]【发布时间】:2011-08-1920:54:17【问题描述】:我有一个在我的Windows7机器上运行的Ubuntu虚拟机。如何设置它以便... 查看详情

如何从安装在 Ubuntu 18.04 VirtualBox 上的 Wordpress Web 界面写入/上传

】如何从安装在Ubuntu18.04VirtualBox上的WordpressWeb界面写入/上传【英文标题】:HowtoWrite/UploadfromWordpressWebInterfaceInstalledonUbuntu18.04VirtualBox【发布时间】:2019-06-1815:59:27【问题描述】:主机:Windows1064bitVirtualBox:Ubuntu18.04Apache2.4、MySQL5.... 查看详情

如何从 Docker 容器中的 python 脚本连接到 Ubuntu 上的本地 SQL 服务器

...题描述】:我在Ubuntu20.04中安装了一个SQLServer(它安装在VirtualBox中)和一个带有python脚本的Docker容 查看详情

从 VirtualBox 访问时 Webpack-Dev-Server 抛出错误

】从VirtualBox访问时Webpack-Dev-Server抛出错误【英文标题】:Webpack-Dev-ServerThrowingErrorwhenAccessedfromVirtualBox【发布时间】:2016-09-0713:43:21【问题描述】:我正在尝试在我的Mac中使用VirtualBox测试我的网站对InternetExplorer11的兼容性。我使... 查看详情

sh通过飞轮virtualbox图像调整本地大小(代码片段)

查看详情

sh通过飞轮virtualbox图像调整本地大小(代码片段)

查看详情

sh通过飞轮virtualbox图像调整本地大小(代码片段)

查看详情

如何在 VirtualBox 上 ping ubuntu 来宾 [关闭]

】如何在VirtualBox上pingubuntu来宾[关闭]【英文标题】:HowtopingubuntuguestonVirtualBox[closed]【发布时间】:2012-06-2600:40:34【问题描述】:我有一个带有Ubuntu的虚拟机(VirtualBox)。主机是Windows7。如何从主机ping我的Ubuntu,反之亦然?尝试... 查看详情

markdown在virtualbox和本地docker注册表上使用minikube在macos上设置本地kubernetes(代码片段)

查看详情

markdown在virtualbox和本地docker注册表上使用minikube在macos上设置本地kubernetes(代码片段)

查看详情

从 VMWARE 迁移到 VirtualBox [关闭]

】从VMWARE迁移到VirtualBox[关闭]【英文标题】:MigratingfromVMWAREtoVirtualBox[closed]【发布时间】:2011-10-2002:59:53【问题描述】:我正在尝试将现有VM从VMWARE迁移到VirtualBox。我已经为虚拟机制作了虚拟机文件夹的副本(这样我就可以试验... 查看详情

virtualbox(hostonly)和vmware共用同一虚拟网卡(代码片段)

VirtualBox和VMware共用同一虚拟网卡背景描述配置步骤配置VirtualBox上的靶机配置VMware软件配置VMware上的Kali背景描述最近学渗透的时候需要从VulnHub下载靶机到本地玩,而且VulnHub的靶机大多数只能在VirtualBox或者VMware这两种虚拟机... 查看详情

virtualbox如何实现主机与虚拟机间的复制粘贴?

...共享空间里传东西 参考技术B以为你曾经实现过。。。。VirtualBox目前还不行 参考技术C增强包是否安装正确?怎么安装的? 查看详情

virtualbox局域网问题

...apter,似乎需要在宿主Windows系统的“本地连接”里,将“VirtualBoxBridgedNetworkingDriver”选中。以下,我写的VirtualBox4.1.6安装Fedora16,搭建LAMP环境,如有问题欢迎指出。追问windowsserver2003主机是XPSP3+WIN7本地连接属性里的VirtualBoxBridgedN... 查看详情