这是我参与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
复制代码