Vagrant的学习(macos系统)
学习地址:
Mac OS 使用 Vagrant 管理虚拟机VirtualBox
MAC-OS环境下Vagrant的安装及使用
vagrant-配置内容
vagrant-配置互信
什么是Vagrant
构建虚拟开发环境的工具,类似于Docker,但存在差异(目前还没搞清楚区别是什么- -)
Vagrant 能解决什么问题
统一完成虚拟开发环境的构建,以免出现版本迭代导致的一些ops的问题
如何搭建Vagrant的环境
Box下载地址: Vagrant-Box下载地址
- Vagrant的安装
// 安装 virtualbox
brew install virtualbox
// 安装 vagrant
brew install vargant
// `重装`vagrant
brew reinstall vagrant
// 安装 box 公开boxs例如:gubuntu/trusty64,或者从 Box下载地址中下载,通过本地的方式加载)
vagrant box add [box_name]
- vagrant的命令
// 查询添加的box类型
vagrant box list
// 初始化vagrantfile,即vagrant的配置文件
vagrant init [box_name]
// 启动box_name的vm 【这里踩坑了很久,大概1~2小时,启动失败】
vagrant up
// 连接VM
vagrant ssh
// 退出VM
VM环境下: exit
// 关闭VM
vagrant halt
// 重启VM
vagrant reload
- 启动VM失败的问题
报错信息(打开Virtual Box的时候,启动VM报错内容): kernel driver is not installed
原因:这里是由于macos系统,对安全问题的保障,没有通过安全允许,导致启动失败;
解决:打开【Perfrence -> Security and Privilege 】完成解锁(左下角)【点击Allow
或者点击Detail
选中Oracle Americal
允许】,最后重启电脑,就可以启动我们的VM了
- 使用vagrantfile配置多个VM
> > # VM1
> > config.vm.define "node1" do |vb|
> > config.vm.provider "virtualbox" do |v|
> > v.memory = 1024
> > v.cpus = 1
> > end
> > vb.vm.host_name = "node1"
> > vb.vm.network :public_network, ip: "172.16.1.101"
> > vb.vm.box = "ubuntu/trusty64"
> > end
> >
> > # VM2
> > config.vm.define "node2" do |vb|
> > config.vm.provider "virtualbox" do |v|
> > v.memory = 1024
> > v.cpus = 1
> > end
> > vb.vm.host_name = "node2"
> > vb.vm.network :public_network, ip: "172.16.1.102"
> > vb.vm.box = "ubuntu/trusty64"
> > end
> >
> > # VM3
> > config.vm.define "node3" do |vb|
> > config.vm.provider "virtualbox" do |v|
> > v.memory = 1024
> > v.cpus = 1
> > end
> > vb.vm.host_name = "node3"
> > vb.vm.network :public_network, ip: "172.16.1.103"
> > vb.vm.box = "ubuntu/trusty64"
> > end
> > end
- 配置SSH互信
什么是SSH互信?SSH互信,说白了,就是在目标机器上,预先设置好经过认证的key文件,当需要访问目标机器时,目标机器通过key文件,对访问者进行自动认证,从而实现互信。
- 配置互信原理
1. 首先,在要配置互信的机器上,生成各自的经过认证的key文件;
2. 其次,将所有的key文件汇总到一个总的认证文件中;
3. 将这个包含了所有互信机器认证key的认证文件,分发到各个机器中去;
4. 验证互信.
- 具体操作
1\. 创建SSH互信的认证文件 【1\. 创建文件夹 2\. 写入权限 3\. 创建认证文件 rsa 4\. 创建认证文件 dsa】
> > // node1
> > [rac@ocm1 ~]$ mkdir .ssh
> > [rac@ocm1 ~]$ chmod 755 .ssh
> > [rac@ocm1 ~]$ /usr/bin/ssh-keygen -t rsa
> > [rac@ocm1 ~]$ /usr/bin/ssh-keygen -t dsa
> > // node2
> > [rac@ocm2 ~]$ mkdir .ssh
> > [rac@ocm2 ~]$ chmod 755 .ssh
> > [rac@ocm2 ~]$ /usr/bin/ssh-keygen -t rsa
> > [rac@ocm2 ~]$ /usr/bin/ssh-keygen -t dsa
> > 2\. 将认证文件内容汇总到一个总的认证文件
> > // node1
> > [rac@ocm1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> > [rac@ocm1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> > // node2
> > [rac@ocm1 ~]$ ssh rac@ocm2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> > [rac@ocm1 ~]$ ssh rac@ocm2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> > 3\. 拷贝到需要共享的节点
> > // node2 访问 node1
> > [rac@ocm2 ~]$ rcp ~/.ssh/authorized_keys ocm2:~/.ssh/authorized_keys
> > 4\. Verify the result
> > [rac@ocm2 ~]$ssh rac@ocm1
如何使用Vagrant
- 配置vagrantfile文件,用于配制vm的信息
- 在vagrantfile的文件夹下,用vagrant up命令启动VM
- 使用vagrant ssh 【node_name】连接远程VM
网友评论