学习vagrant
2015-09-07 16:51
176 查看
http://xiajian.github.io/2015/04/28/%E5%AD%A6%E4%B9%A0vagrant/
进行连接的,尝试
注意: 不要在虚拟机中运行
同步目录
同步目录: 貌似和共享文件夹又有所不同,vagrant会自动sync文件,所以,这句话表示存在两个文件还是一个文件。不过,同步和共享肯定是不同的。
共享目录作用: 本地开发使用宿主机器,服务器使用虚拟机。
自动配置
Vagrant内建了对自动配置的支持,其可以在
举个例子,比如安装apache:
首先,在Vagrantfile的相同目录中,保存名为
然后,在Vagrantfile写入如下的配置:
或者直接写在Vagrantfile文件中:
网络
网络主要就是端口映射和内网IP的设置,端口映射的配置为:
共享
共享分发开发环境,需要一个免费的HashiCorp's Atlas帐号。使用命令如下:
注: 感觉vagrant所做的,其实和docker hub很相似,都是基于image的仓库。
Providers
Vagrant支持很多不同后端vm后端,除了VirtualBox,还有VMware, AWS, Docker等。这些provider本身,可以无缝切换。
vagrant提供了丰富操作的命令,其中,常用的一些如下:
除了上面的那些命令,还有 login 、rdp 、 share 、global-status等等,详细参考
剩下的大部分需要的学习的部分都在了解如何配置Vagrantfile文件。
vagrant的用处: 单机模拟多台机器,从而测试分布式的集群环境。Vagrantfile中可以定义vm的角色,也可
vagrantfile相关的配置涉及 vm 、 ssh 、 winrm 、vagrant、 box 、network、同步目录,多机器配置,虚拟技术提供方,插件(似乎提供不少插件)以及推送(Push)。
简单的配置介绍如下:
同步目录: 貌似和共享文件夹又有所不同,vagrant会自动sync文件,所以,这句话表示存在两个文件还是一个文件。
最为强大的是多虚拟机的系统设置,只需在同一
通过上面的配置,然后运行
备注: 不同版本的vagrant之间的配置可能有所区别,具体的以当前生成的Vagrantfile中配置描述的为准。
主要还是靠
此外,virtualbox仅仅是vagrant的一个虚拟机提供商,Docker和VMWare也是vagrant的provider。
vagrant文档提供了翔实的信息,更多可参考https://docs.vagrantup.com/v2/ 。
虚拟化的好处:
可同时运行多个操作系统
软件安装更容易 - 将复杂的步骤打包到虚拟机中
测试和容灾恢复 - 快照功能、保存虚拟机特定状态,云主机有自动打快照的功能
基础设施的整合 - 充分利用物理机器的性能
术语: Host OS(宿主os), Guest OS(支持任何X86的系统), 虚拟机(VirtualBox为 Guest OS 创建的特定环境,VirtualBox默认将虚拟机看作一组参数 - 决定了虚拟机的行为), 客机增强件(安装在虚拟机中,提高客机性能和额外的功能支持)
Virtualbox的功能概览:
可移植性,2类虚拟机管理程序,相对直接运行在裸机上虚拟机(一类vm mangement)。开放虚拟化格式OVF。
硬件虚拟化不是必备条件 - 处理器可支持虚拟化技术
客机增强套件: 共享文件夹,无缝窗口,3D虚拟化。 下载地址在http://download.virtualbox.org/virtualbox/4.3.28/Oracle_VM_VirtualBox_Extension_Pack-4.3.28-100309.vbox-extpack
硬件支持: SMP,USB, 硬件兼容性,PXE等
多代可分支快照
架构整洁、结构模块化,存在SDK接口 - vagrant所依赖的
远程桌面显示: VRDE之类
共享剪切版是需要在设置中启动的。
VirtualBox 提供了不少命令行工具:
VBox
VBoxAutostart
VBoxBalloonCtrl
VBoxHeadless
VBoxManage 是 Virtualbox 的命令行接口,其支持比图形界面更多的功能,可展现虚拟引擎的所有功能。
VBoxSDL
VBoxTunctl
VBoxVRDP
备注: 上面的这些命令也存在小写字母版的,果然,要大写什么的,太不方便了。
需要编译并加载vboxdrv内核模块,VirtualBox应用程序通过Unix本地套接字与后台程序通信。
两种镜像文件: 动态扩展的镜像文件、固定大小镜像文件。
更多相关技术,可以参考VirtualBox提供的相关的文档: https://www.virtualbox.org/wiki/Documentation
虚拟化相关的技术: XEN, KVM(OpenStack利用),Hypervisor,基于LXC的Docker。虚拟化的技术,需要对OS的理解加深。
备注: 想换工作时,复制vbox的vdi文件时,发现10G的文件根本无法单个复制。只能,先压缩分割,再复制。具体的操作命令如下:
原本是为了装qq,才去装virtualbox和XP的镜像系统,结果用了一段时间后,发现体验和感觉都相当的不错。这让我意识到虚拟环境的有用和高效之处。
阅读了一下Virtualbox的文档之后,发现Virtualbox有提供API和SDK的接口。这样就很好理解vagrant的开发的基础。此外,偶然发现,vagrant的作者在11年的时候,曾开发过一个virtualbox的gem。
此外,Virtualbox本身以依赖其他的一些GNU的虚拟机的代码,比如bochs。
这段意思是,没有凭空而来的成功,所有的软件都有其基础和对应解决的问题。
怎么把Vagrant, Chef, Docker, Capistrano 这些坑爹的玩意整合到一个workflow中,这是我今后要面对的问题。
vagrant使用小结
Vagrant小结
Vagrant官方
VirtualBox用户手册
Vgrant使用入门
使用Vagrant練習環境佈署
进行连接的,尝试
ssh vagrant@127.0.0.1:2200,一直timeout。看了官方文档后,才知道原来使用
vagrant ssh命令。
注意: 不要在虚拟机中运行
rm -rf /,因为虚拟机与宿主机器存在共享目录
/vagrant。
同步目录
同步目录: 貌似和共享文件夹又有所不同,vagrant会自动sync文件,所以,这句话表示存在两个文件还是一个文件。不过,同步和共享肯定是不同的。
共享目录作用: 本地开发使用宿主机器,服务器使用虚拟机。
自动配置
Vagrant内建了对自动配置的支持,其可以在
vagrant up时,自动安装软件。从而使其客机虚拟机可以重复创建且随时可用。
举个例子,比如安装apache:
首先,在Vagrantfile的相同目录中,保存名为
bootstrap.sh的文件:
#!/usr/bin/env bash apt-get update apt-get install -y apache2 if ! [ -L /var/www ]; then rm -rf /var/www ln -fs /vagrant /var/www fi
然后,在Vagrantfile写入如下的配置:
config.vm.provision :shell, path: "bootstrap.sh"
或者直接写在Vagrantfile文件中:
config.vm.provision "shell", inline: <<-SHELL sudo apt-get update sudo apt-get install -y apache2 if ! [ -L /var/www ]; then rm -rf /var/www ln -fs /vagrant /var/www fi SHELL
网络
网络主要就是端口映射和内网IP的设置,端口映射的配置为:
config.vm.network :forwarded_port, host: 4567, guest: 80
共享
共享分发开发环境,需要一个免费的HashiCorp's Atlas帐号。使用命令如下:
vagrant login vagrant share
注: 感觉vagrant所做的,其实和docker hub很相似,都是基于image的仓库。
Providers
Vagrant支持很多不同后端vm后端,除了VirtualBox,还有VMware, AWS, Docker等。这些provider本身,可以无缝切换。
命令行接口
vagrant提供了丰富操作的命令,其中,常用的一些如下:vagrant up # 启动虚拟机,会执行相应的自动配置 vagrant halt # 关机 vagrant reload # 重新启动,主要用于重新载入配置文件 vagrant suspend # 挂起当前虚拟机 vagrant resume # 恢复被挂起的vm vagrant box list # 列出所有box列表 vagrant box remove {basename} vagrant destroy # 停止当前正在运行的虚拟机并销毁所有创建的资源 vagrant package # 把当前的运行的虚拟机环境进行打包,可用于分发开发环境 vagrant plugin # 安装卸载插件 vagrant provision # 设置基本的环境,进一步设置可以使用Chef/Puppet进行搭建 vagrant ssh-config # 输出ssh连接的一些信息 vagrant status # 获取虚拟机状态 vagrant version # 获取vagrant的版本
除了上面的那些命令,还有 login 、rdp 、 share 、global-status等等,详细参考
vagrant -h。
剩下的大部分需要的学习的部分都在了解如何配置Vagrantfile文件。
vagrant的用处: 单机模拟多台机器,从而测试分布式的集群环境。Vagrantfile中可以定义vm的角色,也可
vagrant ssh {role-name}到特定的机器上去。
vagrant的相关配置
vagrantfile相关的配置涉及 vm 、 ssh 、 winrm 、vagrant、 box 、network、同步目录,多机器配置,虚拟技术提供方,插件(似乎提供不少插件)以及推送(Push)。简单的配置介绍如下:
config.vm.box = "base" # vm的box的基,默认为base config.vm.customize ["modifyvm", :id, "--name", "gogojimmy", "--memory", "512"] # 配置vm的各种参数 config.vm.host_name = "xxx" # 配置主机名,很重要的标识 config.vm.network # 两种桥接方式,私有和公共
同步目录: 貌似和共享文件夹又有所不同,vagrant会自动sync文件,所以,这句话表示存在两个文件还是一个文件。
最为强大的是多虚拟机的系统设置,只需在同一
Vagrantfile中定义不同的用户角色即可:
config.vm.define :app do |app_config| app_config.vm.host_name = "app" app_config.vm.network "private_network", ip: "33.33.13.10" end config.vm.define :db do |db_config| db_config.vm.host_name = "db" db_config.vm.network "private_network", ip: "33.33.13.11" db_config.vm.provider "virtualbox" do |vb| vb.memory = "512" end end config.vm.define :cache do |cache_config| cache_config.vm.host_name = "cache" cache_config.vm.network "private_network", ip: "33.33.13.12" end
通过上面的配置,然后运行
vagrant up,分分钟就可以启动3台虚拟机了。具体输出如下:
Bringing machine 'app' up with 'virtualbox' provider... Bringing machine 'db' up with 'virtualbox' provider... Bringing machine 'cache' up with 'virtualbox' provider... ==> app: Clearing any previously set forwarded ports... ==> app: Fixed port collision for 22 => 2222. Now on port 2200. ==> app: Clearing any previously set network interfaces... ==> app: Preparing network interfaces based on configuration... app: Adapter 1: nat app: Adapter 2: hostonly ==> app: Forwarding ports... app: 22 => 2200 (adapter 1) ==> app: Booting VM... ==> app: Waiting for machine to boot. This may take a few minutes... app: SSH address: 127.0.0.1:2200 app: SSH username: vagrant app: SSH auth method: private key app: Warning: Connection timeout. Retrying... ==> app: Machine booted and ready! ==> app: Checking for guest additions in VM... app: The guest additions on this VM do not match the installed version of app: VirtualBox! In most cases this is fine, but in rare cases it can app: prevent things such as shared folders from working properly. If you see app: shared folder errors, please make sure the guest additions within the app: virtual machine match the version of VirtualBox you have installed on app: your host and reload your VM. app: app: Guest Additions Version: 4.2.0 app: VirtualBox Version: 4.3 ==> app: Setting hostname... ==> app: Configuring and enabling network interfaces... ==> app: Mounting shared folders... app: /vagrant => /home/xiajian/works/test/vargant ==> app: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> app: to force provisioning. Provisioners marked to run always will still run. 。。省略DB和Cache的启动。。。
备注: 不同版本的vagrant之间的配置可能有所区别,具体的以当前生成的Vagrantfile中配置描述的为准。
vagrant reload只能对已有的虚拟机进行配置的重新载入,对于未创建的虚拟机则不作处理。所以,虚拟机的启动,
主要还是靠
vagrant up命令。
此外,virtualbox仅仅是vagrant的一个虚拟机提供商,Docker和VMWare也是vagrant的provider。
vagrant文档提供了翔实的信息,更多可参考https://docs.vagrantup.com/v2/ 。
virtualbox
虚拟化的好处:可同时运行多个操作系统
软件安装更容易 - 将复杂的步骤打包到虚拟机中
测试和容灾恢复 - 快照功能、保存虚拟机特定状态,云主机有自动打快照的功能
基础设施的整合 - 充分利用物理机器的性能
术语: Host OS(宿主os), Guest OS(支持任何X86的系统), 虚拟机(VirtualBox为 Guest OS 创建的特定环境,VirtualBox默认将虚拟机看作一组参数 - 决定了虚拟机的行为), 客机增强件(安装在虚拟机中,提高客机性能和额外的功能支持)
Virtualbox的功能概览:
可移植性,2类虚拟机管理程序,相对直接运行在裸机上虚拟机(一类vm mangement)。开放虚拟化格式OVF。
硬件虚拟化不是必备条件 - 处理器可支持虚拟化技术
客机增强套件: 共享文件夹,无缝窗口,3D虚拟化。 下载地址在http://download.virtualbox.org/virtualbox/4.3.28/Oracle_VM_VirtualBox_Extension_Pack-4.3.28-100309.vbox-extpack
硬件支持: SMP,USB, 硬件兼容性,PXE等
多代可分支快照
架构整洁、结构模块化,存在SDK接口 - vagrant所依赖的
远程桌面显示: VRDE之类
共享剪切版是需要在设置中启动的。
VirtualBox 提供了不少命令行工具:
VBox
VBoxAutostart
VBoxBalloonCtrl
VBoxHeadless
VBoxManage 是 Virtualbox 的命令行接口,其支持比图形界面更多的功能,可展现虚拟引擎的所有功能。
VBoxSDL
VBoxTunctl
VBoxVRDP
备注: 上面的这些命令也存在小写字母版的,果然,要大写什么的,太不方便了。
需要编译并加载vboxdrv内核模块,VirtualBox应用程序通过Unix本地套接字与后台程序通信。
两种镜像文件: 动态扩展的镜像文件、固定大小镜像文件。
更多相关技术,可以参考VirtualBox提供的相关的文档: https://www.virtualbox.org/wiki/Documentation
虚拟化相关的技术: XEN, KVM(OpenStack利用),Hypervisor,基于LXC的Docker。虚拟化的技术,需要对OS的理解加深。
备注: 想换工作时,复制vbox的vdi文件时,发现10G的文件根本无法单个复制。只能,先压缩分割,再复制。具体的操作命令如下:
``` tar czf - xp.vdi | split -b 2000m - xp.vdi.tar.gz # 压缩 cat xp.vdi.tar.gza* | tar xz # 解压 ```
后记
原本是为了装qq,才去装virtualbox和XP的镜像系统,结果用了一段时间后,发现体验和感觉都相当的不错。这让我意识到虚拟环境的有用和高效之处。阅读了一下Virtualbox的文档之后,发现Virtualbox有提供API和SDK的接口。这样就很好理解vagrant的开发的基础。此外,偶然发现,vagrant的作者在11年的时候,曾开发过一个virtualbox的gem。
此外,Virtualbox本身以依赖其他的一些GNU的虚拟机的代码,比如bochs。
这段意思是,没有凭空而来的成功,所有的软件都有其基础和对应解决的问题。
怎么把Vagrant, Chef, Docker, Capistrano 这些坑爹的玩意整合到一个workflow中,这是我今后要面对的问题。
参考文献
vagrant使用小结Vagrant小结
Vagrant官方
VirtualBox用户手册
Vgrant使用入门
使用Vagrant練習環境佈署
相关文章推荐
- 1.3 对话框透明度
- JNI完全手册
- Windows下编译Caffe并编译Matlab接口
- Java____SpringMVC教学资源(坑)
- 桌面支持-设置adobe为默认pdf阅读软件方式
- matlab高手博客记录
- 第2周项目0-宣告“主权”
- 脚本乐园 Shell中命令行选项和参数的处理
- 禁止tomcat生成catalina.out、localhost_access_log、host-manager.log、localhost.log、manager.log这些文件
- 时间戳转换成Date
- 1217 -- 不同进制轻松转
- UIColor 直接生成 UIImage 和 圆角纯色UIImage
- 98 AFNetworking网络状态监控
- 授之以渔——发现新技术
- Excel数据读取
- 页面中iframe 弹层 和拖动效果
- ASP.NET后台JS弹框使前台页面样式丢失 解决办法
- 安装phpssdb扩展:
- Excel一些操作
- jquery实现Slide Out Navigation滑出式菜单效果代码