這是我參與8月更文挑戰的第13天,活動詳情查看:8月更文挑戰html
virtualbox虛擬技術介紹:請移步[virtualbox--百度百科](https://baike.baidu.com/item/VirtualBox/5842786?fr=aladdin)
複製代碼
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盤,指定其餘路徑保存
複製代碼
這裏須要建立並進入其餘盤符下的目錄,由於建立的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,密碼也是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
複製代碼
關閉須要複製的虛擬機:先關後複製
複製代碼
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
複製代碼
公司號段都是爲192.168.2.xxx的局域網;因此想配置不一樣的ip端來本地使用;
假使開發測試環境都是本地ip,那麼使用的域名,app測試須要本地hosts映射;
複製代碼
cmd命令下vi沒法正常編輯:
sed -i 's/old_ip/new_ip/g' /etc/sysconfig/network-scripts/ifcfg-eth1
重啓網卡:
service network restart
複製代碼