vagrant入门_Vagrant入门

vagrant入门

如果您像我一样,则可能在某个地方有一个“沙盒”,您可以在该地方破解正在处理的任何项目。 随着时间的流逝,沙箱将变得混乱不堪,到处都是零碎的想法,工具链元素,您不使用的代码模块以及其他不需要的东西。 当您完成某些工作时,这可能会使您的部署复杂化,因为您可能不确定项目的实际依赖关系—您的沙箱中已经有一些工具很久了,以至于忘记了必须安装它。 您需要一个干净的环境,将所有依赖项放在一个地方,以便以后使事情变得更容易。

或者,也许您在DevOps中,并且您所服务的开发人员会使用含糊不清的依赖关系来编写代码,这会使测试变得更加困难。 您需要一种干净的方法来引入代码并逐步运行。 您希望这些环境是一次性的且可重复的。

输入Vagrant 。 Vagrant由HashiCorp在MIT许可下创建,它充当VirtualBox,Microsoft Hyper-V或Docker容器的包装和前端,并且可以通过许多其他提供程序的插件进行扩展。 您可以配置Vagrant,以提供已经安装了所需基础结构的可重复清洁的环境。 该配置脚本是可移植的,因此,如果您的存储库和Vagrant配置脚本位于基于云的存储中,则可以启动并在多台计算机上工作,但有一些限制。 让我们来看看。

安装

对于此安装,我正在我的Linux Mint桌面(版本18.3 Cinnamon 64位)上工作。 在大多数其他基于Debian的系统上,安装非常相似,并且在大多数发行版中,基于RPM的系统都有类似的安装程序。 Vagrant的安装页面提供了Debian,Windows,CentOS,MacOS和Arch Linux的下载,但是我在程序包管理器中找到了它,因此我将进行安装。

最简单的安装使用VirtualBox作为虚拟化提供程序,因此我也需要安装它。



   
   
sudo apt-get install virtualbox vagrant

安装程序将选择依赖项(主要是Ruby的东西)并进行安装。

建立一个项目

在设置项目之前,您需要了解一些要在其中运行项目的环境。 您可以在Vagrant Boxes存储库中找到许多针对许多虚拟化提供程序的预配置盒。 许多服务器将预先配置一些您可能需要的核心基础架构,例如PHP,MySQL和Apache,但是对于此测试,我将安装一个裸露的Debian 8 64位“ Jessie”框并​​手动安装一些东西。 ,以便您可以看到如何。



   
   
mkdir ~ / myproject
cd ~ / myproject
vagrant init debian / contrib-jessie64
vagrant up

最后一条命令将根据需要从库中获取或更新VirtualBox映像,然后拉启动器,您的系统上将有一个正在运行的盒子! 下次启动该框时,它将花费很长时间,除非已在存储库中更新了该图像。

要访问该框,只需输入vagrant ssh 。 您将进入虚拟机上功能齐全的SSH会话。 您将成为vagrant用户,但您是sudo组的成员,因此您可以更改为root,然后从此处执行任何操作。

您会在框中看到一个名为/vagrant的目录。 请注意该目录,因为它会与主机上的~/myproject文件夹同步。 触摸虚拟机上/vagrant的文件,该文件立即被复制到主机,反之亦然。 请注意,某些盒子没有安装VirtualBox guest虚拟机,因此该副本只能单向运行,并且只能在启动时使用! 有一些用于手动同步的命令行工具,这些工具在测试环境中可能是非常有用的功能。 我倾向于使用添加了附加内容的框,因此无需我考虑就可以进行此目录同步。

这种方案的好处Swift变得显而易见:如果您在主机上具有代码编辑工具链,并且由于某种原因不希望在虚拟机上使用它,那不是问题,在主机上进行编辑,并且VM可以看到更改立刻。 在VM上进行快速更改,它也同步到主机上的“正式”副本。

让我们关闭包装盒,以便在该包装盒上提供一些我们需要的东西: vagrant halt

始终在VM上安装其他软件

对于此示例,我将使用ApachePostgreSQL和适用于Perl的Dancer Web框架进行项目开发。 我将修改Vagrant配置脚本,以便已安装所需的东西。 为了使以后易于更新,我将在~/myproject/Vagrantfile的顶部创建一个脚本:



   
   
$provision_script = <<SCRIPT
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -y install \
  apache2 \
  postgresql-client-9.4 \
  postgresql-9.4 \
  libdbd-pg-perl \
  libapache2-mod-fastcgi \
  libdata-validate-email-perl  \
  libexception-class-perl \
  libexception-class-trycatch-perl \
  libtemplate-perl \
  libtemplate-plugin-json-escape-perl \
  libdbix-class-perl \
  libyaml-tiny-perl \
  libcrypt-saltedhash-perl \
  libdancer2-perl \
  libtemplate-plugin-gravatar-perl  \
  libtext-csv-perl \
  libstring-tokenizer-perl \
  cpanminus
cpanm -f -n \
  Dancer2::Session::Cookie \
  Dancer2::Plugin::DBIC \
  Dancer2::Plugin::Auth::Extensible::Provider::DBIC \
  Dancer2::Plugin::Locale \
  Dancer2::Plugin::Growler
sudo a2enmod rewrite fastcgi
sudo apache2ctl restart
SCRIPT

在Vagrantfile末尾附近,您会找到config.vm.provision变量的一行。 您可以在此内联,如示例所示,只需取消注释以下行即可:



   
   
  # config.vm.provision "shell", inline: <<-SHELL
  #   sudo apt-get update
  #   sudo apt-get install -y apache2
  # SHELL

但是,请替换这四行,以使用在文件顶部定义为变量的配置脚本:


config.vm.provision "shell" , inline: $provision_script  
forwarded_port并取消注释。 如果需要,您也可以将端口从8080更改为其他端口。 我通常使用端口5000,在浏览器中访问http://localhost:5000可使我进入虚拟机上的Apache服务器。

这是一个设置提示:如果您的存储库位于云存储上,为了在多台计算机上使用Vagrant,您可能需要将不同计算机上的VAGRANT_HOME环境变量设置为不同的对象。 通过VirtualBox的工作方式,您将需要为这些系统分别存储状态信息。 确保用于版本控制的目录被您的版本控制忽略了—我将.vagrant.d*添加到存储库的.gitignore文件中。 不过,我确实让Vagrantfile成为存储库的一部分!

全做完了!

我输入vagrant up ,就可以开始编写代码了。 一旦完成一两次,您可能会想出一些Vagrantfile样板,您将对其进行大量回收(如我刚刚使用的样板),这就是Vagrant的优势之一。 您可以更快地进行实际的编码工作,并减少在基础架构上的时间!

您可以使用Vagrant做更多的事情。 预配置工具存在于许多工具链中,因此,无论您需要复制哪种环境,它都是快速简便的。

翻译自: https://opensource.com/article/18/4/getting-started-vagrant

vagrant入门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值