professormanhattan.java
Java
Erstellt von Megabyte Labs
Eine Ansible-Rolle, die Java auf fast jeder Plattform installiert
Inhaltsverzeichnis
- Überblick
- Funktionen
- Schnellstart
- Unterstützte Betriebssysteme
- Abhängigkeiten
- Beispiel-Playbook
- Beitragen
- Lizenz
Ü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.
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
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:

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