Vagrant+VirtualBox创建虚拟机
一 Vagrant 介绍
Vagrant 是一个软件,可以自动化虚拟机的安装和配置流程,用来管理虚拟机,如 VirtualBox、VMware、AWS 等目前市面上个人 PC 的主流操作系统不是Windows 就是 MacOS。对于这些用户,如果需要用 Linux 环境进行开发或学习,使用虚拟机无疑是最方便的选择。主要好处是可以提供一个可配置、可移植和复用的软件环境,可以使用 shell、chef、puppet 等工具部署。所以 vagrant 不能单独使用,如果你用它来管理自己的开发环境的话,必须在自己的电脑里安装了虚拟机软件,如 virtualbox。
更进一步,Vagrant 提供一个命令行工具 vagrant,通过这个命令行工具可以直接启动一个虚拟机,当然你需要提前定义一个 Vagrantfile 文件,这有点类似Dockerfile 之于 docker了。可以通过编写一个 Vagrantfile 来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,比如自动执行一个 shell script 来安装一些必备的开发工具,如Mysql。这意味着,当你需要在多台机器间同步开发进度时,只需要同步Vagrantfile,就可以保证各台机器拥有一致的开发环境。另外,即便对于计算机小白用户,Vagrant也是一个利器。以前我们为了学习一门语言,必须先手动安装这门语言的编译环境。有了 Vagrant后,我们可以下载别人写好的 Vagrantfile,然后运行 vagrant up,vagrant 就会自动下载虚拟机镜像,自动加载镜像并配置虚拟机,然后交给我们一个即开即用的学习环境
二 安装使用
下载介质
下载并安装virtualbox
https://www.virtualbox.org/wiki/Downloads
下载并安装vagrant
https://www.vagrantup.com/downloads.html
下载box
访问[https://app.vagrantup.com/boxes/search)(https://app.vagrantup.com/boxes/search),点击Downloads
;
点击版本,进入链接
地址栏后添加/providers/virtualbox.box得到下载地址https://app.vagrantup.com/centos/boxes/7/versions/1905.1/providers/virtualbox.box
安装
步骤一 添加box
vagrant box add ubuntu xenial-server-cloudimg-amd64-vagrant.box
步骤二 初始化vagrant:
vagrant init ubuntu
(ubuntu 为),生成Vagrantfile
步骤三 安装并启动虚拟机
vagrant up
安装并启动虚拟机,
注意:
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
三 使用xshell链接主机(秘钥方式)
主机名:127.0.0.1
用户名:vagrant
秘钥:如图,路径下
密码:vagrant
四 使用xshell链接主机(用户密码方式)
sudo vi /etc/ssh/sshd_config
修改PubkeyAuthentication 和 PasswordAuthentication 为yes
五 批量启动多个虚拟机
- 修改配置文件
Vagrantfile
,一下我添加了6个虚拟机
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
config.vm.define "centos1" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
vb.vm.host_name = "centos1"
vb.vm.box = "centos"
vb.vm.network "forwarded_port",guest:22,host:2201
vb.vm.network "private_network", ip: "10.5.192.11"
end
config.vm.define "centos2" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
vb.vm.host_name = "centos2"
vb.vm.box = "centos"
vb.vm.network "forwarded_port",guest:22,host:2202
vb.vm.network "private_network", ip: "10.5.192.12"
end
config.vm.define "centos3" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
vb.vm.host_name = "centos3"
vb.vm.box = "centos"
vb.vm.network "forwarded_port",guest:22,host:2203
vb.vm.network "private_network", ip: "10.5.192.13"
end
config.vm.define "ubuntu1" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
vb.vm.host_name = "ubuntu1"
vb.vm.box = "ubuntu"
vb.vm.network "forwarded_port",guest:22,host:2204
vb.vm.network "private_network", ip: "10.5.192.14"
end
config.vm.define "ubuntu2" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
vb.vm.host_name = "ubuntu2"
vb.vm.box = "ubuntu"
vb.vm.network "forwarded_port",guest:22,host:2205
vb.vm.network "private_network", ip: "10.5.192.15"
end
config.vm.define "ubuntu3" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
vb.vm.host_name = "ubuntu3"
vb.vm.box = "ubuntu"
vb.vm.network "forwarded_port",guest:22,host:2206
vb.vm.network "private_network", ip: "10.5.192.16"
end
end
-
重启虚拟机
vagrant up
六 修改root用户
创建的虚拟机默认只用vagrant的用户名和密码root用户没用密码,给root用户设置密码的方法:
# 切换用户
sudo -i
# 修改密码
passwd
# 输入密码
七 配置指定ip登录
- 添加
config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
- 指定ip
vb.vm.network "private_network", ip: "10.5.192.11"
# 这个必须添加在前面
config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
# 配置一台机器
config.vm.define "centos1" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
vb.vm.host_name = "centos1"
vb.vm.box = "centos"
vb.vm.network "forwarded_port",guest:22,host:2201
vb.vm.network "private_network", ip: "10.5.192.11"
end
八 常用的命令
# 启动虚拟机
vagrant up
# 启动指定的虚拟机
vagrant up centos1
# 重启虚拟机
vagrant reload
# 重启指定的虚拟机
vagrant reload centos1
# 关闭所有的虚拟机
vagrant halt
参考链接
https://www.jianshu.com/p/d9cc60a6ee6b
https://blog.csdn.net/gleaming_shen/article/details/80860493
https://www.jianshu.com/p/904aee7914a2