将vagrant-berkshelf与Maven和Tomcat烹饪书一起使用,我可以指定一个主要版本进行安装。
示例:Maven - 2或3 Tomcat - 5或6
如果我想指定一个库的确切版本(Maven 3.2.1),我应该只使用Ark Cookbook来安装所需的版本吗?
DevOps体验有限,我过去常常使用yum
或apt-get
来管理我的库而不指定特定版本。
答案 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
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
site :opscode
cookbook 'apt'
cookbook 'maven'