在java的食谱被设计为支持安装不同的Java变种。它的行为由节点属性控制。默认值在食谱中,并将安装OpenJDK。
因此,要安装oracle JDK,您需要指定替代替代,有关这些替代的内容,请参见自述文件
你怎么做到这一点?在厨师中,您至少有两个选择:
- 包装食谱
- 角色
对于示例角色,请尝试以下操作:
{ "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]" ]}将此角色添加到节点的运行列表中,将安装OracleJDK。
用于测试OracleJDK安装的Test Kitchen项目
以下是一个测试厨房示例,它将针对ubuntu和centos安装并测试“ java”角色
├── Berksfile├── .kitchen.yml├── roles│ └── java.json└── test └── integration └── default └── serverspec └── java_spec.rb
安装chefDK,vagrant并运行以下命令
kitchen test
笔记:
- 让测试厨房运行的最简单方法是同时安装vagrant和chefdk
Berksfile
source "https://supermarket.chef.io"cookbook "apt"cookbook "java"
.kitchen.yml
---driver: name: vagrantprovisioner: name: chef_zero require_chef_omnibus: 12.0.3 client_rb: "Ohai::Config[:disabled_plugins] = [:GCE] #":platforms: - name: ubuntu-12.04 - name: centos-6.4suites: - name: default run_list: - role[java]
笔记:
- 特殊角色“ java”已添加到节点运行列表。
- 本示例禁用“ gce”插件。参见问题624。
角色/java.json
往上看
测试/集成/默认/服务器规格/java_spec.rb
require 'serverspec'# Required by serverspecset :backend, :execdescribe file('/usr/lib/jvm/java-8-oracle-amd64/release'), :if => os[:family] == "ubuntu" do it { should contain 'JAVA_VERSION="1.8.0_31"' }enddescribe file('/usr/lib/jvm/java/release'), :if => os[:family] == "redhat" do it { should contain 'JAVA_VERSION="1.8.0_31"' }end


