服務器虛擬化資源解決方案,我推薦VritualBox+Vagrant

這是我參與8月更文挑戰的第13天,活動詳情查看:8月更文挑戰html

文章目錄

Vagrant管理VM虛擬機

1、VirtualBox安裝

virtualbox虛擬技術介紹:請移步[virtualbox--百度百科](https://baike.baidu.com/item/VirtualBox/5842786?fr=aladdin)
複製代碼

2、安裝vagrant

vagrant是一個操做虛擬機的工具.是一個基於Ruby的工具,用於建立和部署虛擬化開發環境。    
經過命令和配置文件來管理虛擬機,很快就能完成一套開發環境的部署,並能夠打包傳播,統一了開發環境,也解決了重複配置環境的麻煩.

複製代碼
命令 解釋
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 刪除虛擬機
一、建立虛擬機
優先安裝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銷燬便可
二、複製虛擬機
關閉須要複製的虛擬機:先關後複製
複製代碼
  • 進入虛擬機所在目錄:vagrant package --output centos7-test.box
  • 而後在將獲得的centos7-test.box添加到box鏡像中去:vagrant box add box-name centos7-test.box
  • 再建立一個新目錄初始化虛擬機便可:vagrant init box-name
  • 最後就能夠啓動虛擬機了:vagrant up, 注意修改網絡
三、批量建立虛擬機
  • 第一步:環境準備,將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,由於是多個,因此須要跟上須要啓動的虛擬機名稱
四、配置網絡
公司號段都是爲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
複製代碼
相關文章
相關標籤/搜索