Linux服务器虚拟化资源解决方案,我推荐VritualBox+Vagrant

Vagrant管理VM虚拟机

一、VirtualBox安装
virtualbox虚拟技术介绍:请移步[virtualbox--百度百科](https://baike.baidu.com/item/VirtualBox/5842786?fr=aladdin)
  • 附下载地址:https://www.virtualbox.org/wiki/Downloads
二、安装vagrant
vagrant是一个操作虚拟机的工具.是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。    
通过命令和配置文件来管理虚拟机,很快就能完成一套开发环境的部署,并可以打包传播,统一了开发环境,也解决了重复配置环境的麻烦.
  • vagrant下载地址:https://www.vagrantup.com/downloads.html
    • https://releases.hashicorp.com/vagrant/2.2.10/vagrant_2.2.10_x86_64.msi
  • box镜像地址:http://cloud.centos.org/centos/7/vagrant/x86_64/images/
    • http://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box
    • http://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7.box
命令解释
vagrant box list查看目前已有的box
vagrant box add [local-box-name] [local-box-file / remote-box-file]新增加一个本地box系统镜像
vagrant box remove [local-box-name]删除指定box
vagrant init [local-box-name]初始化配置vagrantfile
vagrant up启动虚拟机
vagrant ssh登录虚拟机
vagrant suspend挂起虚拟机
vagrant reload重启虚拟机<修改Vagrantfile后使用>
vagrant halt关闭虚拟机
vagrant resume恢复本地虚拟机
vagrant status查看虚拟机状态
vagrant destroy删除虚拟机
1、创建虚拟机
优先安装virtualBox、再安装vagrant,
打开virtualbox管理-全局设定:指定虚拟电脑位置,不使用默认配置到C盘,指定其他路径保存
  • 第一步:vagrant box add [添加本地镜像名,如:centos7] *.box系统镜像文件[可是下载到本地,也可以使用下载地址]
  • 第二步:vagrant box list 查看加载到本地的镜像box系统
  • 第三步:vagrant init [刚刚add的box系统镜像名称],会在当前目录生成Vagrantfile
这里需要创建并进入其他盘符下的目录,因为创建的Vagrantfile会在启动虚拟机下生成虚拟机镜像
数据文件.vagrant及虚拟机的名称的目录,virtualbox能找到的vbox文件,编辑Vagrantfile

# 这个配置是init初始化生成的镜像名称<如果是add就是本地的,如果不是就是远程下载的>
config.vm.box = "centos7"

# 找到这个配置,去掉#注释,使用宿主机的公共网络
config.vm.network "public_network"

# 找到 这个配置修改为下面数据:内存、cpu以及名称
config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
    vb.name= "centos7-test" # 这才是虚拟机的名称,不要在意vagrant init 初始化的名称,因为那么是box镜像名称
    vb.cpus= 2
end
    
  • 第四步:vagrant up 当前目录下启动虚拟机,这时打开virtualbox就会看到一个正在运行的虚拟机
  • 第五步:win下使用cmd命令行进入系统:vagrant ssh [当前目录执行]
默认进入用户vagrant,密码也是vagrant;
默认密钥:当前目录下:.vagrant\machines\default\virtualbox\private_key
[vagrant@localhost ~]#  sudo -i 切换root帐号
修改:/etc/ssh/sshd_config,允许root使用密码登录;
- PasswordAuthentication no 修改成:PasswordAuthentication yes
- 使用sed替换命令:sed -i 's/PasswordAuthentication no /PasswordAuthentication yes/g'  /etc/ssh/sshd_config
- 退出保存后,需要重启ssh服务:systemctl restart sshd.service
  • 第六步:自带yum安装命令:yum install vim 缺啥装啥,然后passwd也可以修改当前用户的密码
  • 删除虚拟机,不需要停止虚拟机,直接进入虚拟机目录:Vagrant destory销毁即可
2、复制虚拟机
关闭需要复制的虚拟机:先关后复制
  • 进入虚拟机所在目录:vagrant package --output centos7-test.box
  • 然后在将得到的centos7-test.box添加到box镜像中去:vagrant box add box-name centos7-test.box
  • 再创建一个新目录初始化虚拟机即可:vagrant init box-name
  • 最后就可以启动虚拟机了:vagrant up, 注意修改网络
3、批量创建虚拟机
  • 第一步:环境准备,将box系统镜像add添加到本地,vagrant box list查看
  • 第二步:新建目录创建Vagrantfile:type nul>Vagrantfile
  • 第三步:修改Vagrantfile,如下信息<记住网络前三段>:
boxes = [
	{
		:name => "master",
		:eth1 => "192.168.2.113",
		:mem => "2048",
		:cpu => "2",
		:sshport => 22230
	},
	{
		:name => "slave1",
		:eth1 => "192.168.2.114",
		:mem => "2048",
		:cpu => "2",
		:sshport => 22231
	},
	{
		:name => "slave2",
		:eth1 => "192.168.2.115",
		:mem => "2048",
		:cpu => "2",
		:sshport => 22232
	}
]
Vagrant.configure(2) do |config|
	config.vm.box = "centos7"
	boxes.each do |opts|
		config.vm.define opts[:name] do |config|
			config.vm.hostname = opts[:name]
			config.vm.network :public_network, ip: opts[:eth1]
			config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
		config.vm.network "forwarded_port", guest: 22, host: opts[:sshport]
			config.vm.provider "vmware_fusion" do |v|
				v.vmx["memsize"] = opts[:mem]
				v.vmx["numvcpus"] = opts[:cpu]
			end
			config.vm.provider "virtualbox" do |v|
				v.customize ["modifyvm", :id, "--memory", opts[:mem]]
			v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
				v.customize ["modifyvm", :id, "--name", opts[:name]]
			end
		end
	end
end
----------
tip:如果在boxes中没有指定网卡ip,可以在network网络配置auto_config: true自动配置,默认是false
  • 第四步:可以放心的启动虚拟机了:vagrant up,因为是多个,所以需要跟上需要启动的虚拟机名称
4、配置网络
公司号段都是为192.168.2.xxx的局域网;所以想配置不同的ip端来本地使用;
假使开发测试环境都是本地ip,那么使用的域名,app测试需要本地hosts映射;
  • 创建虚拟机编辑Vagrantfile选择的网络public_network是本地ip段未使用的ip,公司局域网公用
  • 如果选择private_network,且不能与本地ip公用网段,则只能自己本机使用
  • 进入虚拟机修改网络:vim /etc/sysconfig/network-scripts/ifcfg-eth1
cmd命令下vi无法正常编辑:
sed -i 's/old_ip/new_ip/g'  /etc/sysconfig/network-scripts/ifcfg-eth1
重启网卡:
service network restart

日拱一卒无有尽,功不唐捐终入海!

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

职说测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值