2017-02-21 6 views
0

Моя структура папок berkshelf, как:Berkshelf: Установка Java 8

│ Berksfile 
│ Berksfile.lock 
│ chefignore 
│ knife.rb 
│ living.pem 
│ metadata.rb 
├───recipes 
│  default.rb 
│  elasticsearch.rb 
│  java.rb 

Содержание каждого recipe.rb является:

default.rb содержимое файла:

include_recipe 'berk::java' 
include_recipe 'berk::elasticsearch' 

java.rb содержимое файла:

include_recipe 'java' 

elasticsearch.rb содержимое файла:

include_recipe 'elasticsearch' 

elasticsearch_user 'elasticsearch' do 
    username 'elasticsearch' 
    groupname 'elasticsearch' 
    shell '/bin/bash' 
    comment 'Elasticsearch User' 

    action :create 
end 

elasticsearch_install 'my_es_installation' do 
    type 'package' # type of install 
    version '5.2.0' 
    action :install # could be :remove as well 
end 

... 

Я хотел бы изменить настройки Java, чтобы использовать Java 8 оракула. Я знаю, что, наверное, это очень простой вопрос, тем не менее, я действительно застрял в этом вопросе.

Я пытался добавить эти строки в java.rb:

node.default['java']['install_flavor'] = 'oracle' 
node.default['java']['jdk_version'] = '8' 
node.default['java']['oracle']['accept_oracle_download_terms'] = true 

А также я пробовал:

node.override['java']['install_flavor'] = 'oracle' 
node.override['java']['jdk_version'] = '8' 
node.override['java']['oracle']['accept_oracle_download_terms'] = true 

Тем не менее, Java 6 установлен:

==> default: * log[jdk-version-changed] action nothing (skipped due to action :nothing) 
==> default: Recipe: java::openjdk 
==> default: * yum_package[java-1.6.0-openjdk] action install 
==> default: [2017-02-21T15:10:33+00:00] INFO: yum_package[java-1.6.0-openjdk] installing java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el7_3 from updates repository 

Есть идеи?

Спасибо.

ответ

1

Не переопределяйте атрибуты в рецепте (из определенных случаев), используйте файл attributes/default.rb, чтобы определить эти атрибуты на уровне по умолчанию, будет достаточно, и все будет правильно.

Возможно, вы переопределите атрибуты после включения рецепта java, поэтому ваша проблема, все файлы атрибутов прочитаны до того, как какой-либо рецепт будет скомпилирован, include_recipe скомпилирует целевой рецепт, как только они будут видны, поэтому, если ваш java.rb файл выглядит так:

include_recipe 'java' 

node.default['java']['install_flavor'] = 'oracle' 
node.default['java']['jdk_version'] = '8' 
node.default['java']['oracle']['accept_oracle_download_terms'] = true 

Ресурсы рецепта java будут скомпилированы до обновления атрибутов.

Так создать attributes каталог и файл default.rb в с:

default['java']['install_flavor'] = 'oracle' 
default['java']['jdk_version'] = '8' 
default['java']['oracle']['accept_oracle_download_terms'] = true 

И у вас есть Java 8 установлен.

Файлы в каталоге атрибутов загружаются в алфавитном порядке (вопросы, если два файла установить различные значения для одного атрибута), вы можете назвать их, как вы хотите, вы можете иметь java.rb и elasticsearch.rb, если вы хотите, чтобы отделить атрибуты для каждого рецепта также.

Смежные вопросы