vagrant使用

Vagrant 将自己描述为“在单个工作流程中构建和管理虚拟机环境的工具。凭借易于使用的工作流程并专注于自动化,Vagrant缩短了开发环境的设置时间,增加了生产平价,并使“机器是过去的遗物。”

Vagrant使用一种称为Vagrantfile的标准格式来记录环境。 根据Vagrant的网站 :

“ Vagrantfile的主要功能是描述项目所需的计算机类型,以及如何配置和配置这些计算机。Vagrantfiles称为Vagrantfiles,因为该文件的实际文字文件名是Vagrantfile (除非您的文件使用大小写,否则它并不重要)系统以严格区分大小写的模式运行)。”

Vagrant本质上是一个包装程序,可以进行可重复的虚拟机管理,但它本身并不运行VM。 本教程将使用VirtualBox作为该环境管理器,尽管默认情况下Hyper-V和Docker也可以工作。 查看Vagrant的文档,以了解如何在本教程中使用其他提供程序 。

建立一个Vagrantfile

本教程通过一个示例应用程序为Ruby on Rails(简称Rails)Web应用程序中的简单Hello World页面提供示例。 在开始之前,请安装以下组件(如果尚未安装):

  • 流浪汉
  • 虚拟盒子
  • Ruby on Rails
  • 编辑环境,例如Atom或Notepad ++

如果您使用的是Fedora,并且更喜欢使用命令行,那么这里会提供出色的Fedora教程 ,还有一个类似的针对Windows的使用Chocolatey的有用教程。 安装完所有内容后,打开终端并创建一个新目录以供使用。 我更喜欢在用户帐户下使用一个文件夹:

$ mkdir -p ~ / Development / Rails_app
$ cd ~ / Development / Rails_app
$ vagrant init

A ` Vagrantfile ` has been placed in this directory. You are now
ready to ` vagrant up ` your first virtual environment ! Please read
the comments in the Vagrantfile as well as documentation on
` vagrantup.com ` for more information on using Vagrant.


这将创建一个Vagrantfile,其中包含使用Ruby语法编写的默认配置信息。 看一下第15行:

 config.vm.box = "base" 

这表明Vagrant将使用它托管的默认操作系统映像(称为base) ,您尚未安装。 通过运行列表确认:

$ vagrant box list

There are no installed boxes ! Use ` vagrant box add ` to add some.


如果尝试使用up命令启动环境,则该操作将失败,因为Vagrant希望一个名为base的操作系统在本地存在。 切换到最常用的环境bento / ubuntu-16.04 ,然后尝试扩展您的环境。 将您的Vagrantfile中的config.vm.box行更改为:

 config.vm.box = "centos/7" 

现在,您可以在虚拟机历史记录中运行最令人满意的命令:

$ vagrant up
Bringing machine 'default' up with 'libvirt' provider...
== > default: Box 'centos/7' could not be found. Attempting to find and install...
default: Box Provider: libvirt
default: Box Version: > = 0
== > default: Loading metadata for box 'centos/7'
default: URL: https: // vagrantcloud.com / centos / 7
== > default: Adding box 'centos/7' ( v1905.1 ) for provider: libvirt
default: Downloading: https: // vagrantcloud.com / centos / boxes / 7 / versions / 1905.1 / providers / libvirt.box
default: Download redirected to host: cloud.centos.org
...

这就是为什么这样好。 本教程设置了一个小型网站,但是如果您拥有较大的网站,并且需要检查前端看起来是否正确,则可以使用剧本文件和复制文件来查看更改。 如果您有小型应用程序,则希望快速进行测试-无需进行整个Docker映像构建或登录到服务器-这种本地测试非常适合快速检查和修复。 如果您使用的是硬件,则可以轻松查看该应用程序是否可以在您的操作系统中运行,并且可以让您知道所需的依赖项。 最后,与从零开始的持续集成和部署(CI / CD)到测试服务器相比,它使部署和测试更加容易,并且提供了更快的访问和更多的控制。

如此简单的原因可以用一个简单的句子来解释:您现在有了本地自动化。 它还使您可以在Ansible和无头服务器部署背后收集更广泛的知识。

验证流浪汉是否正常工作

确定此操作是否正确完成的一种方法是,看到一堆绿色文本,并在启动选项中看到Rails server -h字样。 这表示该网络应用已启动并正在运行。

但是您想使用vagrant global-status以及vagrant status

vagrant status命令检查源于当前目录的计算机状态。 因此,如果您有一个已启动并正在运行的VM,它将显示为已启动并正在运行。 如果它以任何方式损坏,则在您运行vagrant up时将显示一条错误消息和一些日志。 如果某些计算机已关闭,它们也将显示为未运行或关闭。

但是, vagrant global-status命令可以提供在Vagrant中创建的多个环境的状态。 因此,如果您将环境划分为不同的VM类型或存储类型,则此命令为您提供了一个选项,以查看在您创建的所有环境中的所有内容。

自定义流浪者配置

机器设置具有多个config.vm选项。 本教程将使用网络选项来允许端口转发。 端口转发使您可以通过特殊的本地网络访问我们虚拟环境中的网络端口,就好像它是本地端口一样。 这意味着允许流量查看您在此服务器上允许的一件事; 在这种情况下,这是一个很小的前端网页。

至关重要的主要原因是为了安全。 限制流量可以防止不良行为者和流量溢出。 构建方式,除非您进行了配置,否则您无法登录该服务器。 这也意味着除了一个小的前端网页之外,没有其他人可以SSH进入或看到任何东西。

在继续之前,请删除VM,以便您可以通过运行vagrant destroy重新开始:

$ vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [ y / N ] y
== > default: Removing domain...

要包括端口转发,请将其添加到下一个配置行中:

Vagrant.configure ( "2" ) do | config |
config.vm.box = "bento/ubuntu-16.04"
config.vm.network "forwarded_port" , guest: 3000 , host: 9090
end

保存文件并运行:

 vagrant up 

现在您有了一个将端口3000作为9090转发到开放世界的VM。 现在,您应该能够在网络浏览器上转到127.0.0.1:9090 ,并且只看到白页。

再次运行vagrant destroy以删除VM,以便重新开始。

配备Ansible和脚本的Provision Vagrant

尽管基本框提供了一个很好的起点,但是在预配过程中自定义VM是很常见的,您可以使用多种预配策略。 要继续学习,请下载剧本和脚本 。

本示例使用Ansible设置Ruby on Rails Web框架的基本安装。 然后,它添加了一个额外的shell脚本来配置Web应用程序的欢迎页面,说: Hello World,对不起抱歉 。 (此消息的目的是因为此构建需要很长时间,并且延迟可能会使人们感到沮丧。)

以下Vagrantfile反映了Ansible和一本在我的计算机上本地运行的剧本,因此与您的不同。 您可以在Vagrant的文档中阅读有关将Ansible与Vagrant结合使用的信息。

Vagrant.configure ( "2" ) do |config |
 config.vm.box = "bento/ubuntu-16.04"
config.vm.network "forwarded_port", guest : 3000, host : 9090
####### Provision #######
config.vm.provision "ansible_local" do |ansible |
   ansible.playbook = "prov/playbook.yml"
ansible.verbose = true
config.vm.provision "shell", path : "script.sh"
end
end

保存文件后,运行我最喜欢的命令:

 vagrant up 

现在,您已经建立了一个虚拟机,并且可以与Rails一起运行,并且在Web浏览器中输入127.0.0.1:9090时,您会看到一个页面,上面写着: Hello World,对不起,抱歉

现在,您已经具备了所有这些背景知识,可以尝试构建自己的脚本 。

最后的笔记

Vagrant非常易于使用,并且具有丰富的文档来帮助您。 如果您希望在小型暂存或开发环境中使用代码,那么它是一个很好的工具。 任何破坏都是没有问题的,因为环境本身是可处置的。

想试试看? 看看我的仓库 。

翻译自: https://opensource.com/article/19/12/beginner-vagrant

vagrant使用

vagrant使用_使用Vagrant的初学者指南相关推荐

  1. python只有idle 1种编程环境_《Python编程初学者指南》——1.5 IDLE简介

    本节书摘来自异步社区<Python编程初学者指南>一书中的第1章,第1.5节,作者[美]Michael Dawson,王金兰 译,更多章节内容可以访问云栖社区"异步社区" ...

  2. 创建vagrant 镜像_自动化 – Vagrant是否可以直接使用操作系统.ISO直接安装映像,或是从ISO中快速创建一个Vagrant Box?...

    从原始的ISO可以自动创建用于操作系统安装的Vagrant .box文件吗? 对我来说,这是Vagrant提供的虚拟机上操作系统安装和配置的端到端自动化的一个重大差距. 当然,VagrantBox.e ...

  3. spring架构初学者_完整的厨师和基础架构初学者指南

    spring架构初学者 by Mohak Puri 由Mohak Puri 完整的厨师和基础架构初学者指南 (A complete beginner's guide to Chef and infra ...

  4. sql初学者指南_初学者SQL示例:SQL SELECT语句的用法

    sql初学者指南 SQLSELECT statements are used to retrieve data from the database and also, they populate th ...

  5. selenium初学者指南_如何进化人工智能生活:初学者指南

    selenium初学者指南 'Evolving artificial intelligent life' might sound like a grandiose claim from an indi ...

  6. java初学者指南_企业Java中事务隔离级别的初学者指南

    java初学者指南 介绍 基于ACID事务属性的关系数据库强一致性模型. 在本文中,我们将阐明对资源本地事务和JTA事务使用不同的事务隔离级别和各种配置模式的背后原因. 隔离和一致性 在关系数据库系统 ...

  7. ecology9 后端开发环境搭建_利用Vagrant快速搭建开发环境

    Docker大家应该都了解吧,一个非常方便的技术,可以让我们随时随地部署应用.但是部署应用虽然方便了,开发环境的搭建还是那样的,要自己安装一大堆软件.那么有没有类似的工具可以方便我们呢?这就是本文要的 ...

  8. 初学react实现路由跳转_如何使用React构建模因制作者:初学者指南

    初学react实现路由跳转 by Avanthika Meenakshi 通过Avanthika Meenakshi 如何使用React构建模因制作者:初学者指南 (How to build a me ...

  9. sql初学者指南_使用tSQLt框架SQL单元测试面向初学者

    sql初学者指南 tSQLt is a powerful, open source framework for SQL Server unit testing. In this article, we ...

最新文章

  1. httpclient 调取接口_使用HttpClient调用接口的实例讲解
  2. 鸟哥Linux私房菜_基础篇(第二版)_第七章学习笔记
  3. BZOJ2005: [Noi2010]能量采集 莫比乌斯反演的另一种方法——nlogn筛
  4. 问题:图片怎么保存到数据库, 以及怎么把图片从数据库中取出来使用?(已解决)...
  5. 观察者模式-Observer Pattern
  6. hive --metastore三种模式
  7. 最小生成树的java实现
  8. STL STL的不同实现版本
  9. 智能优化算法应用:基于GWO优化的指数熵图像多阈值分割 - 附代码
  10. Android 12 原生播放器的编解码 Codec 2
  11. MLI_09 HMM(隐马尔可夫模型)
  12. iOS软键盘弹出后视图向上移动
  13. CTF-web-秋名山老司机
  14. vbs 合并 excel 表格
  15. 什么是枚举,及枚举的特点
  16. 《操作系统》第十二章习题加解析(重点学习内容)
  17. Android通讯录(联系人)-ContentProvider
  18. 解决git错误: error: The following untracked working tree files would be overwritten by merge
  19. 当编程语言都变成女孩子,你会不会喜欢她们!
  20. CISCO X8系列AP升级详解

热门文章

  1. netty实现消息群发
  2. Hibernate中封装session(静态单例模式)
  3. iOS开发之--改变系统导航的颜色,字体,还有返回样式的自定义
  4. 转 Phpstorm调试详解(包含命令行以及浏览器)
  5. Tokyo Tyrant基本规范(1)--介绍和安装
  6. Linux-yum在线安装svn步骤
  7. 跨平台的报表生成器控件Stimulsoft Reports.Fx for Flex
  8. linux AB测试
  9. iOS AVAudioRecorder参数设置
  10. 发布一个mmap的trie_midrmm02_新浪博客