【Linux】Vagrant搭建Linux环境

news2024/9/20 1:15:26

Vagrant

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。

安装Vagrant

从Vagrant官网下载安装包,执行安装。

安装VirtualBox

从官网下载VirtualBox,执行安装,设置虚拟机的安装位置,默认会安装在C盘,避免系统盘资源占用。

注册Vagrant引导文件

box是Vagrant环境的包格式。您可以在Vagrantfile中指定一个box环境和操作配置。您可以在任何受支持的平台上使用一个box来启动相同的工作环境。为了使团队能够使用和管理相同的盒子,支持版本。
最快的入门方法是从Vagrant Cloud上的公开目录中选择一个预定义的盒子环境。您还可以在Vagrant Cloud上添加和共享您自己的定制盒子。
这里安装Centos7,可以从Vagrant Cloud中找到对应的安装步骤,
image.png
打开cmd,执行上述命令,会在C:/User/DoGH目录下创建一个vagrantfile文件,Vagrant会以该文件为引导,创建系统。

vagrant init centos/7
vagrant up

执行vagrant up自动安装并启动centos系统。

第一次需要下载系统所以较为缓慢。

等待启动完成后,可以在VirtualBox中看到该虚拟机的配置信息。
image.png
当下次需要启动虚拟机时,可以在cmd中执行vagrant up命令启动虚拟机或在VirtualBox中直接启动和关闭。

用户管理

Vagrant创建的虚拟机自带一个普通用户vagrant密码也是vagrant,在cmd中也可以通过vagrant ssh命令自动登录该用户,
在默认情况下,使用ssh连接工具访问虚拟机时需要身份文件和密码双重登录,这里可以在cmd中输入vagrant ssh-config命令,打印他的ssh连接信息,

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/DoGH/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL
  PubkeyAcceptedKeyTypes +ssh-rsa
  HostKeyAlgorithms +ssh-rsa

IdentityFile就是身份文件的位置,选择该文件,在输入用户名和密码即可登录vagrant用户。
在登录了虚拟机后,切换至root用户,并设置登录密码

# 切换至root用户
sudo -i

# 设置密码
passwd

为了能直接使用用户名密码登录虚拟机,需要修改/etc/ssh/sshd_config文件,开启该两项配置。

PermitRootLogin yes
PasswordAuthentication yes

该文件需要root用户登录才能被修改。

重启ssh服务,再通过连接工具连接时就不需要身份文件的验证

sudo systemctl restart sshd

Vagrantfile

vagrantfile的主要功能就是描述项目所要求的设备类型,并且如何配置和提供这些设备。

Vagrant主要依靠每个项目的Vagrantfile文件运行,并且Vagrantfile版本管理。这就允许其他参与项目的开发人员获得Vagrantfile文件,只需要执行vagrant up,就可以创建相同的设备。Vagrantfiles可以在Vagrant支持的每个平台上移植。

Vagrantfile使用的是Ruby语言,但是修改Vagrantfile并不需要了解Ruby语言,因为它更多的是简单的变量赋值。

查找路径

当运行任意vagrant命令时,Vagrant会首先从当前目录开始,并逐级目录查找所能找到的第一个Vagrantfile。因此,如果在/home/mitchellh/projects/foo目录下运行vagrant命令,他会搜索所有的路径,直到找到第一个Vagrantfile为止。

/home/mitchellh/projects/foo/Vagrantfile
/home/mitchellh/projects/Vagrantfile
/home/mitchellh/Vagrantfile
/home/Vagrantfile
/Vagrantfile

这样就可以从项目中的任何目录运行vagrant。

您可以通过将VAGRANT_CWD环境变量设置为其他路径来更改Vagrant查找Vagrantfile的起始目录。

加载顺序和合并

要理解的一个重要概念是Vagrant如何加载Vagrant文件。Vagrant实际上会加载一系列Vagrant文件,并在运行过程中合并设置。这允许不同级别特殊性的Vagrantfiles覆盖先前的设置。
Vagrantfiles按照如下所示的顺序加载。注意,如果在任何步骤中都没有找到Vagrantfile, Vagrant将继续执行下一步。

  1. Vagrantfile包装用于指定设备的box容器。
  2. 在Vagrant根路径下的Vagrantfile文件(默认为~/.vagrant.d)。这样可以为系统用户指定一些默认值。
  3. 项目路径下的Vagrantfile文件。这个Vagrantfile将会是更多时间需要修改的。
  4. 多设备
  5. 指定的提供者

在任意层次上,之前的配置都将被相同的配置覆盖。

配置网络

Vagrant为如何将客户机连接到网络提供了多种选择,但是有一个标准的使用模式,以及所有网络配置的一些共同点,这些都很重要,需要了解。
所有网络都在Vagrantfile中使用config.vm.network方法调用进行配置。例如,下面的Vagrantfile定义了一些端口转发:

Vagrant.configure("2") do |config|
  # ...
  config.vm.network "forwarded_port", guest: 80, host: 8080
end

这里固定虚拟机的IP地址,如下

Vagrant.configure("2") do |config|
  config.vm.network "public_network", ip: "192.168.56.10"
end

这里IP的规划要与本机的Virtual虚拟网卡地址在统一网段。
image.png
保存Vagrantfile,重启虚拟机(vagrant reload),虚拟机的网络配置就已发生了改变。

多设备运行

Vagrant支持在Vagrantfile中定义多个设备,在以下场景中可以应用到

  • 准确地建模多服务器生产拓扑,例如分离web服务器和数据库服务器。
  • 建模一个分布式系统,以及它们如何相互作用。
  • 测试一个接口,比如服务组件的API。
  • 容灾测试:机器宕机、网络分区、网络延迟等特殊情况。

定义多个设备

多个设备都可以在Vagrantfile文件中通过config.vm.define来定义。这个配置会在Vagrant中再创建一个配置,例如:

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: "echo Hello"

  config.vm.define "web" do |web|
    web.vm.box = "apache"
  end

  config.vm.define "db" do |db|
    db.vm.box = "mysql"
  end
end

正如你所见,config.vm.define重新定义了一个区域作为另一个变量。这个变量,例如web,与config变量完全相同,只是在变量中的任意配置都只适用于当前定义的设备。因此,web中的任意配置只影响web这台设备。
并且更重要的是,你还可以继续同样地使用config对象。配置对象会在设备独有的配置之前进行加载和合并。
如果您熟悉编程,这与语言具有不同的变量作用域类似。
在使用这些作用域时,诸如提供程序之类的事情的执行顺序变得很重要。Vagrant强制按照Vagrantfile中列出的顺序,从外到内进行排序。例如,下面的Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.provision :shell, inline: "echo A"

  config.vm.define :testing do |test|
    test.vm.provision :shell, inline: "echo B"
  end

  config.vm.provision :shell, inline: "echo C"
end

在这种情况下,提供程序将输出“A”,然后是“C”,然后是“B”。注意“B”是最后一个。这是因为按照文件的顺序,排序是由外到内的。

控制多设备

一旦在一个Vagrantfile中定义了不止一台机器,各种Vagrantfile命令的用法就会略有变化。这种变化应该主要是直观的。
只对单个机器有意义的命令,比如vagrant ssh,现在需要控制机器的名称。使用上面的例子,您可以说vagrant ssh webvagrant ssh db
其他命令,如vagrant up,默认情况下在每台机器上运行。所以如果运行vagrant, vagrant会同时打开web和DB机器。你也可以选择是具体的,例如vagrant up webvagrant up db
另外,Vagrant可以指定一个正则表达式来只匹配某些机器。在拥有许多类似机器的某些情况下很有用,例如,如果正在测试分布式服务,可能有一个leader机器以及follower0, follower1, follower2等。如果想要启动所有的备机而不是主机,可以执行vagrant up /follower[0-9]/命令。如果Vagrant在正斜杠中看到机器名,则假定正在使用正则表达式。

指定主机

Vagrant也可以指定一个主机。当在多设备环境中没有指定设备作为主机时,那么主机将作为默认设备被使用。指定默认主机,只需要在定义时设置为主设备。并且只能指定一台设备作为主机。

config.vm.define "web", primary: true do |web|
  # ...
end

设备的自动启动

在默认情况下的多设备环境中,vagrant up会启动所有的已定义的设备。autostart设置可以告诉Vagrant哪些设备是不需要自动启动的。例如:

config.vm.define "web"
config.vm.define "db"
config.vm.define "db_follower", autostart: false

当依照该设置运行vagrant up时,Vagrant会自动启动webdb设备,但并不会自动启动db_follower设备。如果要启动db_follower设备,可以通过执行vagrant up db_follower命令启动。

参考:https://developer.hashicorp.com/vagrant/docs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1465153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业品牌软文发布在媒体上,有啥用呢

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 通常企业都会建立自己的媒体矩阵,在公众号,视频号,抖音,网易号,搜狐号等企业品牌矩阵中发布软文,公司动态&#xf…

智慧城市|SHARE 孪影F2 PRO 在数字化城市平台中的应用。

在数字化时代背景下,乌审旗政府积极响应实景三维中国建设工作,以数字乌审作为全旗智慧城市总框架、总平台,致力提升城市治理现代化水平,结合互联网、云计算、人工智能等信息技术建设新型智慧城市,推进城市发展新理念。…

现货黄金怎么交易

现货黄金是投资者广泛关注的一种黄金交易方式。与期货黄金相比,现货黄金交易更加简单、灵活,同时也更容易掌握。本文将介绍现货黄金交易的基本知识,以及投资者应该如何进行现货黄金交易。 一、现货黄金交易基础知识 什么是现货黄金&#xf…

ES6内置对象 - Set

Set(es6提供的一种数据结构,类似数组,是一个集合,可以存储任何类型的元素且唯一、不重复,so,多用于元素去重) 如上图,Set数据结构自带一些方法 1.Set对象创建 let a new Set([1,2,3,3,1,2,4,…

4个为数据程序员量身打造的PyCharm插件

SonarLint 插件可以帮助开发人员在编码过程中发现潜在的代码问题,提高代码质量。可在实时编码过程中发现并修复代码问题,类似于拼写检查器。它不仅仅是一个代码检查工具,更像是代码质量助手。 PyCharm 是一款由 JetBrains 公司推出的强大的 …

Ubuntu系统本地部署Inis博客结合内网穿透实现远程访问本地站点

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…

超级实用的python代码片段汇总和详细解析(16个)

目录 1. 生成随机文本 2. 计算文本文件中的字数 3. 替换文件文件中的字串 4. 多文件名的批量替换 5. 从网站提取数据 6. 批量下载图片 7.批量删除空文件夹 8.Excel表格读写 9.合并Excel表格工作簿 10.数据库SQL查询 11. 系统进程查杀 12.图像尺寸调整和裁剪 13.图…

蓝桥杯STM32G431RBT6实现按键的单击、双击、长按的识别

阅读引言: 是这样, 我也参加了这个第十五届的蓝桥杯,查看竞赛提纲的时候发现有按键的双击识别, 接着我就自己实现了一个按键双击的识别,但是识别效果不是特别理想,偶尔会出现识别不准确的情况,接…

测试环境搭建整套大数据系统(六:搭建sqoop)

一:下载安装包 https://archive.apache.org/dist/sqoop/ 二:解压修改配置。 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt cd /opt mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7修改环境变量 vi /etc/profile#SQOOP_HOME export SQOOP_…

outlook邮箱后缀怎么设置?邮箱后缀问题?

outlook邮箱后缀如何修改?微软有哪些后缀的邮箱? Outlook不仅提供了稳定的邮件收发服务,还允许用户根据个人喜好和需求自定义邮箱后缀。那么,Outlook邮箱后缀究竟该如何设置呢?下面,蜂邮EDM将一步步指导您…

【FPGA】VHDL:小型出勤系统设计

附源代码,一定能实现! 目录 EDA设计练习题: 实验要求如下: 思路分析: 代码 99进制计数器 码转换 顶层文件 特别注意 测试 编译通过 结果展示 RTL视图 技术映射视图 软件:Quartus II 13.0 (64…

软件测试需要学习什么?好就业吗?

目前来说的话,整个it 都不太好!但是既然你问了,我也就告诉你吧! 1功能测试 :前端和后端,前端就是简单的页面,你需要考虑的是:必填项,边界值,组合&#xff0c…

深度学习介绍与环境搭建

深度学习介绍与环境搭建 慕课大学人工智能学习笔记,自己学习记录用的。(赋上连接) https://www.icourse163.org/learn/ZUCC-1206146808?tid1471365447#/learn/content?typedetail&id1256424053&cid1289366515人工智能、机器学习与…

XG5032HAN (SAW)振荡器)(piezoman压电侠)

XG5032HAN晶体振荡器通过其卓越的低抖动特性,为需要高频率精度和稳定性的电子设备提供了理想的解决方案。无论是在高性能的数据通信、精密测量XG5032HAN都能提供高质量、可靠的性能。同时,宽广的频率范围其25 MHz到250 MHz,小巧的封装5.0 3.…

问题1-spring-boot版本和org.springframework的spring-web兼容的版本

报错问题如下: Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.createHandlerMethod(AbstractHandlerMeth…

IOT-Reaserch安装ghidra以及IDEA和ghidra的配置

Linux research 5.4.0-91-generic #102~18.04.1-Ubuntu SMP Thu Nov 11 14:46:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux java --version IOT自带的java是符合要求的,不需要额外下载 iotresearch:~/install-file$ java --version openjdk 11.0.13 2021-10-19 …

前后端分离vscode保险业务管理系统vue+Nodejs

本设计主要应用于完成对保险业务进行计算机化的管理。系统前台展示各种种类的保险,顾客可以选择登陆后买入。公司员工为管理员,由公司统一分配账号,员工用工号密码登陆。可以修改密码,查看、修改自己的信息。员工可处理顾客信息。…

java+selenium自动化测试

编写自动化测试代码的时候有时候会遇到修改代码但是仍然不起作用的情况 ,例如 我将测试账号换成只有一个时,代码仍然会执行上面的7个测试账号 解决方法: File->setting->Build->Maven:选择idea自带的maven即可解决 之后…

聊聊mysql的七种日志

进入正题前,可以先简单介绍一下,MySQL的逻辑架构, MySQL的逻辑架构大致可以分为三层: 第一层:处理客户端连接、授权认证,安全校验等。第二层:服务器 server 层,负责对SQL解释、分析、优化、执行操作引擎等。第三层:存储引擎,负责MySQL中数据的存储和提取。我们要知道…

iPaaS生成数据库接口只要60秒?

“iPaaS生成数据库接口只要60秒?” 关于“iPaaS生成数据库接口只要60秒?”的说法,这实际上反映了iPaaS解决方案的一个重要优势:高效率。确实,借助iPaaS平台的现成集成工具和模板,用户可以迅速创建连接到特…