我最近一直在尝试学习 chef,因为我打算用它来部署服务器配置和服务器应用软件。我在理解如何使用其他人的 Recipe 时遇到问题。比如我要部署JDK8u31。我不知道如何实现这本 Recipe 。 https://supermarket.chef.io/cookbooks/java

我阅读了说明并看到了以下内容

只需在您希望安装 Java 的任何地方包含 java 配方,例如运行列表 (recipe[java]) 或 Recipe (include_recipe 'java')

我试过了

include_recipe 'java'  

在我名为 common_java_server 的 Recipe 中

然后

directory '/usr/lib/jvm/' do 
  owner 'root' 
  group 'root' 
  mode '0644' 
end 
 
 
 
 
java_ark "jdk" do 
    url 'http://download.oracle.com/otn-pub/java/jdk/8u31/jdk-8u31-linux-x64.bin' 
    checksum  'a8603fa62045ce2164b26f7c04859cd548ffe0e33bfc979d9fa73df42e3b3365' 
    app_home '/usr/lib/jvm/' 
    bin_cmds ["java", "javac"] 
    action :install 
end 
 
# set alternatives for java and javac commands 
java_alternatives "set java alternatives" do 
    java_location '/usr/local/java' 
    bin_cmds ["java", "javac"] 
    action :set 
end 

这是我得到的错误

Recipe Compile Error in /etc/chef/src/cookbooks/common/recipes/java_dev_server.rb 
==== 

请您参考如下方法:

java cookbook旨在支持安装不同的 Java 变体。它的行为由节点属性控制。默认值在 cookbook 中并将安装 OpenJDK。

因此,要安装 oracle JDK,您需要指定替代覆盖,这些将在 README 中讨论。

你是怎么做到的?在 Chef 中,您至少有两个选择:

  1. 包装 Recipe
  2. 角色

有关包装器 Recipe 的示例,请引用我的其他答案。

举个例子试试这个:

{ 
  "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 

注意事项:

  • 让测试厨房运行的最简单方法是同时安装 vagrantchefdk

伯克斯文件

source "https://supermarket.chef.io" 
 
cookbook "apt" 
cookbook "java" 

.厨房.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] 

注意事项:

  • 特殊角色“java”被添加到节点运行列表中。
  • 这个例子禁用了“gce”插件。参见 issue 624 .

角色/java.json

见上文

测试/集成/默认/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 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!