Vagrant 搭建开发环境实践

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Vagrant 搭建开发环境实践脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

介绍

Development environments Made Easy —官网标题

vagrant是一个命令行的虚拟机管理程序。用于简化搭建开发环境。

vagrant使用ruby语言基于Chef 开发。需要配合其他虚拟机程序进行工作,如vmare、virualbox、hyPEr-v等。并通过 CLIVagrantFile(配置文件)管理虚拟机的所有功能。vagrant 使用自己的镜像格式进行环境部署,即box。类似于虚机的iso或者docker中的镜像。

选择vagrant+virualbox这个组合,因为它们都是开的、跨平台的。vagrant搭建开发环境即简单又强大。

安装

官网下载安装。其中virualbox可选择安装 VirtualBox Extension Pack。使用虚拟机需要BIOS 开启虚拟化

VirtualBox 官网

https://www.virtualbox.org/

Vagrant 官网

http://www.vagrantup.COM/

BOX查找

https://app.vagrantup.com/boxes/seArch

几个场景

下面介绍几种vagrant 使用场景。所有步骤在win11系统下验证过。

1、一行命令搭建基本的开发环境

在CMD命令行下启动一个包含centos系统的虚拟机。其中"centos/7"是box名,root用户的默认密码是vagrant。真简单。

mkdir demo && cd demo && vagrant inIT centos/7 && vagrant up

2、单机开发环境

目标是搭建一个少量定制的单机开发环境。需要使用CLI命令和配置文件来完成。

手动下载BOX

网速慢可以自己下载box文件,并添加到本地box库。

下载地址:

https://app.vagrantup.com/centos/boxes/7/versions/2004.01/PRoviders/virtualbox.box

box添加到本地库的命令

vagrant box add centos/7 CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box

**初始化 **进入命令行,建立一个目录,用centos/7 box 初始化。

md demo
cd demo
vagrant init centos/7

基本的配置文件 初始化后会在当前目录生成名为 Vagrantfile 的文件。以Ruby语言为格式。

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7" #box名称
  config.vm.hostname="base" #虚拟机操作系统里的hostname
  config.vm.network "private_network", type: "dhcp" #使用私有网络,自动分配IP
  #config.vm.network "private_network", ip: "172.28.128.3"    #也可以配置静态IP
  config.vm.provider "virtualbox" do |vb|
    vb.gui = false #启动时不开启GUI
    vb.memory = "4096" #内存限制4096MB
  end
end

常用命令

vagrant up #启动虚拟机
vagrant status #查看虚拟机状态
vagrant ssh #链接虚拟机
vagrant halt #关闭虚拟机
vagrant destroy #删除虚拟机
vagrant reload #重启虚拟机,可以生效修改的配置。

3、集群开发环境

目标是搭建一个运行在局域网中、包含多台物理机和虚拟机的集群环境。

思路是安装好公共box后,对其进行定制。打包成自定义box,分发到不同的物理机上部署。

使用vagrant的公共网络模式,为每个虚拟机在局域网分配固定IP,集群环境里的任意物理机和虚拟机可以直接互通。

初始化一个centos环境

md test
cd test
vagrant init centos/7

定制环境

允许用户名密码链接SSH

使用vagrant ssh 链接虚拟机

vagrant ssh

su #切换 root用户,密码vagrant
vagrant

vi /etc/ssh/sshd_config #编辑ssh配置文件

修改配置项、允许密码登陆,并保存。

PasswordAuthentication yes

service sshd restart #重启ssh服务

操作系统设置

#修改时区
timedatectl set-timezone Asia/Shanghai
#关闭火墙
Systemctl stop firewalld
systemctl disable firewalld
#关闭Linux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
#关闭swap 
swapoff -a #临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭
free -g #验证,swap必须为0

设置阿里Centos镜像源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum update -y

安装Docker

#依赖
yum install -y yum-utils device-mapper-persistent-data LVM2
#源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#版本
yum list docker-ce --showduplicates | sort -r
#安装
yum install docker-ce-18.03.1.ce-1.el7.centos  -y
#启动
systemctl start docker
systemctl enable docker
#设置阿里云docker镜像源

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.JSON <<-'EOF'
{
  "registry-mirrors": ["https://mt1tth70.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl restart docker

自定义BOX

打包当前环境,默认名称package.box。加入本地库,取名base。

box本地仓库 默认路径 C:UsersAdministrator.vagrant.dbox

vagrant package
vagrant box add base package.box

配置文件

Vagrant.configure("2") do |config|

  #虚拟机1号 
  config.vm.define "node201" do |node1|
    node1.vm.box = "base" #使用自定义的box
    node1.vm.hostname = "node201"
    node1.vm.network "public_network", ip: "192.168.31.201"
  end

  #虚拟机2号
  config.vm.define "node202" do |node2|
    node2.vm.box = "base"
    node2.vm.hostname = "node202"
    node2.vm.network "public_network", ip: "192.168.31.202"
  end

  # config.vm.define "node203" do |node3|
  #   node3.vm.box = "base"
  #   node3.vm.hostname = "node203"
  #   node3.vm.network "public_network", ip: "192.168.31.203"
  # end

  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
    vb.memory = "4096"
    vb.cpus = 4
  end

end

部署集群环境

将打包好的自定义box和配置文件,复制到需要部署的各物理机,并且安装vagrant环境。 使用 vagrant box add 将box添加到物理机的本地库中。 使用 vagrant init base 初始化。 调整 Vagrantfile 并通过 vagrant up进行部署。

结语

扩展阅读vagrant的CLI、VagrantFile、插件、网络配置等可以在官网文档找到。

Documentation | Vagrant by HashiCorp (vagrantup.com)

脚本宝典总结

以上是脚本宝典为你收集整理的Vagrant 搭建开发环境实践全部内容,希望文章能够帮你解决Vagrant 搭建开发环境实践所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。