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
ansible-galaxy install kaos2oak.oracle_java