Vagrant 创建虚拟环境
2017-09-25 本文已影响0人
ITriangle
下载和安装基本组件
下载一般很简单,安装也很简单,可以采用 dpkg
和 apt-get
的安装方式。
- 下载安装 virtualbox:稳定版VirtualBox
- 下载系统镜像box:下载 iso 地址
- 下载安装 vagrant:下载 Vagrant 地址
单机虚拟环境
注意,以下操作在存放虚拟环境的目录下进行:
- 添加下载的系统镜像box:
vagrant box add add_tag iso_box_path
- 利用下载的box初始化虚拟环境:
vagrant init add_tag
- 主要配置:
- 虚拟环境网络,最好不要和本机同网络段:
config.vm.network "private_network", ip: "192.168.33.10"
- 共享目录,统一为好:
config.vm.synced_folder "local_share_dir", "/virtual_dir"
- 虚拟环境网络,最好不要和本机同网络段:
- 启动创建的虚拟环境P:
vagrant up
- 进入虚拟环境:
vagrant ssh
集群虚拟环境
集群相当于有多个单机,所以就是配置多个单机。这里,采用先写配置文件,再使用 vagrant up
启动集群的方式。上面单机,是用初始化的方式创建单机虚拟环境,运行vagrant init
后会生成 Vagrantfile
文件。集群虚拟环境 Vagrantfile
配置如下:
# box 存放的绝对路径
# config.vm.box = "iso_box_absolute_path"
config.vm.box_version = "2.3.1"
config.vm.box_check_update = false
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "node#{i}" do |node|
# 设置虚拟机的Box
node.vm.box = "ubuntu/trusty64"
# 设置虚拟机的主机名
node.vm.hostname="node#{i}"
# 设置虚拟机的IP
node.vm.network "private_network", ip: "192.168.59.#{i}"
# 设置主机与虚拟机的共享目录
node.vm.synced_folder "~/Desktop/share", "/home/vagrant/share"
# VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "node#{i}"
# 设置虚拟机的内存大小
v.memory = 2048
# 设置虚拟机的CPU个数
v.cpus = 1
end
# 使用shell脚本进行软件安装和配置
node.vm.provision "shell", inline: <<-SHELL
# Shell 命令
SHELL
end
end
end
- 上面的配置创建了三个节点:node1 , node2 , node3
-
vagrant up
会按照Vagrantfile
生成集群- box 系统路径
- private ip
- 用户/密码: vagrant/vagrant
- 共享目录: 桌面上的share目录将与虚拟机内的/home/vagrant/share目录内容实时同步
- 内存:2GB
- CPU: 1
集群命令
- 启动单个虚拟机:
vagrant up node1
- 启动多个虚拟机:
vagrant up node1 node3
- 启动所有虚拟机:
vagrant up
SSH免密码登陆
- 使用vagrant ssh命令登陆虚拟机必须切换到Vagrantfile所在的目录,而直接使用虚拟机IP登陆虚拟机则更为方便:
ssh vagrant@192.168.59.2
。此时SSH登陆需要输入虚拟机vagrant用户的密码,即vagrant - 将主机的公钥复制到虚拟机的authorized_keys文件中即可实现SSH免密码登陆:
cat $HOME/.ssh/id_rsa.pub | ssh vagrant@192.168.59.2 'cat >> $HOME/.ssh/authorized_keys'
vagrant 常用命令
vagrant init # 初始化
vagrant up # 启动虚拟机
vagrant halt # 关闭虚拟机
vagrant reload # 重启虚拟机
vagrant ssh # SSH 至虚拟机
vagrant status # 查看虚拟机运行状态
vagrant destroy # 销毁当前虚拟机
vagrant package #分发box