您的位置:首页 > 其它

Vagrant简介

2015-01-10 14:21 176 查看
1.软件安装
sudo apt-get update
sudo apt-get install virtualbox
sudo apt-get install dkms
sudo apt-get install virtualbox-dkms
下载vagrant: http://downloads.vagrantup.com/
dpkg -i vagrant_1.7.2_x86_64.deb
2.使用可以使用现有的box环境
$ git clone https://github.com/DandyDev/graphite-statsd-ansible-vagrant $ cd /path/to/graphite-statsd-ansible-vagrant$ vagrant up

3. Vagrant命令

       Vagrant安装完成之后,我们就可以从命令行通过vagrant命令来进行操作。vagrant常用命令如下:      vagrant box add <name> <url>       vagrant box list       vagrant box remove <name>       vagrant box repackage <name>        vagrant init [box-name] [box-url]       vagrant up [vm-name] [--[no-]provision] [-h]       vagrant destroy [vm-name]       vagrant suspend [vm-name]       vagrant reload [vm-name]       vagrant resume [vm-name]       vagrant halt [vm-name]       vagrant status [vm-name]        vagrant package [vm-name] [--base name] [--output name.box][--include one,two,three] [--vagrantfile file]       vagrant provision [vm-name]       vagrant ssh [vm-name] [-c command] [-- extra ssh args]       vagrant ssh-config [vm-name] [--host name]

4. Vagrantfile

       任何Vagrant工程下都有一个Vagrantfile, 就像makefile一样,Vagrantfile用来配置vagrant的行为所创建虚拟机的信息,下面是一个基本的Vagrantfile:     
 
  Vagrant::Config.run do |config|# Setup the boxconfig.vm.box = "my_box"end

5. 创建第一个Vagrant虚拟环境以及工程:

(1)创建工程目录, 并且执行vagrant init命令,该命令会产生最初的 Vagrantfile
$ mkdir vagrant_guide$ cd vagrant_guide$ vagrant init
(2)添加一个Base Box:Vagrant不是从头开始创建虚拟机,而是导入一个虚机的base image,在这个基础上进行构建。这些image就叫做Box.Vagrant 支持从本地文件系统或者HTTP URL来添加boxes    $vagrantbox add base http://files.vagrantup.com/lucid32.box    [b]$vagrantbox add base D:\lucid32.box[/b]安装官方box image:
vagrant box add hashicorp/precise32
该命令会自动从https://atlas.hashicorp.com/boxes/search 上获取相应的box(3)配置Project使用这个Box: 修改Vagrantfile为如下内容:     Vagrant::Config.run do|config|        config.vm.box = "base"     end(4)启动虚拟机    $vagrantup(5)停掉虚拟机    $vagrantdestroy(6) SSH配置     Vagrant 提供了对虚拟机的SSH连接,只需要执行一个命令:    $vagrantssh[/u]    在Windows环境下可以使用PUTTY,配置下面的信息来连接虚拟机:     hostname: localhost     port:             2222     Connection Type: SSH     User Name:   vagrant     Password:     vagrant   (7)访问刚才创建的Project.     Vagrant 通过VirtualBox的shared folder来连接你的application和虚拟机, 默认的shared folder的卫士是/vagrant, 所以想要查看刚才创建的项目,只需要执行:     vagrant@lucid32:~$ ls/vagrant     index.html  Vagrantfile(8) Provisioning:      通常情况下Box只做最基本的设置,而不是一次到位的设置好所有的环境。Vagrant通常使用chef或者Puppet来做进一步的环境搭建。      回到刚才创建的index.html,我们需要安装Apache。我们下面用Puppet来完成这一设置。      1. 在项目的根目录下创建文件夹manifests,然后在该文件家中创建Puppet的配置文件default.pp,该文件内容如下:     
# Basic Puppet Apache manifestclass apache {exec { 'apt-get update':command => '/usr/bin/apt-get update'}package { "apache2":ensure => present,}service { "apache2":ensure => running,require => Package["apache2"],}}include apache
   2. 在Vagrantfile里添加对Puppet provisioning的支持: 
Vagrant::Config.run do |config|  config.vm.box = "base"  # Enable the Puppet provisioner  config.vm.provision :puppetend
(9) 运行Project        为了使puppet的配置生效,如果不重启虚机,则需要执行vagrant reload命令。        $ vagrant reload         因为没有配置port forwarding,所以你还不能从本地浏览器查看Project的输出。只能SSH到虚拟机上查看127.0.0.1的输出:      (10) 进行端口映射        修改Vagrantfile, 添加本地端口和虚机端口的映射关系, 然后执行vagrant reload, 然后你就可以通过本地浏览器来访问:http://localhost:4567.  
   Vagrant::Config.run do |config|# Forward guest port 80 to host port 4567config.vm.forward_port 80, 4567
   end
 [/code]
7. 打包 Packaging
1. 创建一个新的文件Vagrantfile.pkg,内容如下:
Vagrant::Config.run do |config|# Forward apacheconfig.vm.forward_port 80, 8080end2. 打包Project
  
  $ vagrant package --vagrantfile Vagrantfile.pkg
8. 打包完成后,在工程根目录下就会生成package.box,别人就可以使用这个Box了:
    $ vagrant box add my_box /path/to/the/package.box$ vagrant init my_box$ vagrant up
参考:http://blog.csdn.net/jillliang/article/details/8251242Vagrant常用连接:box images:https://vagrantcloud.com/boxes/searchhttp://www.olindata.com/blog/2014/07/installing-vagrant-and-virtual-box-ubuntu-1404-ltshttp://packages.vstone.eu/vagrant-boxes/centos/7.x/https://atlas.hashicorp.com/boxes/search?utf8=%E2%9C%93&sort=&provider=&q=centos7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息