The java cookbook is designed to support the installation of different Java variants. It's behaviour is controlled by node attributes. The defaults are in the cookbook and will install the OpenJDK.
So, to install the oracle JDK you need to specify alternative overrides and these are discussed in the README
How do you do this? In chef you have at least two options:
- Wrapper cookbook
- Role
For an example of a wrapper cookbook I refer you to my other answer.
For an example role try this:
{
"name": "java",
"description": "Oracle java role",
"override_attributes": {
"java": {
"jdk_version": 8,
"install_flavor": "oracle",
"oracle": {
"accept_oracle_download_terms": true
}
}
},
"run_list": [
"recipe[apt]",
"recipe[java]"
]
}
Add this role to the run-list of your node and the OracleJDK will be installed.
Test Kitchen project that tests the install of OracleJDK
The following is a test kitchen example that will install and test a "java" role against both ubuntu and centos
├── Berksfile
├── .kitchen.yml
├── roles
│?? └── java.json
└── test
└── integration
└── default
└── serverspec
└── java_spec.rb
Install chefDK, vagrant and run the following command
kitchen test
Notes:
- The simplest way to get test kitchen running is to install both vagrant and chefdk
Berksfile
source "https://supermarket.chef.io"
cookbook "apt"
cookbook "java"
.kitchen.yml
---
driver:
name: vagrant
provisioner:
name: chef_zero
require_chef_omnibus: 12.0.3
client_rb:
"Ohai::Config[:disabled_plugins] = [:GCE] #":
platforms:
- name: ubuntu-12.04
- name: centos-6.4
suites:
- name: default
run_list:
- role[java]
Notes:
- The special role "java" is added to the node run-list.
- This example disables the "gce" plugin. See issue 624.
roles/java.json
See above
test/integration/default/serverspec/java_spec.rb
require 'serverspec'
# Required by serverspec
set :backend, :exec
describe file('/usr/lib/jvm/java-8-oracle-amd64/release'), :if => os[:family] == "ubuntu" do
it { should contain 'JAVA_VERSION="1.8.0_31"' }
end
describe file('/usr/lib/jvm/java/release'), :if => os[:family] == "redhat" do
it { should contain 'JAVA_VERSION="1.8.0_31"' }
end
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…