kaos2oak.oracle_java

Kaos2oak Oracle Java

Oracle Java (JDK) installieren

Diese Rolle ist dafür gedacht, das Java JDK zu installieren. Sie sollte mit Java-Versionen 7 und höher funktionieren, wurde jedoch nicht umfassend mit allen möglichen Haupt- und Nebenversionen getestet.

Ziel

Das anfängliche Ziel dieser Rolle ist es, eine Methode bereitzustellen, um macOS, Ubuntu, RedHat und Windows mit Oracle Java zu provisionieren, sodass ein einzelnes Playbook verwendet werden kann, um all diese Plattformen für Softwaretests einzurichten.

Wichtige Überlegungen vor der Verwendung dieser Rolle:

  • Es wurden keine Maßnahmen zur Bereitstellung der Sicherheit getroffen, die für eine Produktionsinstallation erforderlich wäre.
  • Die Rolle ist so konzipiert, dass bestimmte Versionen installiert werden können, anstatt einfach "die neueste".

Anforderungen

Diese Rolle ist so konzipiert, dass sie mit einem Java-Installer verwendet wird, der von Oracle heruntergeladen und lokal auf Ihrem "Controller" (dem Gerät, auf dem Sie das Ansible-Playbook ausführen) gespeichert wird. Oracle hat es schwierig gemacht, Installer herunterzuladen, die nicht die neueste verfügbare Version sind. Wenn Sie diese Rolle verwenden möchten und den Installer automatisch von Oracle herunterladen möchten (was nur mit den neuesten Installern funktioniert), müssen Sie möglicherweise Folgendes tun (unter Verwendung von Informationen von der Oracle-Website als Referenz), falls die main.yml-Standarddatei nicht bereits die neuesten Versionsinformationen enthält:

  • Geben Sie die neueste Java-Version an.
  • Geben Sie den Download-Pfad für die neuesten Java-Installer an.

Um dies zu tun, navigieren Sie zur Oracle Java SE Download-Seite, gehen Sie zur Seite der neuesten Version, akzeptieren Sie die Lizenzvereinbarung und kopieren Sie den Link zu einem der Installer-Downloads. Sie können jetzt diesen Link ohne den Namen des Installers als java_installer_url_path im Playbook oder als JAVA_INSTALLER_URL_PATH Umgebungsvariable verwenden.

Wenn Sie Ansible 2.4 oder höher auf macOS High Sierra oder höher ausführen, sollten Sie sich über ein Problem informieren, das "Änderungen in High Sierra betrifft, die viele Python-Dinge, die fork() verwenden, brechen." Siehe das Ansible-Problem 32499 für weitere Informationen.

Aufgrund des oben genannten Problems möchten Sie möglicherweise diese Zeile in Ihre Vagrantfile einfügen, wenn Sie Vagrant verwenden:

ENV["VAGRANT_OLD_ENV_OBJC_DISABLE_INITIALIZE_FORK_SAFETY"] = "YES"

Oder exportieren Sie diese Informationen, bevor Sie die Rolle ausführen:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Hinweis: Die Bereitstellung einer Windows-VM scheint besonders empfindlich zu sein.

Umgebungsvariablen

Variablen, die besonders für die Umgebung sind, aus der Sie das Playbook ausführen, können als Umgebungsvariablen bereitgestellt werden, damit sie aus einer Datei in der Umgebung "geladen" werden können. Dies bietet eine einfache Möglichkeit, unterschiedliche Pfade zu Ressourcen anzugeben, wenn Sie die Rollen auf verschiedenen Computern verwenden.

Option Standard Beispiel
JAVA_VERSION keine 10.0.2 oder 1.8.0_192
JAVA_LINUX_LOCAL_INSTALLERS_PATH keine /Users/Shared/Installers/Linux/Java
JAVA_MAC_LOCAL_INSTALLERS_PATH keine /Users/Shared/Installers/macOS/Java
JAVA_WINDOWS_LOCAL_INSTALLERS_PATH keine /Users/Shared/Installers/Windows/Java
LINUX_LOCAL_INSTALLERS_PATH keine /Users/Shared/Installers/Linux
MAC_LOCAL_INSTALLERS_PATH keine /Users/Shared/Installers/macOS
WINDOWS_LOCAL_INSTALLERS_PATH keine /Users/Shared/Installers/Windows
JAVA_LOCAL_INSTALLERS_PATH keine /Users/Shared/Installers/Java
LOCAL_INSTALLERS_PATH keine /Users/Shared/Installers
JAVA_INSTALLER_URL_PATH keine http://download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7

Hinweis: Eine oder mehrere der INSTALLERS_PATH-Umgebungsvariablen können definiert sein, und die Rolle wird die Pfade in der obigen Reihenfolge durchsuchen, bis sie einen Installer findet. Wenn sie keinen Installer lokal findet, wird sie versuchen, den Installer herunterzuladen, aber dies wird wahrscheinlich nur für die neuesten Installer-Versionen funktionieren, aufgrund von Download-Beschränkungen, die Oracle eingerichtet hat.

Rollenvariablen

Variablen, die auf Optionen abzielen, die während der Ausführung der Rollen verwendet werden sollen, werden als Rollenvariablen angegeben und können im Playbook selbst oder über die Kommandozeile beim Ausführen des Playbooks angegeben werden.

Option Standard Beispiel
java_version 11.0.1 10.0.2 oder 1.8.0_192
java_installers_path_list [/Users/Shared/Installers] [/Users/Shared/Installers,/Users/myaccount/Desktop]
java_installer_url_path siehe main.yml in defaults http://download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7

Hinweis: Die Verwendung von java_installers_path_list oder java_installer_url_path könnte als "normale Nutzung" betrachtet werden, wird jedoch für die Verwendung in Playbooks oder anderen Szenarien unterstützt, in denen es sinnvoll ist.

Hinweis: Die Verwendung von java_installers_path wird weiterhin unterstützt, ist jedoch veraltet und wird bei der nächsten größeren Änderung entfernt.

Abhängigkeiten

Wenn Sie eine ältere Version von Java mit JCE auf RedHat installieren möchten, müssen Sie sicherstellen, dass RedHat mit einem Repository registriert ist, in dem unzip zur Installation verfügbar ist.

Rollenverwendung

Die Verwendung dieser Rolle besteht aus Folgendem:

  • Erstellen Sie ein Playbook.
  • Beschaffen und haben Sie den gewünschten Installer lokal auf dem Ansible-Controller verfügbar.
  • Geben Sie den Speicherort des Installers auf dem Controller als Umgebungsvariable, im Playbook oder als Extra-Variable an.
  • Geben Sie die Java-Version (muss mit dem Installer übereinstimmen) als Umgebungsvariable, im Playbook oder als Extra-Variable an.
  • Führen Sie das Playbook aus.

Beispiel-Playbooks

- name: Standard Oracle JDK installieren
  hosts: servers
  roles:
    - { role: kaos2oak.oracle-java }

Hinweis: Siehe die defaults.yml-Datei für die "Standard"-Java-Version, die durch das obige Playbook installiert wird.

- name: Oracle JDK 11.0.1 installieren
  hosts: servers
  vars:
    java_version: '11.0.1'
  roles:
    - { role: kaos2oak.oracle-java }
- name: Oracle JDK 8u192 installieren
  hosts: servers
  vars:
    java_version: '1.8.0_192'
  roles:
    - { role: kaos2oak.oracle-java }
- name: Oracle JDK 7u80 mit JCE installieren
  hosts: servers
  vars:
    java_version: '1.7.0_80'
  roles:
    - { role: kaos2oak.oracle-java }

Beispiel-Installer-Standorte

Wenn es wirklich schnell und einfach gehen soll:

export LOCAL_INSTALLERS_PATH="$HOME/Downloads"

Oder Sie können die Installer immer an einen etwas dauerhafteren Standardort verschieben, nachdem Sie sie heruntergeladen haben, und dann auf diesen Ort verweisen:

export JAVA_LOCAL_INSTALLERS_PATH="/Users/Shared/Installers/Java"

Wenn Sie die Dinge ordentlich und organisiert halten möchten, können Sie die Installer in Ordnern organisieren, eine Datei mit einem Namen wie setup in einem Verzeichnis namens my in diesem Repository erstellen (die meisten Inhalte des my-Verzeichnisses sind Teil der .gitignore, sodass sie nicht in einen Commit aufgenommen werden), und dann die Datei "laden":

# Datei: setup
export JAVA_MAC_LOCAL_INSTALLERS_PATH="$HOME/Installers/Mac/Java"
export JAVA_LINUX_LOCAL_INSTALLERS_PATH="$HOME/Installers/Linux/Java"
export JAVA_WINDOWS_LOCAL_INSTALLERS_PATH="$HOME/Installers/Windows/Java"
source my/setup

Beispiel-Java-Version

Da die Java-Version etwas sein könnte, das Sie spontan ändern möchten, möchten Sie sie wahrscheinlich nicht in die setup-Datei aufnehmen, aber Sie können sie jederzeit über die Kommandozeile vor dem Ausführen des Ansible-Playbooks angeben:

export JAVA_VERSION=1.8.0_192

Oder geben Sie es als "Extra-Variablen"-Rollenvariable für den Ansible-Playbook-Lauf an:

-e "java_version=11.0.1"

Beispiel-Playbook-Ausführungen

Angenommen, Sie haben ein Playbook mit dem Namen k2o-java.yml erstellt:

ansible-playbook k2o-java.yml

JAVA_VERSION=1.8.0_152 ansible-playbook k2o-java.yml

ansible-playbook k2o-java.yml -e "java_version=1.8.0_152"

Wenn das Playbook selbst die Java-Version enthält, könnte es so aussehen:

ansible-playbook k2o-java-7u80.yml

Rollen-Testen

Voraussetzungen

Molecule wird zum Testen dieser Rolle verwendet.

Hinweis: Windows-Tests mit Molecule werden nicht aktiv unterstützt, daher funktionieren diese Tests möglicherweise nicht.

Sie müssen Molecule und die Python-Support-Module installieren, bevor Sie die Rollentests ausführen:

pip install molecule
pip install docker-py

Sie müssen auch Folgendes installieren, bevor Sie die Vagrant-Rollentests ausführen:

pip install python-vagrant

Sie müssen möglicherweise auch den folgenden Befehl ausführen, bevor Sie die Molecule-Tests mit Vagrant ausführen (siehe Anforderungen):

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Der 'Verifizierer' für Windows ist deaktiviert, da ich noch nicht in der Lage war, die Testinfra-Überprüfung für Windows zum Laufen zu bringen. Wenn Sie in diesem Bereich Erfahrung oder Ratschläge haben, lassen Sie es mich bitte wissen.

Java-Versionen in Molecule-Tests

Um die Molecule-Tests für eine bestimmte Java-Version auszuführen, müssen Sie die JAVA_VERSION als Umgebungsvariable bereitstellen und sicherstellen, dass der Installer lokal im entsprechenden ...INSTALLERS_PATH-Ort verfügbar ist. Siehe Beispiele weiter unten.

Es ist auch möglich, die Datei molecule.yml für ein Szenario zu bearbeiten und die java_version so anzugeben:

provisioner:
  name: ansible
  env:
    JAVA_VERSION: 1.8.0_192

Standard-Tests

Ubuntu 18, CentOS 7 über Docker:

molecule test

oder

JAVA_VERSION=1.8.0_192 molecule test

Ubuntu-Tests

Ubuntu 18, 16, 14, 12 über Docker:

molecule test --scenario-name ubuntu-docker

Ubuntu 18 über Vagrant:

molecule test --scenario-name ubuntu-vagrant

CentOS/RedHat-Tests

CentOS 7, 6 über Docker:

molecule test --scenario-name centos-docker

macOS-Tests

macOS 10.13, 10.12, 10.11 über Vagrant:

molecule test --scenario-name macos-vagrant

Windows-Tests

Windows 2012r2 über Vagrant (funktioniert möglicherweise nicht):

molecule test --scenario-name windows-vagrant

Docker-Speicherprobleme

Wenn Sie feststellen, dass der Speicherplatz auf Ihrem Laufwerk verschwindet, möchten Sie möglicherweise Docker für Mac: Speicherplatz reduzieren konsultieren.

Lizenz

MIT

Autor Informationen

Justin Sako

Über das Projekt

Install Oracle Java

Installieren
ansible-galaxy install kaos2oak.oracle_java
GitHub Repository
Lizenz
mit
Downloads
109
Besitzer