Installer Java JDK 1.8 sur CentOS à l'aide de Chef


J'essaie d'installer Java JDK 1.8 sur CentOS 7 en utilisant un livre de cuisine Chef.

J'utilise Chef DK sur Windows 10 et je n'ai pas téléchargé depuis https://downloads.chef.io/chefdk

Mon Berksfile j'ai

source 'https://supermarket.chef.io'
metadata  

Mon Kitchen.yml est le suivant

---
driver:
  name: vagrant

provisioner:
  name: chef_zero
  # You may wish to disable always updating cookbooks in CI or other testing environments.
  # For example:
  #   always_update_cookbooks: <%= !ENV['CI'] %>
  always_update_cookbooks: true

verifier:
  name: inspec

platforms:
  - name: centos-7

suites:
  - name: default
    run_list:
      - recipe[test::default]
    verifier:
      inspec_tests:
        - test/integration/default
    attributes:

Mon metadata.rb est le suivant

name 'test'
maintainer 'The Authors'
maintainer_email '[email protected]'
license 'All Rights Reserved'
description 'Installs/Configures test'
long_description 'Installs/Configures test'
version '0.1.0'
chef_version '>= 12.14' if respond_to?(:chef_version)

depends 'java', '~> 2.2.0'

Mon recipes/default.rb

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

include_recipe "java"

Et son attributes/recipe.rb

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

, Lorsque j'essaie d'exécuter kitchen converge la sortie est

-----> Starting Kitchen (v1.22.0)
-----> Converging <default-centos-7>...
       Preparing files for transfer
       Preparing dna.json
       Resolving cookbook dependencies with Berkshelf 7.0.4...
       Removing non-cookbook files before transfer
       Preparing validation.pem
       Preparing client.rb
-----> Chef Omnibus installation detected (install only if missing)
       Transferring files to <default-centos-7>
       Starting Chef Client, version 14.3.37
       resolving cookbooks for run list: ["test::default"]
       Synchronizing Cookbooks:
         - windows (5.0.0)
         - homebrew (5.0.4)
         - test (0.1.0)
         - java (2.2.0)
       Installing Cookbook Gems:
       Compiling Cookbooks...

       ================================================================================
       Recipe Compile Error in /tmp/kitchen/cache/cookbooks/test/recipes/default.rb
       ================================================================================

       NoMethodError
       -------------
       undefined method `java_oracle_install' for cookbook: java, recipe: oracle :Chef::Recipe

       Cookbook Trace:
       ---------------
         /tmp/kitchen/cache/cookbooks/java/recipes/oracle.rb:40:in `from_file'
         /tmp/kitchen/cache/cookbooks/java/recipes/default.rb:22:in `from_file'
         /tmp/kitchen/cache/cookbooks/test/recipes/default.rb:8:in `from_file'

       Relevant File Content:
       ----------------------
       /tmp/kitchen/cache/cookbooks/java/recipes/oracle.rb:

        33:  version = node['java']['jdk_version'].to_s
        34:  tarball_url = node['java']['jdk'][version][arch]['url']
        35:  tarball_checksum = node['java']['jdk'][version][arch]['checksum']
        36:  bin_cmds = node['java']['jdk'][version]['bin_cmds']
        37:
        38:  include_recipe 'java::set_java_home'
        39:
        40>> java_oracle_install 'jdk' do
        41:    url tarball_url
        42:    default node['java']['set_default']
        43:    checksum tarball_checksum
        44:    app_home java_home
        45:    bin_cmds bin_cmds
        46:    alternatives_priority node['java']['alternatives_priority']
        47:    retries node['java']['ark_retries']
        48:    retry_delay node['java']['ark_retry_delay']
        49:    connect_timeout node['java']['ark_timeout']

       System Info:
       ------------
       chef_version=14.3.37
       platform=centos
       platform_version=7.5.1804
       ruby=ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
       program_name=/opt/chef/bin/chef-client
       executable=/opt/chef/bin/chef-client


       Running handlers:
       [2018-08-21T17:23:54+00:00] ERROR: Running exception handlers
       [2018-08-21T17:23:54+00:00] ERROR: Running exception handlers
       Running handlers complete
       [2018-08-21T17:23:54+00:00] ERROR: Exception handlers complete
       [2018-08-21T17:23:54+00:00] ERROR: Exception handlers complete
       Chef Client failed. 0 resources updated in 04 seconds
       [2018-08-21T17:23:54+00:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
       [2018-08-21T17:23:54+00:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
       [2018-08-21T17:23:54+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
       [2018-08-21T17:23:54+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
       [2018-08-21T17:23:54+00:00] FATAL: NoMethodError: undefined method `java_oracle_install' for cookbook: java, recipe: oracle :Chef::Recipe
       [2018-08-21T17:23:54+00:00] FATAL: NoMethodError: undefined method `java_oracle_install' for cookbook: java, recipe: oracle :Chef::Recipe
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: 1 actions failed.
>>>>>>     Converge failed on instance <default-centos-7>.  Please see .kitchen/logs/default-centos-7.log for more details
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

Des suggestions?

Author: Vyacheslav, 2018-08-21

1 answers

Après plusieurs tentatives (également pris en charge par le chat Slack Chef ...), j'ai résolu: je ne sais pas à quel point cette solution est générale mais cela fonctionne.

Le problème concerne l'exécution de la commande kitchen converge.

J'ai remarqué que quand il échoue avec le message warning: conflicting chdir during another chdir block cela génère (je ne sais pourquoi ...), À L'INTÉRIEUR du livre de cuisine quelques répertoires (dans mon cas, java, windows, homebrew, ecc .. ), et c'était assez étrange.

Ce que j'ai fait:

  1. Soumettre la commande kitchen destroy
  2. Vidé mon cache berks C:\Users\USERNAME\.berkshelf
  3. Soumettre la commande kitchen create
  4. Soumettre la commande kitchen converge
  5. Si l'erreur warning: conflicting chdir during another chdir block compare et un répertoire étrange est généré dans le livre de recettes, supprimez-les (MANUELLEMENT).
  6. Vérifiez que le livre de cuisine du supermarché Chef est téléchargé dans C:\Users\USERNAME\.berkshelf (dans mon cas, homebrew-5.0.4, java-2.2.0, tomcat-3.0.0 et windows-5.0.0)
  7. Répétez la commande kitchen converge jusqu'à ce qu'aucune erreur n'est générée

De cette façon oracle java jdk 1.8 a été installé sur mon nœud cible CentOS 7

J'espère que cela pourrait être utile pour les autres

 1
Author: Cesare, 2018-08-23 08:15:54