Funktionen

Code Assistant

  • Syntax- und Fehler-Highlighting mit separatem Highlighting für Ansible Modulen, Roles und Blöcken
  • Code Completion
    • von Ansible Variablen in Jinja Templates
    • von Ansible Modules und Module Argumenten (aus über 10000 Ansible Galaxy Modulen, konfigurierbar)
    • von Ansible Keywords (optional mit Werten)
    • von einer Auswahl der gängigsten Ansible Facts
    • von Rollennamen für role und roles Keyword
    • von bereits genutzten Tags für das Keyword tags
    • von delegate_to: localhost
    • von Dateinamen in import*/include_tasks Keywords
    • von Host/Gruppennamen für das Keyword hosts
    • von Dateiname für das Modul-Argument src des Template-Moduls
    • von Variablen in when/changed_when/failed_when Keywords
    • von Variablen definiert durch das Modul set_fact
    • von Variablen (Modul Ergebnissen) definiert durch das Keyword register
  • Verschiedene Modi für Code Completion für Ansible Module
    • Vervollständigen von full qualified collection names
    • Vervollständigen nur des Modul-Namens
    • Vervollständigen von FQCN und Modul-Name anzeigen
    • Nur Vorschläge für Collections die im Keyword collections aufgeführt sind anzeigen
  • Auto-Schliessen von Jinja2 Template Klammern
  • Auto-Quoting von Jinja2 Templates nach Key
  • Warning-Highlighting von deprecated Modulen
  • Konfigurierbares Code-Folding mit Ansible kontext-basierter Zusammenfassung
  • Konfigurierbare Inlay Hints von Jinja2 Variablen
  • Verschieben von kompletten Ansible Task in Ihrer Reihenfolge
  • Copy & Paste mit automatischer Korrektur der Einrückung
  • Erzeugung von Ansible Rollen, Playbooks und Gruppen/Host Variable Ordner-Datei Strukturen
  • Vorschläge fehlender Ordner beim Anlegen von Ordner in Rollen
  • Anzeige von Editor-Tab-Namen als Ansible Element anstatt Dateinamen
  • Aus/Einkommentieren von Zeilen mit Tastatur-Kürzel

Syntax- und Fehler-Highlighting

Ein abgestimmtes Syntax- und Fehler-Highlighting für Ansible Skripte macht das Erfassen und Lesen von Ansible Code einfacher und intuitiver.

Dafür sorgt das extra Highlighting für Ansible Module, Blöcke und Rescue/Always, und Jinja2 Templates mit separaten Highlighting-Einstellungen.

Code Completion

Die Code Completion Unterstützung von OrchidE für Ansible Skripte umfasst von den Standard Ansible Element bis zu einzelnen Attributen eines Moduls ein breites Spektrum für das effiziente Erstellen von Ansible Code.

Eine Vorauswahl an Ansible-Facts ermöglicht das Vervollständigen der gängigsten Facts.

Bei der Nutzung von Register-Variablen können auf Basis der Ansible Dokumentation Vervollständigungen auf Basis der Ergebnisse genutzt werden.

Verschiedene Modi für Ansible Modul Completion

Welche Vorschläge für Code Completion von Modulen von OrchidE gemacht wird, lässt sich umfangreich konfigurieren. Damit wird Anzahl der Vorschläge auf das wesentliche konzentriert.

Es kann festgelegt werden, welche Ansible Collection grundsätzlich berücksichtigt werden sollen.

Weiter können die Vorschläge den Modul-Namen, oder den Full Qualified Collection Name, oder nur den Modul-Namen wenn der Namespace im collections Keyword der Role oder des Playbooks angegeben ist.

Zusammen mit der Inspection “Erkennung von non-unique Modulen” lässt sich mit OrchidE auf die Full Qualified Collection Name von Modulen verzichten, um einfacher lesbar Ansible Skripte zu erzeugen.

Auto-Quoting/Auto-Schliessen von Jinja2 Template Klammern

Bei der Eingabe von geschweiften Klammern für Jinja2 Templates wird nach dem Einfügen des Leerzeichens automatisch die schließende Klammer hinzugefügt.

Wenn das Jinja2-Template in Anführungszeichen stehen muss, z.B. direkt nach eines Keys, werden diese automatisch hinzugefügt.

OrchidE verhindert das automatische Hinzufügen der schließenden Klammer nach der ersten geschweiften Klammer.

Highlight von Deprecated Modulen

Werden Ansible Module verwendet, die deprecated sind, erfolgt eine Warnung im Editor.

Falls das Modul durch ein anderes ersetzt wurde, wird in der Warnung darauf hingewiesen.

Ansible Code-Folding

Werden Ansible Konstrukte eingeklappt, zeigt das Code-Folding von OrchidE eine kontext-basierte Zusammenfassung damit man den Inhalt grob erkennen kann.

Was für das Code Folding benutzt wird, kann beliebig eingestellt werden. Damit können tief verschachtelt Strukturen, z.B. Tasks nur einfach ein/ausgeklappt werden, ohne nochmals Module, Argumente separat ein/auszuklappen.

Inlay Hints für Ansible Variablen

OrchidE zeigt für Jinja2 Variablen Inlays an. Damit lässt sich der Werte oder die Werteliste der Variable direkt im Jinja2 Template anzeigen.

Als Variante kann die Anzeige auch über eine Mouse over Aktion als Tooltip angezeigt werden.

Verschieben von Ansible Tasks

Ansible Task Blöcke lassen sich mit OrchidE einfach nach oben/unten verschieben.

Das Verschieben erfolgt über die IntelliJ ActionMove Statement up/down”.

Copy & Paste mit Einrückung

Innerhalb des IntelliJ Projektes kann OrchidE kopierten Ansible Code wie Tasks, Module, Module-Argument und Variablen passend zur Codestelle einfügen.

Das Code-Snippet wird entsprechend der aktuellen Codestelle passend eingerückt.

Navigation und Suche

  • Suche und Navigation zu Rollen
  • Suche und Navigation zu Playbooks
  • Suche und Navigation zu Definitionen von Ansible Variablen
  • Suche und Navigation zu Inventory Gruppen
  • Navigation zu zugehörigen Ansible Playbooks/Rollen/Variablen in einer Ansible Datei
  • Navigation / Gehe zur Definition von
    • Jinja2 Variablen (inkl. Variablen definiert durch set_fact, register),
    • Rollen aus Playbooks,
    • Importierten / inkludierten Dateien,
    • Inventory Einträgen aus dem Hosts-Keyword
    • Referenzierte Template Dateien (template -> src-Argument)
    • Referenzierte Optionen in argument_spec-Dateien
    • Referenzierte Variablen in when* Keywords

Suche und Navigation zu Ansible Elementen

Über den SearchEverywhere Dialog von IntelliJ kann nach Rollen, Playbooks, Definition von Variablen und Inventory gesucht werden und gefundene Einträge direkt in einem Editor geöffnet werden.

Die Suche erfolgt:

  • für Rollen, Playbooks im Tab Class
  • für Inventory Einträge im Inventory
  • für Variable im Symbols

Die Suche und Navigation erfolgt über die IntelliJ Action Search Anywhere.

In jeder Ansible Datei (Playbook-, Tasks-, Variablen- und Inventory-Dateien) kann zu zugehörigen Dateien navigiert werden.

OrchidE zeigt im aktuellen Kontext der Datei an, welche Playbooks, Rollen, Inventory Gruppen und Group/Host Variablen involviert sind und bietet die Möglichkeit direkt zu den Dateien zu navigieren.

Das Navigieren erfolgt über die IntelliJ ActionGo to Related Item”.

Gehe zur Definition von Jinja2 Variablen

Es kann direkt zur Definition von Jinja2 Variablen navigiert werden.

- name: Sample
  debug:
    msg: "{{ a_variable }}"

Das Navigieren erfolgt über die IntelliJ ActionGo to Declaration or Usages”.

Gehe zur Definition von Rollen

In Playbooks kann direkt zu referenzierten Rollen navigiert werden

  roles:
    - a_role
    - role: a_role
  tasks:
    - include_role:
        name: a_role

Das Navigieren erfolgt über die IntelliJ ActionGo to Declaration or Usages”.

Gehe zur Definition von importierten Dateien

Es kann direkt zu referenzierten Playbooks- oder Tasks-Dateien der Module import_playbook, import_tasks, include_tasks navigiert werden.

Die Navigation unterstützt die Ansible Suchpfade: aktueller Ordner, relative Pfade, tasks Ordner

Das Navigieren erfolgt über die IntelliJ ActionGo to Declaration or Usages”.

Gehe zur Definition von hosts Einträgen

In Playbooks kann von den Host und Gruppenangaben im hosts Keyword direkt in das Inventory navigiert werden.

- hosts: servers, intern.example.com

Das Navigieren erfolgt über die IntelliJ ActionGo to Declaration or Usages”.

Gehe zur Definition von template-Dateien

Es kann direkt zu referenzierten Source Template Dateien des template-Moduls navigiert werden.

Die Navigation unterstützt die Ansible Suchpfade: aktueller Ordner, templates Ordner, relative Pfade, Rollen Ordner, Playbook Ordner

Das Navigieren erfolgt über die IntelliJ ActionGo to Declaration or Usages”.

Gehe zur Definition von Variablen (Argument_Spec)

In Inventory Variablen Dateien kann zu der Definition (Argument_Spec Beschreibung) in der Rolle navigiert werden.

Um die Navigation zu nutzen, muss die Variable mit einer OrchidE Role Annotation versehen sein.

#@role::config-role
#Variable with argument_spec definition in role
os_user:
  name: "ansible"
  group: "users"

Das Navigieren erfolgt über die IntelliJ ActionGo to Declaration or Usages”.

Gehe zur Definition von Variablen (when* Keywords)

In Expressions der Keywords when, changed_when und failed_when kann zu den genutzten Variablen navigiert werden.

Das Navigieren erfolgt über die IntelliJ ActionGo to Declaration or Usages”.

Ansible Vault

  • Ver/entschlüsselt Ansible Vaults on-the-fly beim Öffnen im Editor
  • Verschlüsselt on-the-fly geänderte Ansible Vault Dateien beim Speichern (inkl. Support für IntelliJ’s Auto-Speichern)
  • Erstellung von Ansible Vaults aus Variablen Dateien
  • Entschlüsselung von Ansible Vaults
  • Ändern von Passwörtern von Ansible Vaults
  • Ändern von Vault IDs von Ansible Vaults
  • Verschlüsselung von einzelnen Variablen mit Ansible Vault
  • Entschlüsselung von einzelnen Variablen mit Ansible Vault

Support für Ansible Vaults

Aus einer Ansible Variablen Datei kann direkt im Editor ein Ansible Vault erstellt werden.

Dabei kann die Vault Id frei gesetzt werden.

Für bestehende Ansible Vault Dateien kann beliebig die Vault Id und das Passwort geändert werden.

Hinweis: Ein einmal angelegter Ansible Vault bleibt immer in der Datei verschlüsselt. Die Entschlüsselung erfolgt nur im Speicher des Editors. Bei jedem Speichern des Ansible Vaults wird der Editor Inhalt on-the-fly verschlüsselt.

Support für Verschlüsslung von einzelnen Variablen

Aus einer Variable im Ansible Code kann direkt im Editor ein Ansible Vault erstellt werden.

Eingefügte Ansible Vaults im Ansible Code können einfach über das Kontext-Menü im Editor entschlüsselt werden.

Hinweis: Ver- und entschlüsseln von Variablen sind endgültig. Eine entschlüsselte Variable ist auch in der gespeicherten Datei als Klartext gespeichert.

Quick Documentation

  • Zeigt ein Popup mit Dokumentation zu einem Ansible Keyword via Mouse-over oder Tastenkürzel
  • Zeigt ein Popup mit Dokumentation zu einem Ansible Modul via Mouse-over oder Tastenkürzel
  • Alternative Anzeige der Dokumentation im Tool-Window
  • Anzeige von Kommentaren und des Argument-Spec description Wertes für Jinja2 Variablen

Anzeige von Ansible Dokumentation

Für Ansible Code wie Module, Modulargumente und Keywords kann direkt im Editor via Popup oder Tool Windows die dazugehörige Dokumentation angezeigt werden.

Auch bei der Code-Completion kann diese Dokumentation angezeigt werden.

Hinweis: Für die Anzeige der Dokumentation muss ein OrchidE-Ansible Definitionspaket konfiguriert sein. (Languages & Frameworks | OrchidE | Extension)

Anzeige von Dokumentation aus Argument-Spec Beschreibung

In Inventory-Variablen-Dateien kann die Dokumentation/Beschreibung aus der Argument_spec-Datei für Variablen angezeigt werden, wenn es sich um eine Rollen-Variable handelt.

Hinweis: Damit die zugehörige Beschreibung gefunden wird, muss die Variable mit der OrchidE Role Annotation versehen sein. Ist die Variable nicht direkt annotiert, wird nach einer Annotation in den vorherigen Zeilen gesucht.

Inspections

  • Erkennung von non-unique Ansible Modul Namen
  • Erkennung von doppelten Variablen-Deklaration und Keywords
  • Erkennung von fehlenden Dateien bei Import/Include Modulen
  • Erkennung von nicht definierten Jinja2 Variablen
  • Erkennung von unbekannten Playbook, Task, Roles und Block Keywords
  • Erkennung von unbekannten Modul-Argumenten
  • Erkennung, wenn ein Keyword Wert einen falschen Typ hat
  • Erkennung, wenn ein Modul-Argument Wert einen falschen Typ hat
  • Hinweis auf Role Annotation in Variablen Dateien für Code Completion von argument_spec-Variablen

Erkennung von non-unique Modul-Namen

Wird für Ansible Modulen der Namespace / der Collectionname weggelassen, zeigt OrchidE eine Warnung an, wenn der Modulname nicht unique ist, d.h in mehreren Collections vorkommen kann.

Die Erkennung berücksichtigt dabei das Collections-Keyword. Ist collections definiert, wird nur auf dort gelistete Collections geprüft.

Erkennung von doppelten Variablen und Keywords

Werden Keys doppelt verwendet, wo es syntaktisch nicht erlaubt ist, zeigt OrchidE eine Warnung an und ermöglicht das einfache Löschen eines Eintrags.

Erkennung von fehlenden Import-Dateien

Werden referenzierte Dateien nicht gefunden, zeigt OrchidE eine Warnung an. Die Erkennung gibt es für import_tasks, include_tasks, template src-Argument, import_playbook und vars_files.

OrchidE bietet dazu ein Quick-Fix an, um die Datei zu erstellen. Es werden dabei die Suche-Pfade von Ansible unterstützt: je nach Kontext aktueller Ordner, templates Ordner, relative Pfade, Rollen Ordner, Playbook Ordner.

Mit der Annotation “#noinspection MissingFileReference” kann die Warnung ausgeblendet werden

Erkennung von nicht definierten Variablen

Gibt es keine Definition von referenzierten Jinja2 Template Variablen, zeigt OrchidE eine Warnung an.

Die Suche nach Variablen erfolgt dabei global in allen Variablen-Dateien im IntelliJ Projekt. Bei Listen von Hashes müssen alle Listen-Einträge die Hashes enthalten, sonst wird ebenfalls eine Warnung angezeigt.

Variablen die mit register oder set_fact gesetzt wurden, werden nur im richtigen Kontext berücksichtigt.

Ansible Keywords wie item und Variablen mit default-Filter werden nicht geprüft.

Mit der Annotation “#noinspection UndefinedVariable” kann die Warnung ausgeblendet werden.

Das Ignorieren von Variablen mit password oder apikey im Namen kann in den Einstellungen aktiviert werden.

Erkennung von unbekannten Keys

Werden in Playbooks, Rollen oder Ansible Module ungültige Keys verwendet, zeigt OrchidE eine Warnung an.

Erkennung von falschen Werte-Typen

Sind Werte von Ansible Keywords oder Modul-Argumente vom falschen Typ, zeigt OrchidE eine Warnung an.

Intentions

  • Erstellung von Dateien die mit import/include-Modulen referenziert werden
  • Erstellung von Gruppen/Hosts Variablen auf Basis Jinja2 Template Variablen
  • Erstellung von Variablen in Rollen (vars/defaults) auf Basis Jinja2 Template Variablen

Erstellung von Dateien (import/include)

Wenn eine Import-/Include-Datei nicht existiert, kann einfach über diese Intention die Datei erstellt werden.

Enthält der Wert für den Dateinamen Jinja-Variablen, die aufgelöst werden können, können auch solche Dateien mit der Intention erstellt werden.

Für die Ansible Fact Variablen ansible_distribution, ansible_os_family, ansible_system, ansible_distribution_major_version und ansible_pgk_mgr sind diverse Werte im OrchidE Definition Package hinterlegt, so dass auch Dateien mit diesen Variablen einfach und in mehreren Varianten erstellt werden können.

Erstellung von Jinja2 Variablen

Die Intention erstellt Variablen aus Jinja2 Template Variablen. Es gibt 3 Intention um die Variable zu erstellen:

  • als Host- oder Gruppen-Variable im Inventory,
  • als Rollen-Variable in defaults oder,
  • als Rollen-Variable in vars.

Ansible Galaxy Collections

  • Unterstützt über 10000 Modul aus Ansible Galaxy Collections für Code Completion und Quick Documentation
  • Erweiterbar um weitere Ansible Galaxy Collections
  • Vorgefertigte Pakete für Ansible Releases

Ansible Galaxy Collection Support

OrchidE unterstützt auf Basis der Dokumentation von Ansible Collections Code Completion, Syntax und Error Highlighting und die Anzeige der Dokumentation im Editor.

Dazu kann mit dem OrchidE Builder aus einem Set von Ansible Collections ein OrchidE Definition Paket erstellt werden und in OrchidE eingebunden.

Für Ansible Version gibt es fertig Pakete auf Github zum Download.

Zusätzlich gibt es regelmäßig ein Abzug der aktuellen Ansible Collections aus Ansible Galaxy mit über 10000 Ansible Modulen, welches alle Collections der aktuellen Ansible Version und die am meisten heruntergeladen Collections enthält.

Die Konfiguration des Paketes erfolgt unter Languages & Frameworks | OrchidE | Extension.

Structured Views

  • Ansible fokussierter Projekt Baum für eine bessere Übersicht des Ansible Projekts

Ansible Project Tree View

Der Ansible Project Tree View ist eine alternative, kompakte Ansicht der Ansible Dateien in einem IntelliJ Projekt und so die Struktur von Ansible Inventories und Rollen übersichtlicher darstellt.

Jinja2 Templates

  • Ansible fokussierter Support für Jinja2 Templates von properties-, xml-, json-, yml- und plain-text-Dateien
    • Code completion von Ansible Variablen
    • Breadcrumb von Jinja2 Template Strukturen (if, for)
    • Error Highlight für fehlende Close Jinja2 Strukturen (if, for, set)
    • Warnungen, wenn Ansible Variablen nicht definiert sind

Support Jinja2 Templates

Für unterstützte Dateiformate gibt es in Jinja2 Templates Code Completion für Ansible Jinja2 Template Variablen und der Inspection “Undefined Variable”.

Die Erkennung von Jinja2 Templates basiert auf der Original-Dateierweiterung + .j2.