一个只用markdown语法编写文章的90后野路子Web架构师,每天都分享一些有用的知识点,欢迎关注~
前言
1. 概述
本文主要整理了一些Vagrant常用操作。包括安装Vagrant、常用插件、Box操作、项目配置、虚拟机操作等。
2. 脑图
3. 安装软件
第一步. 安装VirtualBox虚拟机软件
第二步. 安装Vagrant软件
4. 安装常用插件
安装vagrant-vbguest插件,作用:自动安装VirtualBox Guest Additions到虚拟机Guest操作系统上
vagrant plugin install vagrant-vbguest
安装vagrant-hostmanager插件,作用:主机名管理插件,即/etc/hosts文件管理
vagrant plugin install vagrant-hostmanager
宿主机为Windows时安装vagrant-winnfsd插件,作用:允许Windows上使用NFS协议共享目录,加快目录访问速度
vagrant plugin install vagrant-winnfsd
5. Box(类似于系统镜像)操作
搜索基础Box
搜索地址: 地址见上面脑图中
添加Box到系统
vagrant box add Box名 --name=添加到系统中的名称#示例vagrant box add ubuntu/trusty64 --name=codebays/ubuntu
列出已添加的Box列表
vagrant box list
更新Box
vagrant box update --box Box名#示例vagrant box update --box=codebays/ubuntu
删除Box
vagrant box remove Box名# 示例vagrant box remove codebays/ubuntu
6. 项目
初始化项目
vagrant init [-m] [BOX名]# 注: -m 表示生成的Vagrantfile最小化,不带任何注释# 示例 vagrant init codebays/ubuntu
校验Vagrantfile文件语法是否正确
vagrant validate
7. Vagrant配置文件
文件名
Vagrantfile
语法
Ruby语言语法
支持的版本号:1和2
Vagrant.configure("2") do |config| # 配置项...end
配置Vagrant软件行为,如使用的插件等
# 使用插件,若未安装则自动安装config.vagrant.plugins = ["vagrant-vbguest"]# 不允许输出到标准输出的敏感字符config.vagrant.sensitive = ["password"]
配置SSH到Guest系统到选型
# SSH上代理转发config.ssh.forward_agent = true# 执行shellconfig.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
配置使用的Box信息
# 使用的Box名config.vm.box = "huangyandong/centos_7"# Box下载地址与版本号config.vm.box_url = nilconfig.vm.box_version = nil# 虚拟机启动时是否检测更新Boxconfig.vm.box_check_update = false
配置虚拟机参数
# 指定VirtualBox虚拟机配置config.vm.provider "virtualbox" do |vb| # 虚拟机名称 vb.name = "codebays" # 配置内存、CPU、快照目录等 vb.customize ["modifyvm", :id, "--memory", "1024"] vb.customize ["modifyvm", :id, "--cpus", "1"] vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] vb.customize ["modifyvm", :id, "--snapshotfolder", "/backup"]end
配置网络
# 网络总共3种配置: # 1). 端口映射 # 2). 私网IP(只允许本机访问) # 3). 公网IP(局域网种其他机器可以访问)# 端口映射,将虚拟机中80端口映射为宿主机8080config.vm.network :forwarded_port, guest: 80, host: 8080# 私网IPconfig.vm.network :private_network, ip:"10.10.10.111"
配置共享目录
# Vagrant默认将当前目录映射为虚拟机中/vagrant目录# 禁止默认映射config.vm.synced_folder ".", "/vagrant", disabled: true# 将当前目录中src目录映射为虚拟机中/srv/website目录config.vm.synced_folder "src/", "/srv/website"
上传宿主机文件到虚拟机中
# 上传文件到虚拟机config.vm.provision "file", source: "./test", destination: "/test"
虚拟机启动时执行shell脚本命令
# 直接执行命令config.vm.provision "shell", inline: "echo Hello, World"# 上传shell脚本执行config.vm.provision :shell do |shell| shell.path = "./test.sh" shell.args = ["arg1", "arg2"]end
最终配置文件
8. 虚拟机操作(注:需要在Vagrantfile文件所在目录下执行)
启动
vagrant up
关闭
vagrant halt
重启
vagrant reload
挂起
vagrant suspend
恢复
vagrant resume
查看状态
vagrant status
查看端口映射信息
vagrant port
SSH登录到虚拟机
vagrant ssh
打包虚拟机环境成Box
vagrant package --output=/tmp/myvm.box
销毁虚拟机
vagrant destroy
==END