vagrant简单介绍
vagrant :
功能:虚拟机编排工具,快速搭建开发环境 可与 virtualbox 、hyper-v 、kvm 等配合使用
官网: https://www.vagrantup.com/
建议 使用 virtualbox:https://www.virtualbox.org/wiki/Downloads
vagrant virtualbox :需要使用专门镜像
linux 官方 box 下载地址: 国内 ustc mirrors 下载 注意后缀 vagrant virtualbox
vagrant vm: 注意
默认用户名 : vagrant
密码: vagrant
切换root: sudo su - root
#原始镜像box 为纯净系统 sshd selinux firewalld 需要自行配置
#建议 box 放置一个专门目录
#例如 /opt/vbox
#centos http://mirrors.ustc.edu.cn/centos-cloud/centos/
centos 7 : http://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box
#ubuntu http://mirrors.ustc.edu.cn/ubuntu-cloud-images/
ubuntu focal : http://mirrors.ustc.edu.cn/ubuntu-cloud-images/focal/current/focal-server-cloudimg-amd64-vagrant.box
ubuntu : 启动时 有坑 :注意
官网doc地址:https://www.vagrantup.com/docs
官网教学地址:https://learn.hashicorp.com/vagrant
1 安装环境:
安装 vagrant virtualbox: 建议最新版
操作方式 命令行:
windows: cmd or powershell ,linux : bash
2 添加删除box: 下载地址上方已给出 国内 源
#语法 vagrant box add 自定义box名字 box地址 : 可以使用相对路径或绝对路径
#建议 box 放置一个专门目录
vagrant box add centos7 ./CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box
#查看的导入的 镜像
vagrant box list
#有导入的镜像即成功
vm01 vagrant box list
centos7 (virtualbox, 0)
#移除添加的box
#vagrant box remove box名字
vagrant box remove centos7
3 创建第一个 vm实例:
#首先创建一个空文件夹 随意
mkdir vm01
#初始化配置 :使用本地 box
#语法 vagrant init 自定义box名字
vagrant init centos7
#有以下显示即成功
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 #及其重要
ls
#Vagrantfile 说明在下方
4 vm使用:
#启动 vm:默认配置启动: 网卡自带 nat
#官网镜像 vm :默认纯净配置 ,需要自定义修改
#默认创建实例名为:default
#直接在创建目录中操作
vagrant up
#启动无法挂载目录,可以通过配置文件进行关闭
#详情看 下方 配置文件说明
#ssh连接 vm 即可使用
vagrant ssh default
#vagrant关闭: 默认实例为default实力
vagrant halt default
#vm内部也可以关闭
sudo shutdown -h now
#如果无法正常关闭
#可以使用virtualbox 强制关闭
vagrant status
#查看 实例 vm 状态
vagrant global-status
#查看全局状态 id
#nginx vagrant global-status
id name provider state directory
#销毁实例 从 virtualbox 上删除:默认为default
vagrant destroy default
#通过id进行销毁 box
vagrant destroy id号
5 自定义box模板
以纯净box 为模板创建box:
#例如
#更新yum 源
#修改 sshd selinux 配置
#安装常用软件 vim wget
#配置专有 服务 nginx,mysql等
#建议做以下配置
#切换root 用户
sudo su - root
#建议纯净box 做以下配置
vi /etc/default/grub
#修改这行配置为下
GRUB_CMDLINE_LINUX="no_timer_check console=tty0,115200n8 net.ifnames=0 biosdevname=0 elevator=noop crashkernel=auto"
#重新生成grub2
grub2-mkconfig -o /boot/grub2/grub.cfg
#修改sshd 配置:允许远程登录
vim /etc/ssh/sshd_config
PasswordAuthentication yes
ChallengeResponseAuthentication no
UseDNS no
#修改yum 源 为 阿里源
mkdir /opt/yumbak
mv /etc/yum.repos.d/* /opt/yumbak
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
#关闭实例 vm
vagrant halt default
#打包vm为box :等待完成
vagrant package default
ls
package.box Vagrantfile Vagrantfile.temp
#package.box 即为导出box
# 1 重命名名字
# 2 添加box 即可使用
# 3 查看镜像 vagrant box list
mv default.box package.box
mv package.box centos7-new.box
vagrant box add centos/new ./centos7-new.box
vagrant box list
#测试使用
mkdir new
cd new
vagrant init centos/new
vagrant up
Vagrantfile 说明:
以下配置可以直接使用: 修改box 名字
常见配置说明: ruby 编写 语法可以查官网 docs
单实例说明:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
#实例1 配置
Vagrant.configure("2") do |config|
#本地box:可以通过 vagrant box list 查看
config.vm.box = "centos7"
#vm主机名字: 虚拟机主机名 :避免重名
config.vm.hostname = "centos7"
#默认开启挂载共享目录:建议关闭,使用sftp 连接
#会出现驱动问题
config.vm.synced_folder ".", "/home/vagrant", disabled: true
#关闭box检查
config.vm.box_check_update = false
#自定义一个网卡:主机模式 :建议使用 自定义IP,便于管理连接 :避免重复
config.vm.network "private_network", ip: "192.168.33.50"
#virtualbox 配置
config.vm.provider "virtualbox" do |vb|
#配置 内存
vb.memory = "1024"
#配置 cpu
vb.cpus = "2"
#配置 virtualbox 显示名字
#避免重名
vb.name = "vm01"
end
end
多实例配置:
Vagrant.configure("2") do |config|
#注意前缀 centos:可以自定义
config.vm.define "centos" do |centos|
centos.vm.hostname = "centos7"
centos.vm.box = "centos7"
centos.vm.network "private_network", ip: "192.168.33.41"
centos.vm.synced_folder ".", "/home/vagrant", disabled: true
centos.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = "2"
vb.name = "centos7"
end
end
config.vm.define "ubuntu" do |ubuntu|
ubuntu.vm.hostname = "ubuntu"
ubuntu.vm.box = "focal/ubuntu"
ubuntu.vm.network "private_network", ip: "192.168.33.42"
ubuntu.vm.synced_folder ".", "/home/vagrant", disabled: true
ubuntu.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = "2"
vb.name = "ubuntu"
end
end
end
ubuntu box坑:focal/ubuntu
导入后无法正常启动:或启动卡死
通过 virtualbox 启动:
dmesg 分析:
启动故障在于 :启动加载 console=
#解决方法:
#virtualbox 窗口强制关闭
virtualbox 设置 :
串口:端口2
端口模式: 裸文件
路径/地址:随意文件 /tmp/ubuntu.log
再通过virtualbox启动
修改gurb 启动文件
sudo su - root
vi /etc/default/grub.d/50-cloudimg-settings.cfg
配置为:
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0"
vi
#更新启动文件 grub
update-grub
#关闭cloud服务 非云环境建议关闭
apt-get remove cloud-init
#重新启动测试
#没有问题。关机
导出为自定义 box 模板
然后导入
以后使用此box模板即可
ubuntu box本地网卡配置:
#卸载cloud-init服务 非云环境建议关闭
apt-get remove cloud-init
vim /etc/default/grub
#查找:
GRUB_CMDLINE_LINUX=""
#修改为:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
#更新配置文件
update-grub
#修改网卡配置文件
vim /etc/netplan/50-cloud-init.yaml
#修改 ens32为eth0
#重启生效
横空出世,莽昆仑,阅尽人间春色。
飞起玉龙三百万,搅得周天寒彻。

浙公网安备 33010602011771号