每当我们转到一个新项目时,或者想探索新的技术堆栈时,都可以使用。 我们面临环境问题。 作为开发人员,我们通常倾向于在本地环境中安装所有内容。 多次证明是一场灾难。
如今,现代Web应用程序涉及很多活动部件,众多底层技术和很多复杂性。 要谈论语言,我们有JS,python,Ruby,Java,Scala,Closure等。
对于数据库,有MySQL,PostgreSQL,Redis,Cassandra,MongoDB等。并且有多个Web服务器,后端服务器,应用程序服务器和服务,每个都有各自的用例(例如Apache,Unicorn,Nginx,RabbitMQ,Solr等)。
安装和卸载所有这些技术; 在一个本地系统上手动组合它们的组合和不同版本可能是一项非常繁琐的工作。
这种方法的另一个问题是,每个开发人员都会以自己的方式进行操作,因此,著名的“在我的系统上工作”的借口会时不时地出现,因为进行QA测试的系统在某些配置上可能会有所不同。
因此,更好的方法是使用“基础结构即代码”的概念,以自动化的方式在虚拟机上安装和配置所有内容,其中我们创建基础结构的蓝图,该蓝图可用于自动创建相同的环境。
因此,我们如何创建虚拟机,如何配置虚拟机,SSH,网络配置,主机名等。
这就是Vagrant出现的地方。 Vagrant是用于在虚拟机中构建沙箱环境的工具。 Vagrant鼓励使用Shell脚本或配置管理软件(例如Chef,Puppet等)来创建环境。
Vagrant允许您使用与生产环境或QA中运行的操作系统相同的功能,而与您的物理计算机所运行的操作系统无关。 这是可能的,因为Vagrant将您的开发环境放入虚拟机中。 这样您就可以从事不同的项目; 不同的环境和不同的团队可以轻松无忧。 此外,加入新的团队成员变得非常容易和快捷。
Vagrant是某些虚拟化解决方案之上的一层; 在一个命令中执行以下操作:
- 根据您选择的操作系统创建虚拟机。
- 修改物理属性,例如虚拟机的RAM,CPU。
- 管理和建立访问虚拟机的网络接口。
- 在主机和虚拟机之间设置共享文件夹。
- 引导虚拟机,设置主机名和其他属性。
- 可以与厨师和木偶之类的预配软件结合使用。
因此,基本上,vagrant可以为您处理机器的整个生命周期。
此外,它还可以
- SSH进入机器
- 关闭机器,销毁机器并完全删除所有节日
- 暂停/恢复
- 打包计算机状态,以便您可以将其分发给其他开发人员(基础结构为代码)
安装
Vagrant可在Linux,Mac OSX和Windows上运行。 我们可以根据操作系统的选择从此处下载安装程序。 完整的文档可以在这里找到。 或者要在ubuntu上进行更详细的安装,请在此处参考我的博客。
云
另一种方法是完全放弃桌面虚拟化,并直接在云中(例如在EC2上)进行开发。 这种方法的主要好处是,它使开发人员可以在与生产环境非常相似的环境中使用功率低得难以置信的台式机工作。 这里的主要缺点是这种方法需要Internet连接,并且与之相关的财务成本更高。 因此,对于实验和开发环境,云计算可能是非常昂贵的解决方案。
如果您使用的是Vagrant,则将使用一些自动化脚本或Chef / Puppet进行配置,因此将该环境复制到其他开发机或QA或生产环境中的云环境设置将容易得多。
在没有虚拟盒子的情况下使用流浪汉
以前(在1.1之前),vagrant只能与VirtualBox一起使用,但是在1.1以后,vagrant可以与VMware,EC2或任何其他提供虚拟化的软件一起使用。 我们还可以对容器使用无业游民。
l对流浪者有lxc支持– https://github.com/fgrehm/vagrant-lxc我们也可以将docker与流浪者一起使用。
因此,Vagrant可以与任何基础虚拟化技术结合使用,并可以为其提供无缝接口。 它可以完成创建和管理虚拟机所需的一切,并通过使用自动化来帮助实施良好实践。
翻译自: https://www.javacodegeeks.com/2013/12/vagrant-a-swiss-army-knife-for-every-developer.html