1. 认识Vagrant
Vagrant是一个虚拟机使用软件,使用Base Box盒子的系统,运行虚拟环境,完成虚拟机的部署。
Vagrant的优点有:
- 能够快速部署,比传统的虚拟机安装快(原始的虚拟机装载镜像,需要一步一步的部署)。
- 可以将已经部署完的虚拟系统(装完JRE、MySQL、应用等服务)打包,打包的文件可以再次导入。
PS:可以将Vagrant看做一个管理VMware的工具,Base Box就是已经加工好的ISO镜像。
Vagrant下载地址:https://www.vagrantup.com/
Virtualbox下载地址:https://www.virtualbox.org/
Vagrant box下载地址:https://app.vagrantup.com/
2. 单服务器
按照下列操作,即可启动虚拟机。
单服务器启动
# 查看box列表
vagrant box list
# 新增box 从网上下载chef/centos7.6
# vagrant box add chef/centos7.6
# 新增box 安装已下载好的box
vagrant box add centos7.6 Vagrant-CentOS-7.6-x86_64.VirtualBox-base.box
# 新建文件夹,初始化box系统
vagrant init centos7.6
# 启动box centos
# 可能启动失败:Warning: Authentication failure. Retrying...
# 若果失败,需要在VagrantFile里添加 username 和 password(下面有措施)
vagrant up
# 查看状态
vagrant status
# ssh连接box centos
vagrant ssh
VagrantFile配置文件
# 配置vagrantd的用户名和密码
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
# 配置私有网络
config.vm.network "private_network", ip: "192.168.33.10"
# 配置公有网络
config.vm.network "public_network"
# 配置共享目录 默认/vagrant
config.vm.synced_folder "../data", "/vagrant_data",
create: true, owner: "root", group: "root"
常用命令
# 停止box centos
vagrant halt
# 重启box centos
vagrant reload
# 暂停/恢复box centos
vagrant suspend
vagrant resume
# 销毁box centos
vagrant destroy
# 移除box
vagrant box remove centos7.6
# 打包 会自动生成package.box
vagrant package
# 装载box
vagrant box add centos7.6 package.box
3. 多服务器
多服务器安装和单服务器一样的操作,但是需要更改配置文件完成操作,在初始化完系统后,需要对配置文件进行修改操作。
多服务启动
# 新增box 安装已下载好的box
vagrant box add centos7.6 Vagrant-CentOS-7.6-x86_64.VirtualBox-base.box
# 新建文件夹,初始化box系统
vagrant init centos7.6
# 先不启动,修改配置文件,按照下面内容操作
# 修改完配置文件后启动即可
vagrant up
在configure中间添加以下内容。
修改配置文件
# 开发环境
config.vm.define "development" do |development|
development.vm.network "private_network", ip: "192.168.33.12"
development.vm.hostname = "duomu-dev"
development.vm.synced_folder "development", "/vagrant"
development.ssh.username = 'vagrant'
development.ssh.password = 'vagrant'
end
# 生产环境
config.vm.define "production" do |production|
production.vm.network "private_network", ip: "192.168.33.13"
production.vm.hostname = "duomu-prod"
production.vm.synced_folder "produciton", "/vagrant"
production.ssh.username = 'vagrant'
production.ssh.password = 'vagrant'
end
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.require_version ">= 1.6.0"
boxes = [
{
:name => "duomu1",
:eth1 => "192.168.56.110",
:mem => "1024",
:cpu => "2"
}
{
:name => "duomu2",
:eth1 => "192.168.56.111",
:mem => "8192",
:cpu => "4"
}
]
Vagrant.configure(2) do |config|
config.vm.box = "centos7.6"
# 第一次安装时请注释以下三行配置,配置ssh密码验证(sshd_config)后再打开
config.ssh.username = 'duomu'
config.ssh.password = ''
config.ssh.insert_key = true
# ssh config end
config.vm.box_check_update = false
if Vagrant.has_plugin?("vagrant-vbguest")
config.vbguest.auto_update = false
end
# 禁用系统默认的共享目录
config.vm.synced_folder '.', '/vagrant', disabled: true
boxes.each do |opts|
config.vm.define opts[:name] do |config|
config.vm.hostname = opts[:name]
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", opts[:name]]
v.customize ["modifyvm", :id, "--memory", opts[:mem]]
v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
end
config.vm.network :private_network, ip: opts[:eth1]
end
end
config.vm.synced_folder "./share", "/mnt/app-data", nfs_version: "3"
config.bindfs.bind_folder "/mnt/app-data","/share",force_user:"vagrant",force_group:"vagrant",o:"nonempty"
end