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.
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.
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.
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.
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.
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.
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.
Ansible Task Blöcke lassen sich mit OrchidE einfach nach oben/unten verschieben.
Das Verschieben erfolgt über die IntelliJ Action “Move Statement up/down”.
Ü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:
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 Action “Go to Related Item”.
Es kann direkt zur Definition von Jinja2 Variablen navigiert werden.
- name: Sample debug: msg: "{{ a_variable }}"
Das Navigieren erfolgt über die IntelliJ Action “Go to Declaration or Usages”.
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 Action “Go to Declaration or Usages”.
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 Action “Go to Declaration or Usages”.
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 Action “Go to Declaration or Usages”.
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 Action “Go to Declaration or Usages”.
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 Action “Go to Declaration or Usages”.
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.
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.
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)
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.
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.
Werden Keys doppelt verwendet, wo es syntaktisch nicht erlaubt ist, zeigt OrchidE eine Warnung an und ermöglicht das einfache Löschen eines Eintrags.
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
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.
Werden in Playbooks, Rollen oder Ansible Module ungültige Keys verwendet, zeigt OrchidE eine Warnung an.
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.
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.