megabyte-labs.java
Java
Eingereicht von Megabyte Labs
Eine Ansible-Rolle, die Java auf fast jeder Plattform installiert
Inhalt
- Überblick
- Funktionen
- Schnellstart
- Unterstützte Betriebssysteme
- Abhängigkeiten
- Beispiel-Playbook
- Beitragen
- Lizenz
Überblick
Dieses Repository ist das Zuhause 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 über Chocolatey auf Windows
- Stellt sicher, dass die
JAVA_HOME
-Variable gesetzt ist - Installiert Java auf macOS, Linux und Windows-Systemen
- Stellt sicher, dass Java zum
PATH
hinzugefügt wird
Optimierung für Windows:
- Entfernt den Java-Ordner aus dem Startmenü auf Windows
Schnellstart
Möchten Sie Java installieren, ohne sich mit Ansible herumschlagen zu müssen? Führen Sie einfach den folgenden Befehl aus, der zu Ihrem Betriebssystem passt:
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 Sie die oben genannten Befehle ausführen, sollten Sie wahrscheinlich direkt auf die URL zugreifen, um sicherzustellen, dass der Code legitim ist. Wir wissen bereits, dass er sicher ist, aber bevor Sie ein Skript auf Ihrem Computer ausführen, sollten Sie es überprüfen.
Sie können auch Install Doctor ausprobieren. Es handelt sich um eine von uns erstellte App, die jede Ansible-Rolle mit einem einzigen Befehl installieren kann. Sie hat auch einige andere nützliche Funktionen, wie die Möglichkeit, Binärdateien ohne Passwort in Echtzeit zu installieren. Wenn Sie jedoch diese Rolle in ein Ansible-Playbook integrieren möchten (und Einstellungen anpassen wollen), lesen Sie bitte weiter unten.
Unterstützte Betriebssysteme
Die nachfolgende Tabelle zeigt die Betriebssysteme, auf denen wir diese Rolle getestet haben. Sie wird automatisch generiert, indem die Ansible Molecule-Tests im Ordner molecule/
verwendet werden. Es gibt CI-Logik, um die Tests für Windows, macOS, Ubuntu, Fedora, CentOS, Debian und Archlinux automatisch zu verwalten. Wenn Ihr Betriebssystem nicht aufgelistet ist, aber eine Variante eines der getesteten Systeme ist (z. B. ein Debian-basiertes oder ein RedHat-basiertes System), könnte die Rolle trotzdem funktionieren.
OS-Familie | OS-Version | Status | Idempotent | Getestet auf |
---|
Was bedeutet idempotent? Idempotent bedeutet, dass beim zweimaligen Ausführen dieser Rolle keine Änderungen am System beim zweiten Mal vorgenommen werden.
Wir haben viel Zeit damit verbracht, unsere CI-Konfigurationen und Build-Tools zu perfektionieren. Wenn Sie mehr darüber erfahren möchten, wie wir unseren Prozess optimiert haben, werden Sie unsere Allgemeinen Ansible-Dateien und Ansible-Dokumentation Repositories interessant finden. Siehe die CONTRIBUTING.md Anleitung für weitere Details.
Abhängigkeiten
Die meisten unserer Rollen basieren auf Ansible Galaxy Kollektionen. Einige unserer Projekte hängen auch von anderen Rollen und Kollektionen ab, die auf Ansible Galaxy veröffentlicht sind. Bevor Sie diese Rolle ausführen, müssen Sie die Sammlung und die Rollenabhängigkeiten sowie die Python-Anforderungen installieren, indem Sie Folgendes ausführen:
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 können Sie bash .config/scripts/start.sh
ausführen, wenn Sie neu bei Ansible sind und nichts gegen die Installation der Entwicklungsanforderungen haben. Das ist der einfache Weg, um sicherzustellen, dass alles richtig funktioniert.
Python
Obwohl das einzige Werkzeug, das erforderlich ist, um dies 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 folgende Tabelle 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 | Benötigt zum Bereitstellen von Vagrant-VMs | ✔️ |
pywinrm | Benötigt zum Bereitstellen von Windows-Computern, die WinRM verwenden | ✔️ |
ansible-lint | Linting-Tool für Ansible-Dateien | |
ansibler | Eigenes Tool zur Erstellung fortschrittlicher Dokumentationen (z. B. zur Generierung von Kompatibilitätstabellen) | |
black | Python-Datei-Auto-Formatter, falls das Projekt Python-Testskripte verwendet | |
blocklint | Linting-Tool, das verhindert, dass bestimmte Wörter in den Code gelangen | |
flake8 | Python-Linter, der Fehler in der Python-Syntax und -Stil berichte | |
mod-ansible-autodoc | Benutzerdefinierte Abspaltung von ansible-autodoc, die es uns ermöglicht, Dokumentationen basierend auf Kommentaren in den YAML-Dateien der Rolle automatisch zu generieren | |
molecule | Testframework 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 Linting | |
proselint | Linter, der zur Verbesserung der englischen Sprache verwendet wird (um Dokumentationen zu verbessern) | |
yamllint | Linter für YAML-Dateien, der sicherstellt, dass die richtige Syntax und das richtige Styling verwendet wird |
Galaxy-Rollen
Obwohl die meisten unserer Rollen keine Abhängigkeiten haben, gibt es in einigen Fällen Rollen, die installiert werden müssen, bevor die Logik fortfahren 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 nur einmal pro Playbook ausgeführt werden. Wenn Sie mehr als eine unserer Rollen in Ihr Playbook einfügen, die gemeinsame Abhängigkeiten hat, wird die Installationsabhängigkeit nach dem ersten Lauf übersprungen. Einige unserer Rollen verwenden auch Helper-Rollen 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 von dieser Rolle benötigten Ansible Galaxy-Abhängigkeiten (d. h. meta/main.yml
Rollenabhängigkeiten, Helper-Rollen, Kollektionen usw.). Zu Ihrer Bequemlichkeit finden Sie hier eine Liste der Rollenabhängigkeiten mit einer kurzen Beschreibung:
rollendependenzen
Galaxy-Kollektionen
Diese Rolle ist auf mehrere Ansible Galaxy-Kollektionen angewiesen. Die Kollektionen sowie Links zu ihren Quellen sind unten aufgeführt.
Beispiel-Playbook
Wenn die Abhängigkeiten installiert sind, müssen Sie nur die Rolle zu Ihrem Haupt-Playbook hinzufügen. Die Rolle kümmert sich um das become
Verhalten, sodass Sie die Rolle einfach zu Ihrem Playbook hinzufügen können, ohne sich um Befehle kümmern zu müssen, die nicht als Root ausgeführt werden sollten:
- hosts: all
roles:
- professormanhattan.java
Wenn Sie diese Rolle in ein bereits bestehendes Playbook integrieren, kann es ratsam sein, die Anforderungen aus pyproject.toml
und requirements.yml
in die entsprechenden Dateien im Wurzelverzeichnis Ihres Playbooks zu kopieren, sodass Sie sich nur um die Installation eines Satzes von Anforderungen bei zukünftiger Nutzung kümmern müssen. Beachten Sie, dass die Abhängigkeiten in pyproject.toml
in die traditionellere Datei requirements.txt
verschoben werden können, wenn Sie diese derzeit zur Verfolgung von Python-Abhängigkeiten verwenden.
Beispiel aus der Praxis
Sie finden ein Beispiel für ein Playbook, das diese Rolle enthält, in unserem Haupt-Playbook (a.k.a. Tankstelle). Das Playbook ist ein hervorragendes Beispiel für jemanden, der lernt, wie man Ansible verwendet. Es enthält auch viele gut durchdachte Build-Tools, die fortgeschrittene Ansible-Benutzer zu schätzen wissen. Und Personen, die sich nicht um Ansible kümmern, können auch davon profitieren, da es Ihnen praktisch ermöglicht, Ihren Computer (und Ihr Netzwerk) in die ultimative Entwicklungsumgebung zu verwandeln. Das Wichtigste ist, dass es ein großartiges Projekt ist, das Entwickler kennen sollten!
Beitragen
Beiträge, Probleme und Funktionsanfragen sind willkommen! Überprüfen Sie gerne die Issues-Seite. Wenn Sie beitragen möchten, werfen Sie bitte einen Blick auf die Beitragsleitfaden.
Sponsoring
Lieber großartiger Mensch,
Ich erstelle Open-Source-Projekte aus Liebe. Obwohl ich einen Job, ein Dach über dem Kopf und so viel Fast Food, wie ich brauche, habe, wäre es trotzdem toll, von der Community für etwas geschätzt zu werden, an dem ich viel Zeit und Geld investiert habe. Bitte ziehen Sie in Betracht, mich zu unterstützen! Wer weiß? Vielleicht kann ich meinen Job kündigen und Open-Source hauptberuflich veröffentlichen.
Mit freundlichen Grüßen,
Brian Zalewski
Partner
Nachfolgend finden Sie eine Liste von Diensten, die wir nutzen und die spezielle Anreize für die Anmeldung über unsere speziellen Links bieten:

Lizenz
Copyright © 2020-2021 Megabyte LLC. Dieses Projekt ist MIT lizenziert.
Installs Java on almost any platform
ansible-galaxy install megabyte-labs.java