professormanhattan.java

Java

Erstellt von Megabyte Labs



Eine Ansible-Rolle, die Java auf fast jeder Plattform installiert


Inhaltsverzeichnis

Überblick

Dieses Repository ist die Heimat einer Ansible Rolle, die Java auf fast jeder Plattform installiert. Java ist eine klassenbasierte, objektorientierte Programmiersprache, die so wenig Implementierungsabhängigkeiten wie möglich haben soll.

Funktionen

Stellt sicher, dass Java installiert ist:

  • Installiert Java mit Chocolatey auf Windows
  • Stellt sicher, dass die Variable JAVA_HOME gesetzt ist
  • Installiert Java auf macOS, Linux und Windows-Systemen
  • Stellt sicher, dass Java zum PATH hinzugefügt wird

Windows-Optimierung:

  • Entfernt den Java-Ordner aus dem Startmenü auf Windows

Schnellstart

Möchtest du Java installieren, ohne dich mit Ansible herumzuschlagen? Führe einfach den folgenden Befehl aus, der mit deinem Betriebssystem korreliert:

Linux/macOS:

curl -sS https://install.doctor/java | bash

Windows:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://install.doctor/java?os=win'))

Wichtiger Hinweis: Bevor du die obigen Befehle ausführst, solltest du wahrscheinlich die URL direkt aufrufen, um sicherzustellen, dass der Code legitim ist. Wir wissen bereits, dass es sicher ist, aber bevor du ein Skript auf deinem Computer ausführst, solltest du es überprüfen.

Du kannst auch Install Doctor ausprobieren. Es ist eine von uns entwickelte App, die jede Ansible-Rolle mit einer einzigen Zeile installieren kann. Sie hat einige andere nützliche Funktionen wie die Möglichkeit, Binärdateien ohne Passwort zu installieren. Wenn du jedoch diese Rolle in ein Ansible-Playbook einfügen und die Einstellungen anpassen möchtest, lies bitte weiter unten.

Unterstützte Betriebssysteme

Die folgende Tabelle zeigt die Betriebssysteme, auf denen wir diese Rolle getestet haben. Sie wird automatisch mit den Ansible Molecule-Tests erstellt, die sich im Ordner molecule/ befinden. Es gibt CI-Logik, die das Testen von Windows, macOS, Ubuntu, Fedora, CentOS, Debian und Archlinux automatisch behandelt. Wenn dein Betriebssystem nicht aufgeführt ist, aber eine Variante eines der Systeme ist, die wir testen (z. B. ein Debian-basiertes System oder ein RedHat-basiertes System), dann ist es möglich, dass die Rolle dennoch funktioniert.

OS-Familie OS-Version Status Idempotent Getestet auf

Was bedeutet idempotent? Idempotent bedeutet, dass du diese Rolle zweimal hintereinander ausführst und beim zweiten Mal keine Änderungen am System vorgenommen werden.

Wir haben viel Zeit damit verbracht, unsere CI-Konfigurationen und Build-Tools zu perfektionieren. Wenn du mehr über unsere Perfektionierung des Prozesses erfahren möchtest, dann findest du unsere Ansible Standarddateien und Ansible Dokumentation Repositories interessant. Siehe die CONTRIBUTING.md Anleitung für weitere Details.

Abhängigkeiten

Die meisten unserer Rollen hängen von Ansible Galaxy Sammlungen ab. Einige unserer Projekte sind auch abhängig von anderen Rollen und Sammlungen, die auf Ansible Galaxy veröffentlicht sind. Bevor du diese Rolle ausführst, musst du die Sammlung und Rollenabhängigkeiten sowie die Python-Anforderungen installieren, indem du Folgendes ausführst:

if type poetry &> /dev/null; then poetry install --no-root; else pip3 install -r .config/assets/requirements.txt; fi
ansible-galaxy install -r requirements.yml

Alternativ kannst du einfach bash .config/scripts/start.sh ausführen, wenn du neu bei Ansible bist und die Entwicklungsanforderungen ebenfalls installieren möchtest. Dies ist der einfache Weg, um sicherzustellen, dass alles richtig funktioniert.

Python

Obwohl das einzige notwendige Tool, um dieses Play auf einem Standardgerät auszuführen, Ansible (ein Python-Paket) ist, fügen wir mehrere andere Python-Abhängigkeiten hinzu, die für spezielle Anwendungsfälle und die Entwicklung erforderlich sind. Die Tabelle unten beschreibt diese Pakete:

Paket Beschreibung Erforderlich
ansible Ein Konfigurationsmanagementsystem, das Computer aus der Ferne konfigurieren kann
✔️
docker Ermöglicht die Bereitstellung von Docker-Containern mit Ansible
✔️
python-vagrant Erforderlich für die Bereitstellung von Vagrant-VMs
✔️
pywinrm Erforderlich für die Bereitstellung von Windows-Computern, die WinRM verwenden
✔️
ansible-lint Linting-Tool für Ansible-Dateien
ansibler Anpassungswerkzeug zur Erstellung von umfangreicher Dokumentation (z. B. es erzeugt das Kompatibilitätsdiagramm und andere Diagramme)
black Python-Dateiautomatiker, enthalten für den Fall, dass das Projekt Python-Testskripte verwendet
blocklint Linting-Tool, das verhindert, dass bestimmte Wörter in den Code gelangen
flake8 Python-Linter, der Python-Syntax- und Stilfehler meldet
mod-ansible-autodoc Benutzerdefinierte Abzweigung von ansible-autodoc, die es uns ermöglicht, Dokumentation basierend auf Kommentaren in den YAML-Dateien der Rolle automatisch zu generieren
molecule Test-Framework für Ansible
molecule-docker Molecule-Plugin zur Bereitstellung von Docker-Containern
molecule-vagrant Molecule-Plugin zur Bereitstellung von Vagrant-VMs
pre-commit-hooks Sammlung nützlicher Werkzeuge zum Linten
proselint Linter, der verwendet wird, um Verbesserungen der englischen Sprache zu erzeugen (wird zur Verbesserung der Dokumentation verwendet)
yamllint Linter für YAML-Dateien, der sicherstellt, dass die korrekte Syntax und Formatierung verwendet wird

Galaxy Rollen

Obwohl die meisten unserer Rollen keine Abhängigkeiten haben, gibt es einige Fälle, in denen eine andere Rolle installiert werden muss, bevor die Logik fortgesetzt werden kann. Zu Beginn des Plays werden die in meta/main.yml aufgeführten Ansible Galaxy Rollenabhängigkeiten ausgeführt. Diese Abhängigkeiten sind so konfiguriert, dass sie pro Playbook nur einmal ausgeführt werden. Wenn du mehr als eine unserer Rollen in deinem Playbook einfügst, die gemeinsame Abhängigkeiten haben, wird die Abhängigkeitsinstallation nach dem ersten Lauf übersprungen. Einige unserer Rollen verwenden auch Hilfsrollen direkt aus den Aufgaben-Dateien, was hilft, unser Haupt-Playbook (Tankstelle) DRY zu halten.

Die Datei requirements.yml enthält eine vollständige Liste der Ansible Galaxy Abhängigkeiten, die für diese Rolle erforderlich sind (d. h. Abhängigkeiten von meta/main.yml Rollen, Hilfsrollen, Sammlungen usw.). Zu deinem Vorteil ist hier eine Liste der Rollenabhängigkeiten mit kurzen Beschreibungen:

rollen_abhaengigkeiten

Galaxy Sammlungen

Diese Rolle ist von mehreren Ansible Galaxy Sammlungen abhängig. Die Sammlungen sowie Links zu ihren Quellen sind unten aufgeführt.

  • chocolatey.chocolatey Ansible Galaxy Badge
  • community.general Ansible Galaxy Badge
  • google.cloud Ansible Galaxy Badge

Beispiel-Playbook

Mit den installierten Abhängigkeiten musst du nur noch die Rolle zu deinem Haupt-Playbook hinzufügen. Die Rolle kümmert sich um das become Verhalten, sodass du die Rolle einfach zu deinem Playbook hinzufügen kannst, ohne dir Sorgen um Befehle machen zu müssen, die nicht als root ausgeführt werden sollten:

- hosts: all
  roles:
    - professormanhattan.java

Wenn du diese Rolle in ein bestehendes Playbook integrierst, kann es sinnvoll sein, die in pyproject.toml und requirements.yml beschriebenen Anforderungen in die entsprechenden Dateien im Root deines Playbooks zu kopieren, sodass du dir bei zukünftiger Nutzung keine Gedanken über die Installation eines Sets von Anforderungen machen musst. Beachte, dass die Abhängigkeiten in pyproject.toml in die traditionellere Datei requirements.txt verschoben werden können, falls du diese zur Verfolgung von Python-Abhängigkeiten verwendest.

Beispiel aus der Praxis

Du kannst ein Beispiel eines Playbooks, das diese Rolle integriert, in unserem Haupt-Playbook (a.k.a. Tankstelle) finden. Das Playbook ist ein ausgezeichnetes Beispiel für jemanden, der lernt, wie man Ansible verwendet. Es umfasst auch viele gut durchdachte Build-Tools, die fortgeschrittene Ansible-Benutzer zu schätzen wissen. Und Menschen, die Ansible egal sind, können ebenfalls davon profitieren, weil es dir ermöglicht, deinen Computer (und das Netzwerk) gewissermaßen in die ultimative Entwicklungsumgebung zu verwandeln. Das Fazit ist, dass es ein großartiges Projekt ist, über das Entwickler Bescheid wissen sollten!

Beitragen

Beiträge, Probleme und Feature-Anfragen sind willkommen! Schau dir gerne die Issue-Seite an. Wenn du beitragen möchtest, wirf bitte einen Blick auf die Beitragsrichtlinien.

Unterstützung

Lieber tolle Person,

Ich erstelle Open-Source-Projekte aus Liebe. Obwohl ich einen Job habe, ein Dach über dem Kopf und so viel Fast Food, wie ich bewältigen kann, wäre es trotzdem ziemlich cool, von der Community für etwas geschätzt zu werden, an dem ich viel Zeit und Geld investiert habe. Bitte erwäge, mich zu unterstützen! Wer weiß? Vielleicht kann ich meinen Job kündigen und open source Vollzeit veröffentlichen.

Mit freundlichen Grüßen,

Brian Zalewski

Open Collective Sponsoren GitHub Sponsoren Patreon

Partner

Nachfolgend findest du eine Liste von Diensten, die wir nutzen und die spezielle Anreize für die Anmeldung zu ihren Diensten über unsere speziellen Links bieten:

MailChimp DigitalOcean Referral Badge

Lizenz

Copyright © 2020-2021 Megabyte LLC. Dieses Projekt ist MIT lizenziert.

Installieren
ansible-galaxy install professormanhattan.java
GitHub Repository
Lizenz
other
Downloads
1.2k
Besitzer
Often imitated, never duplicated