Vagrant是一个比较流行的虚拟机管理软件,使用Vagrant 可以让我们用命令直接从云上下载虚拟机的镜像,然后进行创建和管理等,vagrant集成了主流的虚拟机管理工具vmvare 和 virtualbox,默认使用virtualbox
vagrant 的精髓在一个 Vagrantfile 里面,和 docker 的 Dockerfile 功能上一样。我们只需要把需要安装部署的步骤写在 Vagrantfile 里面,便可以实现轻松部署。vagrant 还支持把当前系统做成一个.box 后缀命名的镜像,类似 docker 的 image,可轻松实现环境的移植。
vagrant 可以把配置好的环境打包成一个box,分享给其他人直接使用。
在容器流行之前,Vagrant 就是用来编排虚机和自动部署开发环境的,有了 Docker/Kubernetes 之后,直接用容器来编排应用确实更简单。但是还有一些工作,例如容器平台自身的安装,多节点集群的部署测试等,更方便用虚拟机解决。
推荐安装到 D:\java…
下载链接: Vagrant
注意Vagrant没有图形界面,所以安装后也没有桌面快捷方式。
推荐安装目录d:\java…
可以在 http://www.vagrantbox.es/这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。
centos 7.2网盘地址:链接:https://pan.baidu.com/s/1ETvLampUodgfkNtK8fX2WQ
提取码:p5hg
创建目录 D:\java\virtual\v1\
在目录中执行
vagrant init centos
产生配置文件
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
(1..1).each do |i|
config.vm.define vm_name = "v#{i}" do |config|
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", vm_name]
v.customize ["modifyvm", :id, "--memory", "8192"]
v.customize ["modifyvm", :id, "--cpus", "2"]
end
config.vm.box = "centos_v1"
config.vm.hostname =vm_name
config.ssh.username = "root"
config.ssh.password = "vagrant"
# config.ssh.shell = "powershell"
#config.ssh.shell = "bash -l"
config.vm.network :private_network, ip: "192.168.56.8#{i}"
config.vm.provision :shell, :path => "bootstrap.sh"
end
end
end
#!/usr/bin/env bash
# The output of all these installation steps is noisy. With this utility
# the progress report is nice and concise.
echo "Update /etc/hosts"
cat > /etc/hosts <<EOF
127.0.0.1 localhost
192.168.56.81 v1
EOF
echo "Disable iptables"
setenforce 0 >/dev/null 2>&1 && iptables -F
### Set env ###
echo "export LC_ALL=en_US.UTF-8" >> /etc/profile
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
d:\Java\virtual\v1>vagrant box list
There are no installed boxes! Use `vagrant box add` to add some.
d:\Java\virtual\v1>vagrant box add centos_v1 ./centos_v1.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos_v1' (v0) for provider:
box: Unpacking necessary files from: file://d:/Java/virtual/v1/centos_v1.box
box:
==> box: Successfully added box 'centos_v1' (v0) for 'virtualbox'!
d:\Java\virtual\v1>vagrant box list
centos_v1 (virtualbox, 0)
#必须在vagrantfile所在的目录安装
vagrant up
使用MobaXterm连接刚才安装的1个服务器192.168.56.81
ip addr #查看ip地址
hostname #服务器名
#启动Vagrantfile(s1,s2,s3)配置所有虚拟
vagrant up
#启动具体一个虚拟机
vagrant up s1
vagrant halt #关闭所有
vagrant halt s1
安装了java开发环境
● JDK
● Mysql
● redis
● Elasticsearch
● RocketMQ
● mion
● …
能不能把已安装的虚拟机打包成一个自定义的box,分我们分享管理我们的虚拟机?
标准的虚拟机box没有vim
yum install vim -y
打包当前虚拟机,产生一个自定制的box
#关闭当前虚拟机
vagrant halt
#打包当前虚拟机
d:\Java\virtual\v1>vagrant package --base v1 --output centos_v2.box
==> v1: Exporting VM...
==> v1: Compressing package to: d:/Java/virtual/v1/centos_v2.box
vagrant halt
vagrant destroy # 删除所有的虚拟机
vagrant destroy v1 #删除s1
d:\Java\virtual\v1>vagrant destroy
v1: Are you sure you want to destroy the 'v1' VM? [y/N] y
==> v1: Destroying VM and associated drives...
#列表
d:\Java\virtual\v1>vagrant box list
centos_v1 (virtualbox, 0)
#添加
d:\Java\virtual\v1>vagrant box add centos_v2 ./centos_v2.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos_v2' (v0) for provider:
box: Unpacking necessary files from: file://d:/Java/virtual/v1/centos_v2.box
box:
==> box: Successfully added box 'centos_v2' (v0) for 'virtualbox'!
#列表
d:\Java\virtual\v1>vagrant box list
centos_v1 (virtualbox, 0)
centos_v2 (virtualbox, 0)
vagrant up
进入虚拟机查看vim,已经安装好了
详细的命令文档参考官网
https://developer.hashicorp.com/vagrant/docs/cli/package