它能干嘛呢?你可以理解为与Docker类似,帮助我们快速部署开发环境。一款用于管理虚拟机的命令行实用软件
安装完成之后的账号密码都是 vagrant
文章目录
一. 首先要使用的环境软件,下载安装
- Vagrant下载地址: https://www.vagrantup.com/downloads
- VirtualBox下载地址:
https://www.virtualbox.org/wiki/Downloads - 可用的box地址:https://app.vagrantup.com/boxes/search
查看是否安装成功:
vagrant --help
vagrant --version
接下来就可以安装各种系统了如下:
1.安装Windows10 系统
vagrant init galppoc/windows10
vagrant up
2.安装 macOS 系统
vagrant init jhcook/macos-sierra
vagrant up
3.安装 Linux/Unix 系统
① centos:
vagrant init generic/centos7
vagrant up
② Ubuntu:
vagrant init generic/ubuntu2010
vagrant up
③ redhat:
vagrant init generic/rhel7
vagrant up
④ fedora:
vagrant init generic/fedora32
vagrant up
⑤ oracle linux:
vagrant init generic/oracle7
vagrant up
二.1 Vagrant 虚拟机系统命令
查看 Vagrant 当前所有已安装系统
vagrant global-status
初始化虚拟机系统 ,之后,会自动生成一个Vagrantfile文件,可自定义编辑,玩转 Vagrant 关键
vagrant init luciferliu/oracle11g
校验 Vagrantfile 文件
vagrant validate
启动虚拟机系统,用默认虚拟机 virtualbox 启动虚拟机系统,过程中显示,如果本地没有添加过 box,vagrant up 启动后会自动下载添加。
vagrant up --provider=virtualbox
连接虚拟机系统
vagrant ssh
查看虚拟机系统状态
vagrant status
重载虚拟机系统
vagrant reload
关闭虚拟机系统,虚拟机系统将会立刻关闭
vagrant halt
打包虚拟机系统,打包后备份它,
vagrant package
删除虚拟机系统 ,慎用
vagrant destory
一行命令安装linux
vagrant box add bento/oracle-7.9 --provider virtualbox && sudo vagrant init bento/oracle-7.9 && sudo vagrant up
二.1 Vagrant 插件管理
插件基地:https://vagrant-lists.github.io/#plugins
查看已安装插件
vagrant plugin list
安装插件
vagrant plugin install vagrant-share
卸载插件
vagrant plugin uninstall vagrant-share
修复插件
vagrant plugin repair
更新插件
vagrant plugin update
这里分享下我已安装的几个插件
vagrant-parallels (2.2.3, global)
用于 Parallels Desktop 虚拟机的支持插件
vagrant-proxyconf (2.0.10, global)
用于设置虚拟机代理
vagrant-share (2.0.0, global)
通过插件可以分享你的虚拟机环境给朋友
vagrant-mutate (1.2.0, global)
使用插件可以转换你的 box ,比如从 virtualbox 到 kvm
####安装方式:
vagrant plugin install vagrant-parallels
vagrant plugin install vagrant-proxyconf
vagrant plugin install vagrant-reload
vagrant plugin install vagrant-share
vagrant plugin install vagrant-mutate
vagrant plugin list
顺便给大家分享一个解决 Vgrant 插件安装慢的方法:
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem sources -l
二 .2 Vagrant Box 管理
可用的box地址:https://app.vagrantup.com/boxes/search
查看所有已添加 box
vagrant box list
添加新的 box,下载 box 到本地,指定本地 box 添加,名称为centos7。
vagrant box add /Volumes/Lucifer/vagrant/centos79-oracle11g-vb/centos7.9 --name=centos7
移除已添加 box
vagrant box remove centos7
vagrant下载地址:https://www.vagrantup.com/downloads
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
三、高阶玩法:Vagrant 配套工具 之ngrok/packer
@1.1 安装ngrok,官网下载安装包,解压是个可执行文件,直接双击使用,下载地址:https://dashboard.ngrok.com/login
需要注册一个 ngrok 用户,获取授权码,来授权本地机器
直接运行
ngrok authtoken 你的授权码
@1.2. 测试 ngrok 是否可用,打开你的浏览器访问 http://127.0.0.1:4040
ngrok http 80
@1.3. 使用 vagrant-share 插件,分享你的虚拟机
这里有个小前提:需要环境变量中配置 ngrok ,否则 vagrant 无法获取到改命令:
我是将解压的 ngrok 可执行工具放入 /opt/vagrant/bin 目录下
export VG_HOME='/opt/vagrant'
export PATH=$PATH:$VG_HOME/bin
@1.4 使用 ssh 方式分享你的主机:过程中需要输入两次密码
vagrant share --ssh
@1.5 客户端连接,输入提示的链接命令即可:
vagrant connect --ssh orange_amigo:george_botanic@forward
2. packer,用来定制你的专属 Box 的
@2.1 下载执行文件,双击即可,官网地址:https://www.packer.io/downloads
这里有个小前提:需要环境变量中配置 packer ,否则 vagrant 无法获取到改命令
export VG_HOME='/opt/vagrant'
export PATH=$PATH:$VG_HOME/bin
注意:我是将解压的 packer 可执行工具放入 /opt/vagrant/bin 目录下,参考如上配置即可。
@2.2 下载一个centos或者windows镜像,也就是安装包https://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
下载之后需要用sha sum 生成 字符,下面有用:
shasum -a 256 /Users/lpc/Downloads/CentOS-7-x86_64-Minimal-2009.iso
@2.3打包,需要用bento,也就是github打包,项目地址:https://github.com/chef/bento
把它git clone下载
git clone https://hub.fastgit.org/chef/bento.git
@2.4 打开刚 git 的项目,自定义 packer json 文件,在刚下载的git项目目录中
{
"builders": [
{
"boot_command": [
"<up><wait><tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/{{user `ks_path`}}<enter><wait>"
],
"boot_wait": "5s",
"cpus": "{{ user `cpus` }}",
"disk_size": "{{user `disk_size`}}",
"guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
"guest_additions_url": "{{ user `guest_additions_url` }}",
"guest_os_type": "RedHat_64",
"hard_drive_interface": "sata",
"headless": "{{ user `headless` }}",
"http_directory": "{{user `http_directory`}}",
"iso_checksum": "{{user `iso_checksum`}}",
"iso_url": "{{user `mirror`}}/{{user `mirror_directory`}}/{{user `iso_name`}}",
"memory": "{{ user `memory` }}",
"output_directory": "{{ user `build_directory` }}/packer-{{user `template`}}-virtualbox",
"shutdown_command": "echo 'vagrant' | sudo -S /sbin/halt -h -p",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_timeout": "10000s",
"ssh_username": "vagrant",
"type": "virtualbox-iso",
"virtualbox_version_file": ".vbox_version",
"vm_name": "{{ user `template` }}"
},
{
"boot_command": [
"<up><wait><tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/{{user `ks_path`}}<enter><wait>"
],
"boot_wait": "5s",
"cpus": "{{ user `cpus` }}",
"disk_size": "{{user `disk_size`}}",
"guest_os_type": "centos",
"http_directory": "{{user `http_directory`}}",
"iso_checksum": "{{user `iso_checksum`}}",
"iso_url": "{{user `mirror`}}/{{user `mirror_directory`}}/{{user `iso_name`}}",
"memory": "{{ user `memory` }}",
"output_directory": "{{ user `build_directory` }}/packer-{{user `template`}}-parallels",
"parallels_tools_flavor": "lin",
"prlctl_version_file": ".prlctl_version",
"shutdown_command": "echo 'vagrant' | sudo -S /sbin/halt -h -p",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_timeout": "10000s",
"ssh_username": "vagrant",
"type": "parallels-iso",
"vm_name": "{{ user `template` }}"
}
],
"post-processors": [
{
"output": "{{ user `build_directory` }}/{{user `box_basename`}}.{{.Provider}}.box",
"type": "vagrant"
}
],
"provisioners": [
{
"environment_vars": [
"HOME_DIR=/home/vagrant",
"http_proxy={{user `http_proxy`}}",
"https_proxy={{user `https_proxy`}}",
"no_proxy={{user `no_proxy`}}"
],
"execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E sh -eux '{{.Path}}'",
"expect_disconnect": true,
"scripts": [
"{{template_dir}}/scripts/update.sh",
"{{template_dir}}/../_common/motd.sh",
"{{template_dir}}/../_common/sshd.sh",
"{{template_dir}}/scripts/networking.sh",
"{{template_dir}}/../_common/vagrant.sh",
"{{template_dir}}/../_common/virtualbox.sh",
"{{template_dir}}/../_common/vmware.sh",
"{{template_dir}}/../_common/parallels.sh",
"{{template_dir}}/scripts/cleanup.sh",
"{{template_dir}}/../_common/minimize.sh"
],
"type": "shell"
}
],
"variables": {
"box_basename": "centos-7.9",
"build_directory": "../../builds",
"build_timestamp": "{{isotime \"20060102150405\"}}",
"cpus": "2",
"disk_size": "65536",
"git_revision": "__unknown_git_revision__",
"guest_additions_url": "",
"headless": "",
"http_directory": "{{template_dir}}/http",
"http_proxy": "{{env `http_proxy`}}",
"https_proxy": "{{env `https_proxy`}}",
"iso_checksum": "07b94e6b1a0b0260b94c83d6bb76b26bf7a310dc78d7a9c7432809fb9bc6194a",
"iso_name": "CentOS-7-x86_64-Minimal-2009.iso",
"ks_path": "7/ks.cfg",
"memory": "1024",
"mirror": "",
"mirror_directory": "Users/lpc/Downloads",
"name": "centos-7.9",
"no_proxy": "{{env `no_proxy`}}",
"template": "centos-7.9-x86_64",
"version": "TIMESTAMP"
}
}
#需要修改的地方:
"mirror": "",
"mirror_directory": "Users/lpc/Downloads",
iso 的 checksum 结果和 iso 名称:
@2.5 启动 packer 进行打包,成功后会有一个.box文件
cd /Volumes/DBA/vagrant/packer/packer_templates/centos
packer build -only=virtualbox-iso centos-7.9-x86_64.json
打包完之后的 box 才 300 多M,来测试一下能不能用吧:
vagrant box add /Volumes/DBA/vagrant/packer/bento/builds/centos-7.9.virtualbox.box --name=centos79
vagrant init centos79
vagrant up --provider=virtualbox
连接使用,打工搞成!
vagrant ssh
操作流程
0、创建目录
mkdir centos_vagrant
1、查看当前主机box镜像
vagrant box list
可用的box地址:https://app.vagrantup.com/boxes/search
vagrant init centos/7
vagrant up
如果出现,这个不用管:
2、初始化box镜像
2.1 通过标准存储库添加:
vagrant box add bento/oracle-7.9 --provider virtualbox
2.2 通过镜像源添加:
http://cloud.centos.org/centos/
vagrant box add --name ol76 https://yum.oracle.com/boxes/oraclelinux/ol76/ol76.box
3、查看添加的box:
vagrant box list
4、创建虚机Linux
mkdir /Volumes/DBA/Vagrantboxes
cd /Volumes/DBA/Vagrantboxes
vagrant init bento/oracle-7.9
4.1、编辑Vagrantfile配置文件
mkdir -p /Volumes/DBA/Vagrantboxes/scripts/
echo 'echo "**** hello ****"' > /Volumes/DBA/Vagrantboxes/scripts/my_script.sh
4.2、我们可以通过编辑 Vagrantfile 来更改一些 VM 属性。
cd /Volumes/DBA/Vagrantboxes
mv Vagrantfile Vagrantfilebak
cat <<EOF>/Volumes/DBA/Vagrantboxes/Vagrantfile
# Set some variables.
var_public_ip = '192.168.56.100'
Vagrant.configure("2") do |config|
config.vm.box = "bento/oracle-7.9"
config.vm.provision :shell, path: "/opt/vagrant/scripts/my_script.sh"
config.vm.network :forwarded_port, guest: 1521, host: 1521
config.vm.network "private_network", ip: "192.168.56.10"
config.vm.provider "virtualbox" do |vb|
vb.memory = 2048 # Memory size in M.
vb.cpus = 1 # Number of vCPUs
vb.name = "oracle—7.9" # VM name.
end
end
EOF
5、启动虚机linux
vagrant up
vagrant ssh
6、通过SSH登录主机
ssh 127.0.0.1 -p 2222
7 管理box镜像主机
可以使用以下命令初始化、停止、启动、重新启动、删除 VM、列出和移除镜像。
vagrant status #查看状态
vagrant halt # 关机
vagrant up # 启动
vagrant destroy -f # 删除
vagrant reload # 重启
vagrant suspend # 挂起
vagrant resume # 唤醒
vagrant box remove bento/oracle-7.6
8 box管理命令:
vagrant box list # 查看本地box列表
vagrant box add # 添加box到列表
vagrant box remove # 从box列表移除
编写不易,给个三联吧!!!
https://juejin.cn/post/6991641685851635749