Vagrant
最后更新于:2022-04-02 03:03:22
[TOC]
> [vagrant box下载](https://app.vagrantup.com/boxes/search)
## 推荐版本
vagrant 2.0.4
VirtualBox 5.2.12
## 插件
1. vagrant-vbguest:自定义共享目录(建议安装)
`vagrant plugin install vagrant-vbguest`
有时候无法使用共享目录 可以安装此插件
## 流程
### 1. 添加虚拟机
1. `vagrant box add centos/7` 官网下载 `centos/7` 为官网包
2. 添加镜像 下载xxx.box `vagrant box add centos_test /Downloads/centos7.box` cetnos_test 名称可随意
### 2. `vagrant init cetnos/7` 初始化
* 新建**centos_7_64**目录
* 在该目录下 `vagrant init cetnos/7 `
在到centos_7_64目录的`vagrant`文件 修改
```
config.vm.box = "centos/7" 修改对应的box
```
4. `vagrant up` 启动
5. 修改`Vagrantfile`文件的配置
```bash
config.vm.synced_folder ".","/vagrant",type:"virtualbox"
//如果是没有同步没有权限的文件用如下方法 (适合window)
config.vm.synced_folder "bin", "/usr/local/bin", type: "rsync",
rsync__exclude: ".git/",
rsync__args: ["--verbose", "--rsync-path='sudo rsync'", "--archive", "--delete", "-z"]
#这种方式可以用主机上的mysql管理软件连接虚拟机的mysql
config.vm.network "public_network", ip: "192.168.1.11"
```
6. 连接虚拟机
- window 用户登录
方法一
```
主机:127.0.0.1
端口号:2222
用户名:vagrant
密码:私钥
```
方法二
```
通过choco 安装 ssh
vagrant ssh
```
方法三,通过修改虚拟机的登录方式,改为账号密码
> [参考](https://blog.csdn.net/trackle400/article/details/52755571/)
```
> yum list installed | grep openssh-server
> sudo vim /etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin yes
PasswordAuthentication yes
> passwd
> sudo systemctl restart sshd
```
- mac 用户登录
`vagrant ssh`
**错误处理**
1. `vagrant up` 时,`/sbin/mount.vboxsf: mounting failed with the error: No such device`
在宿主机命令窗口安装 `vagrant plugin install vagrant-bindfs`
2. 疑问:如果有任何疑问,可以打开gui为true 查看错具体错误
3. 如果发现无法进行实时同步,可更改虚拟机的同步目录
`config.vm.synced_folder ".", "/vagrant_data"`
## 优化
1. 优化虚拟机
```
config.vm.provider "virtualbox" do |vb|
#虚拟机名称
vb.name = "ubuntu_box"
#虚拟机主机名
config.vm.hostname = "ubox"
#配置虚拟机内存和CPU
vb.memory = "1024"
vb.cpus=2
end
```
2. 自动更新源
```
config.vm.provision "shell", inline: <<-SHELL
sudo yum -y update
cd /etc/yum.repos.d
sudo mv CentOS-Base.repo CentOS-Base.repo.bak
sudo wget http://mirrors.163.com/.help/CentOS-Base-163.repo
sudo yum clean all
sudo yum makecache
SHELL
```
3. 同步文件
[官方说明][1]
```
1. ngnix
sudo /etc/ngnix/ngnix.conf
http{
sendfile off;
}
2. apache
默认已关
EnableSendfile Off
```
---
## 打包
`vagrant package --output xxx.box --base 虚拟机名称`
## 其他技能
1. 设置同步文件的所有者
```
config.vm.synced_folder "src/", "/srv/website",
owner: "root", group: "root"
```
## 常用命令
|命令|说明|
|---|---|
|vagrant box list|查看box列表|
|vagrant box add|新增一个box|
|vagrant box reomve|删除制定box|
|vagrant box list|查看box列表|
----------
|命令|说明|
|---|---|
|vagrant init|初始化box|
|vagrant up|启动虚拟机|
|vagrant ssh|登录虚拟机|
|vagrant suspend|休眠|
|vagrant resume|环形休眠|
|vagrant halt|关闭虚拟机|
|vagrant reload|重启,更新配置|
> 实际使用过程中,通过 vagrant suspend/resume 来快速暂停 / 恢复最为方便。
[1]: https://www.vagrantup.com/docs/synced-folders/virtualbox.html
';