gantsign.intellij
Ansible-Rolle: IntelliJ
Rolle zum Herunterladen, Installieren und Konfigurieren der IntelliJ IDEA IDE https://www.jetbrains.com/idea.
Diese Rolle kann IntelliJ-Plugins installieren. Wenn Sie bestimmte Plugins bedingt installieren möchten, schauen Sie sich unsere Begleitrolle an: gantsign.intellij-plugins.
Anforderungen
Ansible Core >= 2.12
Linux-Distribution
Debian-Familie
Ubuntu
- Focal (20.04)
- Jammy (22.04)
RedHat-Familie
Rocky Linux
- 9
Hinweis: Andere Versionen funktionieren wahrscheinlich, wurden jedoch nicht getestet.
Java JDK
- Sie müssen das JDK und die JDK-Quellen installieren.
- Wenn Sie Java > 9 verwenden, müssen Sie auch die jmods installieren.
z.B. Folgendes ist erforderlich, wenn Sie OpenJDK 17 mit Rocky Linux verwenden:
- name: Installiere OpenJDK 17 become: true yum: name: - java-17-openjdk-devel - java-17-openjdk-jmods - java-17-openjdk-src state: present
Apache Maven
Rollenvariablen
Die folgenden Variablen ändern das Verhalten dieser Rolle (Standardwerte sind unten angezeigt):
# Versionsnummer von IntelliJ IDEA
intellij_version: '2024.2'
# Spiegel, von dem das redistributable Paket von IntelliJ IDEA heruntergeladen werden soll
# Verwendet HTTP aufgrund von https://github.com/ansible/ansible/issues/11579
intellij_mirror: 'http://download.jetbrains.com/idea'
# Edition, die installiert werden soll (community oder ultimate)
intellij_edition: community
# Basisinstallationsverzeichnis für jede IntelliJ IDEA-Verteilung
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}
# Besitzer der Installationsdateien
intellij_install_user: root
# Standort der Standardinstallation von Apache Maven für IntelliJ IDEA-Projekte
# Standardmäßig der Wert von ansible_local.maven.general.home (siehe gantsign.maven Rolle)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'
# URL für den IntelliJ IDEA Plugin-Manager-Webdienst
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'
# Liste der Benutzer, für die IntelliJ IDEA konfiguriert werden soll
users: []
# Verzeichnis zum Speichern von Dateien, die für die Installation von IntelliJ IDEA heruntergeladen wurden
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_facts.env.HOME + '/.ansible/tmp/downloads') }}"
# Timeout für die Download-Antwort von IntelliJ IDEA in Sekunden
intellij_idea_download_timeout_seconds: 600
Benutzer werden wie folgt konfiguriert:
users:
- username: # Unix-Benutzername
intellij_group: # Unix-Gruppe für die Dateien/Verzeichnisse des Benutzers (optional - Standardwert ist der Benutzername)
intellij_jdks:
- name: # Der Name, der für dieses JDK verwendet werden soll
home: # Der Pfad zum JDK-Home.
# Der Name des JDK, den Sie als Standard für neue Projekte verwenden möchten.
# Erforderlich, wenn Sie `intellij_jdks` angeben.
# Muss mit dem Namen übereinstimmen, der einem der `intellij_jdks` gegeben wurde.
intellij_default_jdk:
intellij_disabled_plugins: # siehe ~/.config/JetBrains/*Idea*/disabled_plugins.txt
- # Plugin-ID
intellij_codestyles:
# Liste der Code-Stile (jeder XML-Standort kann durch URL oder Dateisystempfad angegeben werden)
- name: # Name (muss mit dem Wert in der XML-Datei /code_scheme/@name übereinstimmen)
url: # URL, um die Code-Stile XML herunterzuladen
- name: # Name (muss mit dem Wert in der XML-Datei /code_scheme/@name übereinstimmen)
src: # Pfad zur Code-Stile XML-Datei (kann absolut oder relativ sein, relative Pfade werden wie im Ansible Kopiermodul ausgewertet)
remote_src: # ja/nein, ob von dem Remote-Dateisystem kopiert werden soll (Standard nein)
intellij_default_codestyle: # Name (muss mit dem Wert in der XML-Datei /code_scheme/@name übereinstimmen)
intellij_inspection_profiles:
# Liste der Inspektionsprofile (jeder XML-Standort kann durch URL oder Dateisystempfad angegeben werden)
- name: # Name (muss mit dem Wert in der XML-Datei /profile/option[@name='myName']/@value übereinstimmen)
url: # URL, um das Inspektionsprofil XML herunterzuladen
- name: # Name (muss mit dem Wert in der XML-Datei /profile/option[@name='myName']/@value übereinstimmen)
src: # Pfad zur Inspektionsprofil XML-Datei (kann absolut oder relativ sein, relative Pfade werden wie im Ansible Kopiermodul ausgewertet)
remote_src: # ja/nein, ob von dem Remote-Dateisystem kopiert werden soll (Standard nein)
intellij_default_inspection_profile: # Name (muss mit dem Wert in der XML-Datei /profile/option[@name='myName']/@value übereinstimmen)
intellij_plugins:
- # Plugin-ID des zu installierenden Plugins
# Nur in der Ultimate Edition: Speicherort des IntelliJ Lizenzschlüssels auf dem Ansible Master.
# Ihr Lizenzschlüssel befindet sich unter ~/.config/JetBrains/*Idea*/idea.key
intellij_license_key_path: # z.B. '/vagrant/idea.key'
Achtung: die Funktion zum Installieren zusätzlicher Plugins basiert auf internen IntelliJ IDEA APIs und sollte derzeit als experimentell betrachtet werden.
Unterstützte IntelliJ IDEA-Versionen
Die folgenden Versionen von IntelliJ IDEA werden ohne zusätzliche Konfiguration unterstützt (für andere Versionen folgen Sie den Anweisungen zur erweiterten Konfiguration):
2024.2
2024.1.4
2024.1.3
2024.1.2
2024.1.1
2024.1
2023.3.6
2023.3.5
2023.3.4
2023.3.3
2023.3.2
2023.3.1
2023.3
2023.2.5
2023.2.4
2023.2.3
2023.2.2
2023.2.1
2023.2
2023.1.5
2023.1.4
2023.1.3
2023.1.2
2023.1.1
2023.1
2022.3.3
2022.3.2
2022.3.1
2022.3
2022.2.4
2022.2.3
2022.2.2
2022.2.1
2022.2
2022.1.4
2022.1.3
2022.1.2
2022.1.1
2022.1
2021.3.3
2021.3.2
2021.3.1
2021.3
2021.2.3
2021.2.2
2021.2.1
2021.2
2021.1.3
2021.1.2
2021.1.1
2021.1
2020.3.3
2020.3.2
2020.3.1
2020.3
2020.2.4
2020.2.3
2020.2.2
2020.2.1
2020.2
2020.1.2
2020.1.1
2020.1
2019.3.4
2019.3.3
2019.3.2
2019.3.1
2019.3
2019.2.4
2019.2.3
2019.2.2
2019.2.1
2019.2
2019.1.3
2019.1.2
2019.1.1
2019.1
2018.3.6
2018.3.5
2018.3.4
2018.3.3
2018.3.2
2018.3.1
2018.3
2018.2.5
2018.2.4
2018.2.3
2018.2.2
2018.2.1
2018.2
2018.1.6
2018.1.5
2018.1.4
2018.1.3
2018.1.2
2018.1.1
2018.1
2017.3.5
2017.3.4
2017.3.3
2017.3.2
2017.3.1
2017.3
2017.2.6
2017.2.5
2017.2.4
2017.2.3
2017.2.2
2017.2.1
2017.2
2017.1.5
2017.1.4
2017.1.3
2017.1.2
2017.1.1
2017.1
2016.3.5
2016.3.4
2016.3.3
2016.3.2
2016.3.1
2016.3
2016.2.5
2016.2.4
2016.2.3
2016.2.2
2016.2.1
2016.2
2016.1.3
2016.1.1
Erweiterte Konfiguration
Die folgende Rollenvariable hängt von der Version von IntelliJ IDEA ab; um eine IntelliJ IDEA-Version zu verwenden, die von dieser Rolle nicht vorkonfiguriert ist, müssen Sie die folgende Variable konfigurieren:
# SHA256-Summe für das redistributable Paket
# d.h. ideaIC-{{ intellij_version }}.tar.gz für die Community Edition
# oder ideaIU-{{ intellij_version }}.tar.gz für die Ultimate Edition
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179
IntelliJ Plugin-IDs
JetBrains macht die IntelliJ Plugin-IDs auf seiner Marktplatz-Website nicht sichtbar (https://plugins.jetbrains.com/idea). Aber es ist relativ einfach, die ID mit ein wenig JavaScript zu erhalten.
Suchen Sie im JetBrains Marketplace nach einem Plugin, das Sie installieren möchten, und navigieren Sie zur Übersichtsseite (z.B. https://plugins.jetbrains.com/plugin/12195-concise-assertj-optimizing-nitpicker-cajon-).
Geben Sie
javascript:
in die Adresszeile Ihres Browsers ein (drücken Sie noch nicht die Eingabetaste).Hinweis: Aus Sicherheitsgründen können Sie
javascript:
nicht in die Adresszeile einfügen (der Browser lässt das nicht zu), Sie müssen es eintippen.Fügen Sie nach
javascript:
Folgendes hinzu und drücken Sie Enter/Rücktaste:fetch(window.location.pathname.replace(/\/plugin\/(\d+).*/, "/api/plugins/$1")) .then((response) => response.json()) .then((data) => alert(`Plugin-ID: "${data.xmlId}"`));
Dies verändert den Pfad der URL mit einer RegEx und nutzt die Fetch API, um eine Anfrage an die JetBrains Plugins REST-API zu stellen. Anschließend wird ein Alert angezeigt, der die Plugin-ID (
xmlId
aus der JSON-Antwort) anzeigt.
Beispiel-Playbooks
Minimal-Playbook:
- hosts: servers
roles:
- role: gantsign.intellij
Playbook mit benutzerspezifischer Konfiguration (Standard JDK, Maven, deaktivierte Plugins und Code-Stil):
- hosts: servers
roles:
- role: gantsign.intellij
intellij_default_maven_home: '/opt/maven/apache-maven-3.9.4'
users:
- username: vagrant
intellij_jdks:
- name: '17'
home: '/usr/lib/jvm/java-17-openjdk-amd64'
- name: '11'
home: '/usr/lib/jvm/java-11-openjdk-amd64'
- name: '1.8'
home: '/usr/lib/jvm/java-8-openjdk-amd64'
intellij_default_jdk: '17'
intellij_disabled_plugins:
- org.jetbrains.plugins.gradle
- CVS
- com.intellij.uiDesigner
- org.jetbrains.android
- TestNG-J
- hg4idea
- Subversion
- AntSupport
- DevKit
intellij_codestyles:
- name: Example1
src: Example-style1.xml
- name: Example2
src: /example/Example-style2.xml
remote_src: true
- name: GoogleStyle
url: 'https://raw.githubusercontent.com/google/styleguide/gh-pages/intellij-java-google-style.xml'
intellij_default_codestyle: GoogleStyle
intellij_inspection_profiles:
- name: Example1
src: Example1.xml
- name: Example2
src: /example/Example2.xml
remote_src: true
- name: GantSign
url: 'https://raw.githubusercontent.com/gantsign/inspection-profile-intellij/master/GantSign.xml'
intellij_default_inspection_profile: GantSign
intellij_plugins:
- CheckStyle-IDEA
Rollenfakten
Diese Rolle exportiert die folgenden Ansible-Fakten zur Nutzung durch andere Rollen:
ansible_local.intellij.general.home
- z.B.
/opt/idea/idea-community-2024.2
- z.B.
ansible_local.intellij.general.desktop_filename
- z.B.
jetbrains-idea-ce.desktop
- z.B.
ansible_local.intellij.general.desktop_file
- z.B.
/usr/share/applications/jetbrains-idea-ce.desktop
- z.B.
ansible_local.intellij.general.user_config_dir
- z.B.
.config/JetBrains/IntelliJIdea2023.2
- z.B.
ansible_local.intellij.general.user_plugins_dir
- z.B.
.local/share/JetBrains/IntelliJIdea2023.2
- z.B.
Weitere Rollen von GantSign
Sie finden weitere Rollen von GantSign auf Ansible Galaxy.
Entwicklung & Test
Dieses Projekt verwendet die folgenden Werkzeuge:
- Molecule zum Orchestrieren von Testszenarien
- Testinfra zum Testen der Änderungen auf dem Remote
- pytest das Testframework
- Tox verwaltet Python-virtuelle Umgebungen für Linting und Tests
- pip-tools zur Verwaltung von Abhängigkeiten
Ein Visual Studio Code Dev Container steht zur Verfügung, um diese Rolle zu entwickeln und zu testen.
Lizenz
MIT
Autoreninformation
John Freeman
GantSign Ltd. Firma Nr. 06109112 (registriert in England)
ansible-galaxy install gantsign.intellij