安装特定库版本

时间:2014-03-22 14:26:05

标签: maven chef

将vagrant-berkshelf与Maven和Tomcat烹饪书一起使用,我可以指定一个主要版本进行安装。

示例:Maven - 2或3          Tomcat - 5或6

如果我想指定一个库的确切版本(Maven 3.2.1),我应该只使用Ark Cookbook来安装所需的版本吗?

DevOps体验有限,我过去常常使用yumapt-get来管理我的库而不指定特定版本。

1 个答案:

答案 0 :(得分:1)

Maven cookbook已使用ark。所以你可以覆盖以下节点属性:

node['maven']['version'] = 3
node['maven']['3']['version'] = '3.2.1'
node['maven']['3']['url'] = ???
node['maven']['3']['checksum'] = ??? 

另一方面,tomcat cookbook进行软件包安装,因此您需要使用ark或构建Deb / RPM软件包。

使用ark进行tomcat的唯一缺点是你不会有服务脚本来管理tomcat的停止/启动/状态。需要做一些额外的工作。

更新

以下是安装Maven 3.2.1的vagrant项目

├── Berksfile
└── Vagrantfile

Vagrantfile

Vagrant.require_plugin "vagrant-omnibus"
Vagrant.require_plugin "vagrant-berkshelf"
Vagrant.require_plugin "vagrant-chef-zero"

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Box config
  config.vm.box = "saucy64"
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/saucy/current/saucy-server-cloudimg-amd64-vagrant-disk1.box"

  # Virtualbox config
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", 4096]
  end

  # Networking config
  config.vm.network "private_network", ip: "10.0.0.10"

  # Plugin config
  config.omnibus.chef_version = :latest
  config.chef_zero.enabled = true
  config.berkshelf.enabled = true

  # Chef config
  config.vm.provision :chef_client do |chef|
    chef.add_recipe "apt"
    chef.add_recipe "maven"

    chef.json = {
      'maven' => {
        'version' => 3,
        '3' => {
          'version' => '3.2.1',
          'url' => 'http://www.eu.apache.org/dist/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz',
          'checksum' => 'cdee2fd50b2b4e34e2d67d01ab2018b051542ee759c07354dd7aed6f4f71675c'

        }
      }
    }
  end
end

Berksfile

site :opscode

cookbook 'apt'
cookbook 'maven'
相关问题