| meta | ||
| plugins | ||
| roles | ||
| tools | ||
| .editorconfig | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| galaxy.yml | ||
| gpl-3.0.txt | ||
| license.txt | ||
| README.md | ||
| todo.md | ||
Ansible Collection - linke.standard
Sammlung von allgemeinen, wiederverwendbaren Ansible-Rollen
Richtlinien
Allgemeines
- alle Definitionen sollen in JSON erfolgen (statt YAML und TOML)
- Rollen sollen grundsätzlich so gestaltet sein, dass sie wiederverwendbar sind, also nicht auf eine bestimmte Lage zugeschnitten
Rollen
- sollen jeweils eine Info-Datei enthalten (
roles/<rollen-name>/info.md), in welcher kurz der Zweck der Rolle beschrieben, mögliche Besonderheiten für die Verwendung erklärt und nützliche Angaben wie Netz-Verweise aufgeführt werden - sollen jeweils eine Variablen-Deklarations-Datei enthalten (
roles/<rollen-name>/vardef.json), in welcher für alle verfügbaren Variablen folgende Angaben festgehalten werden sollen:- Typ in JSON-Schema-Syntax
- bei Aufzählungs-Typen: die zulässigen Werte
- optional: Erläuterung
Namen
- gewöhnliche Rollen sollen nur mit Kleinbuchstaben und Unterstrichen benannt sein
- Abhängigkeiten sollen durch den Infix
-for-gekennzeichnet werden, wobei links die Quelle und rechts die Senke steht - Erweiterungen sollen durch den Infix
-with-gekennzeichnet werden, wobei links der Kern und rechts die Erweiterung steht - Konvergenzen (keines hängt vom jeweils anderen stark ab) sollen durch den Infix
-and-gekennzeichnet werden, wobei die Reihenfolge der beteiligten Unterrollen an sich egal ist, jedoch einheitlich sein sollte, d.h. wenn es bereitsa-and-bgibt, sollte nichtc-and-aangelegt werden, sonderna-and-c
Variablen
- sollen nach folgendem Muster benannt sein:
var_<rollen-name>_<bezeichnung>, wobei<bezeichnung>aussagekräftig sein soll (z.B.server_portstattx1) - sollen mit sinnvollen Standard-Werten belegt werden
- sollen aufgelistet/angekündigt/deklariert werden (
vardef.json) - sollen möglichst primitiv sein, d.h. nur Wahrheits-Werte, Zahlen und (einfache) Zeichenketten
Playbooks
- sollen keine eigenen Tasks enthalten: (
{"tasks": []}) - sollen keine freien Variablen enthalten (
{"vars": {}}) - sollen Rollen in folgendener Struktur angeben:
{"roles": [{"role": "foo", "var_foo_1": "a", "var_foo_2": "b", …}, {"role": "bar", "var_bar_1": "c", "var_bar_2": "d", …}, …]}
