文章目录
使用vmware手动创建虚拟机确实很繁琐,如果我们需要初始一个100个节点的kubernetes集群,那肯定会神经衰落的。接下来介绍一种自动vagrant创建虚拟机的方法。
vagrant是一种自动供应(auto provisioning)全部虚拟机的工具, 和Docker采用完全不同层次的虚拟化策略(docker是只将运行时,依赖包打进容器,内核和宿主机是共用的)。
基本介绍
provider
vagrant可以使用不同厂商(vagrant provider)的实现供应虚拟机, 如virtualbox,vmware,甚至是docker. provider这个概念可以代表一切实例供应实现,甚至aws ecs,阿里云这些云供应商也可以作为provider.
一个厂商实现对应一个插件,比如要创建vmware provider的厂商实现,就要安装provider对应的插件(plugin).
vmware provider对应的插件叫做vmware-desktop
box
vagrant box就是类似docker镜像的概念,你把一个虚拟机打包成box,传送给其他人。其他人就可以创建一个完全一毛一样的虚拟机。这就是它官网所说的彻底杜绝"在我机器上是可以的(working on my machine)"甩锅行为。
安装vagrant
戳下面 https://www.vagrantup.com/downloads 下载
下载完重启机器。
windows 10
直接安装msi
centos 7
CentOS 7安装图形界面(必须),然后去下载virtual box rpm
可能会缺少依赖:
yum install compat-libstdc++-33 SDL
yum -y install gcc make perl
yum install kernel-devel
rcvboxdrv setup
需要安装内核模块,如果setup命令成功,日志类似这种:
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
使用virtualbox创建虚拟机
step 1. 启动virtualbox
virtualbox
step 2. 下载box
# 下载centos 7,选择virtualbox类型
https://app.vagrantup.com/centos/boxes/7
Step 3. Vagrantfile
编写Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
end
在Vagrantfile
同级目录启动实例:
vagrant up
你就可以看到virtualbox中增加了一个实例。
使用vmware创建虚拟机
step 1. 安装vmware provider插件vmware-desktop
我的环境是vmware workstation 15 pro. 安装相关插件
-
下载vmware-desktop插件
vagrant plugin install vagrant-vmware-desktop
step 2. 下载box
这个下载时间有点长,我下载的centos 7的。
下载地址:https://app.vagrantup.com/centos/boxes/7
每个box有provider属性,下载对应provider的box.(此处为vmware-desktop)
本地安装box:
# vagrant box add box_name box_path
vagrant box add centos/7 CentOS-7-x86_64-Vagrant-2004_01.VMwareFusion.box
step 3. Vagrantfile
ruby语法,倒是不用学。
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
end
初始化机器:
vagrant up --provider vmware_desktop
启动机器:
# vagrant up --provider vmware_desktop
Bringing machine 'default' up with 'vmware_desktop' provider...
==> default: Verifying vmnet devices are healthy...
==> default: Preparing network adapters...
==> default: Starting the VMware VM...
==> default: Waiting for the VM to receive an address...
==> default: Forwarding ports...
default: -- 22 => 2222
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Configuring network adapters within the VM...
==> default: Rsyncing folder: /cygdrive/d/geoway/workbunch/vagrant-test/ => /vagrant
step 3. 连接机器
连接机器
$ vagrant ssh
或者使用xshell
导入密钥,一般在工作目录的(含有VagrantFile的目录)的.vagrant\machines\default\vmware_desktop\private_key
根据xshell引导选择上述路径私钥导入进去。
Reference List
- https://www.vagrantup.com/docs/providers/vmware/boxes