vagrant之运维,搭建统一开发环境

特点:通过vagrant打包环境,可以跨平台使用。意思就是在windows下可以使用ubuntu系统配置的环境

使用的平台:windows+64位

需要准备的工具:

virtualbox:虚拟机  https://www.virtualbox.org/wiki/Downloads

vagrant:下载地址  http://downloads.vagrantup.com/

下载需要使用的 box

通过 http://www.vagrantbox.es/  进行下载

*一般操作命令

vagrant box add NAME URL    #添加一个box

vagrant box list            #查看本地已添加的box

vagrant box remove NAME virtualbox #删除本地已添加的box,如若是版本1.0.x,执行$ vagrant box remove  NAME

vagrant init NAME          #初始化,实质应是创建Vagrantfile文件

vagrant up                   #启动虚拟机

vagrant halt                 #关闭虚拟机

vagrant destroy            #销毁虚拟机

vagrant reload             #重启虚拟机

vagrant package            #当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box

vagrant ssh                 #进入虚拟环境

*vagrantfile文件的作用:

配置这个虚拟主机网络连接方式,端口转发,同步文件夹,以及怎么和puppet,chef结合的一个配置文件。执行完$ vagrant init后,在工作目录中,你会发现此文件。

NOTE:配置版本说明:


Vagrant.configure("2"do |config|

  # ...

end

当前支持的两个版本:"1"和"2".
"1":描述是Vagrant 1.0.x的配置(如看到Vagrant::Config.run do |config| 此也为Vagrant
1.0.x 的配置);"2":描述的是1.1+ leading up to 2.0.x的配置。vagrant 1.1+
的Vagrantfiles能够与vagrant 1.0.x的Vagrantfiles保持向后兼容,也大幅引入新的功能和配置选项。

配置网络(本文将提供2种版本的常用配置,其中版本1的配置经过实践验证)

(1) 端口转发:(假设虚拟机的80端口提供web服务,此处将通过访问物理机的8080端口转发到虚拟机的80端口,来实现web的访问)

版本"2":


Vagrant.configure("2"do |config|

  config.vm.network :forwarded_port, guest: 80, host: 8080

end

版本"1"


Vagrant::Config.run do |config|

  # Forward guest port 80 to host port 8080

  config.vm.forward_port 80, 8080

end

(2)桥接网络(公共网络,局域网DHCP服务器自动分配IP)

版本"2"


Vagrant.configure("2"do |config|

  config.vm.network :public_network

end

版本"1"


Vagrant::Config.run do |config|

  config.vm.network :bridged

end

$ VBoxManage list bridgedifs | grep ^Name    #可通过此命令查看本机的网卡

Name:            eth0

指定网卡,配置可写为如下:


Vagrant::Config.run do |config|

  config.vm.network :bridged, :bridge => "eth0"

end

(3) 私有网络:允许多个虚拟机通过主机通过网络互相通信,vagrant允许用户分配一个静态IP,然后使用私有网络设置。

版本"2"


Vagrant.configure("2"do |config|

  config.vm.network :private_network, ip: "192.168.50.4"

end

版本"1"


Vagrant::Config.run do |config|

  config.vm.network :hostonly, "192.168.50.4"

end

同步文件夹

默认的,vagrant将共享你的工作目录(即Vagrantfile所在的目录)到虚拟机中的/vagrant,所以一般不需配置即可,如你需要可配置:

版本"2"


Vagrant.configure("2"do |config|

  # other config here

  config.vm.synced_folder "src/""/srv/website"

end

"src/":物理机目录;"/srv/website"虚拟机目录

vagrant和shell(实现在虚拟机启动的时候自运行需要的shell命令或脚本)

版本"2"

内嵌脚本:


Vagrant.configure("2"do |config|

  config.vm.provision :shell,

    :inline => "echo Hello, World"

end

复杂点的调用如下:


$script = <<SCRIPT

echo I am provisioning...

date > /etc/vagrant_provisioned_at

SCRIPT

Vagrant.configure("2"do |config|

  config.vm.provision :shell, :inline => $script

end

外部脚本:


Vagrant.configure("2"do |config|

  config.vm.provision :shell, :path => "script.sh"      #脚本的路径相对于项目根,也可使用绝对路径

end

脚本可传递参数:


Vagrant.configure("2"do |config|

  config.vm.provision :shell do |s|

    s.inline = "echo $1"

    s.args   = "‘hello, world!‘"

  end

end

版本"1":

内部脚本:


Vagrant::Config.run do |config|

  config.vm.provision :shell, :inline => "echo abc > /tmp/test"

end

外部脚本:


Vagrant::Config.run do |config|

  config.vm.provision :shell, :path => "test.sh"

end

脚本参数:


Vagrant::Config.run do |config|

  config.vm.provision :shell do |shell|

    shell.inline = "echo $1 > /tmp/test"

    shell.args = "‘this is test‘"

  end

end

vagrant和puppet(如果不知道puppet,请看这里http://xuclv.blog.51cto.com/blog/5503169/1154261)

(1) vagrant调用puppet单独使用


Vagrant.configure("2"do |config|

  config.vm.provision :puppet do |puppet|

    puppet.manifests_path = "my_manifests"#路径相对于项目根,如无配置此项,默认为manifests

    puppet.manifest_file = "default.pp"      #如无配置此项,默认为default.pp

    puppet.module_path = "modules"        #路径相对于根

    puppet.options = "--verbose --debug"

  end

end

默认配置的目录结构:

$ tree

.

|-- Vagrantfile

|-- manifests

|   |-- default.pp

(2) vagrant让puppet作为代理,连接Puppet master


Vagrant.configure("2"do|config|

config.vm.provision :puppet_server do|puppet|

puppet.puppet_server = "puppet.example.com"#master域名

puppet.puppet_node = "node.example.com"#传递给puppet服务器节点的名称。默认为”puppet“

puppet.options = "--verbose --debug"#选项

end

end

NOTE:

版本1配置差别不大,不再详述,区别:Vagrant.configure("2") do |config|改为Vagrant::Config.run do |config|

以上Vagrantfile配置完毕后,可$ vagrant reload 重启虚拟机以来实现配置生效

官方给了一个例子(可尝试玩玩):

1.进入工作目录

2.修改Vagrantfile

$ vim Vagrantfile    #启用或添加如下行:


Vagrant.configure("2"do |config|

  config.vm.provision :puppet    #这里没有配置pp文件等的路径,全部采用默认

  end

end

3.创建puppet的主目录

$ mkdir manifests

4.配置pp文件

$ vim manifests/default.pp

# Basic Puppet Apache manifest

class apache {

  exec { ‘apt-get update‘:

    command => ‘/usr/bin/apt-get update‘

  }

  package "apache2":

    ensure => present,

  }

  service { "apache2":

    ensure => running,

    require => Package["apache2"],

  }

  file { ‘/var/www‘:

    ensure => link,

    target => "/vagrant",

    notify => Service[‘apache2‘],

    force  => true

  }

}

include apache

5.重启虚拟机

$ vagrant reload    #重启后可看到虚拟机中已经安装好了apache

后记:

总的来说vagrant还是一个简单好用的软件,常用于和puppet或者chef结合,实现测试环境的自动化部署,保证了测试环境的快速创建,便捷部署,一致性,同时也便于销毁。另,这里不常用chef,所以此篇文章不对其进行介绍,有兴趣的可以自行研究.

推荐一个shell集成安装环境,lnmp/lamp等等

https://oneinstack.com/install/

时间: 2024-10-24 01:57:09

vagrant之运维,搭建统一开发环境的相关文章

利用vagrant快速搭建rails开发环境

前言 当我们学习一门新的语言或技术的时候,最麻烦或比较浪费时间的事情就是搭建开发环境.而搭建开发环境与我们将要学习的新的语言或技术,没有太大的联系,因为我们感兴趣的只是新的语言或技术本身,而并非它们的开发环境.如果浪费太多的时间在这些上面,则更是不值得事情.如果能有一套现成的搭建好的开发环境,这样我们就可以直接关注我们所感兴趣的东西了.如在写某方面教程的时候,如果能配有一个现成的开发环境,这样初学者就可以快速的上手,掌握核心的知识,聚焦重点内容. 本文主要介绍如何利用vagrant快速的搭建ra

Eclipse和PyDev搭建python开发环境

               Eclipse和PyDev搭建python开发环境 1.1总体目标 本文档作为python学习者的入门教程,通过本教程可以了解python用途.语法.在实际工作中的应用. Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python是完全面向对象的语言.函数.模块.数字.字符串都是对象.并且完全支持继承.重载.派生.多继承,有益于增强源代码的复用性. Python在执行时,首先会将.py文件中的源代码编译成Python的bytecode(字节

快速搭建Python开发环境

快速搭建Python开发环境·Python入门学习速成系列<1> 当我们在学习一门新的技术或者新的编程语言时,经常感觉无从下手.学习初期往往不知道事先应该准备什么:或者刚开始准备,在安装问题就栽了一个大跟头:甚至我们准备完成后,开始学习是,才发现事先应该准备安装的软件没有到位等.这样或那样的问题就困扰我们学习之初,花费了大量的时间. 本文主要介绍在Windows和Linux主流操作系统上快速部署Python开发环境. 准备Python开发环境 在准备部署Python开发环境时,往往会选择不同的

如何在Macbook Pro搭建PHP开发环境

为了给项目搭建一个运维后台,新学PHP,第一次在Macbook上搭建PHP开发环境,所以记录在案,也为其他学习的小伙伴提供一份参考. 工具/原料 Apache 2.4.16 PHP Macbook Pro MySQL 5.7 启动Apache 1 先介绍几个命令 // 启动Apache服务 sudo apachectl start // 重启Apache服务 sudo apachectl restart // 停止Apache服务 sudo apachectl stop // 查看Apache版

iBrand 教程 0.1:Windows + Homestead 5 搭建 Laravel 开发环境

统一开发环境 为了保证在学习和工作过程中避免因为开发环境不一致而导致各种各样的问题,Laravel 官方为了我们提供了一个完美的开发环境 Laravel Homestead,让我们无需再本地安装 PHP,web 服务器或任何服务软件. Homestead 可以在任何 Windows.Mac 或 Linux 系统上运行,它包括了 Nginx Web 服务器.PHP 7.1.MySQL.PostgresSQL.Redis.Memcached.Node 以及开发 laravel 应用所需的东西. Ho

震惊,20年开发经验的技术总监不会搭建Java开发环境

公司9月份空降一位技术总监,个子不高,头顶有点秃.说话老是中文中混夹一点English(这个只需要加一个parameter就好了:这个简单,你只需要把它hide住).之前找我谈话也是气场十足:"我之前在很多家公司都是担任技术总监这个职位,之前很多年也是一直担任技术总监这个职位."于是我深深的相信,他的确是一个很厉害的人物,相信我们技术部在他的带领下会越来越好,为公司作出更大的贡献! 然而,我错了.说一下他的牛逼之处吧,随便说两点 1. 他曾说:"我写过的代码比你吃的米饭还多&

搭建Linux开发环境

开发环境(Software Development Environment)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE.它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程.活动和任务,后者为工具集成和软件的开发.维护及管理提供统一的支持. 尤其作为一个嵌入式开发人员,由于嵌入式系统的特点,必须要有一套嵌入式开发环境.嵌入式开发环境多种多样,但Linux开发环境则较为普遍.搭建Linux开发环境,首先需要安装Linux操作系

运维堡垒机开发

Python之路 那就做个堡垒机吧 本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的功能属性中的其中一项而已,下面我就给大家介绍一下堡垒机的重要性,以帮助大家参考自己公司的业务是否需要部署堡垒机. 堡垒机有以下两个至关重要的功能: 权限管理 当你公司的服务器变的越来越多后,需要操作这些服务器的人就肯定不只是一个运维人员,同时也

Eclipse+ADT+Android SDK 搭建安卓开发环境

要求 必备知识 windows 7 基本操作. 运行环境 windows 7 下载地址 环境下载 最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是windows7的笔记本,也就只能到Windows中搭建Android 开发环境了! 就搭建环境都花了比较长的时间, 在各种版本之间折腾了比较久的时间, 装好后SDK包更新又是一个比较大的麻烦(天朝的网络大家懂的--).下面把我的安装过程和经验分享个大家!! 安装JDK 这里可以参考我之前写的一篇关于安装J