55 lines
2.7 KiB
Markdown
55 lines
2.7 KiB
Markdown
# 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](https://json-schema.org/)-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 bereits `a-and-b` gibt, sollte nicht `c-and-a` angelegt werden, sondern `a-and-c`
|
|
|
|
|
|
#### Variablen
|
|
|
|
- sollen nach folgendem Muster benannt sein: `var_<rollen-name>_<bezeichnung>`, wobei `<bezeichnung>` aussagekräftig sein soll (z.B. `server_port` statt `x1`)
|
|
- 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", …}, …]}`
|
|
|
|
|
|
## Verweise
|
|
|
|
- [Ansible: Ratsames: Verzeichnis-Struktur](https://docs.ansible.com/ansible/2.8/user_guide/playbooks_best_practices.html#directory-layout)
|
|
- [Ansible: Modul-Liste](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#plugins-in-ansible-builtin)
|
|
|
|
|
|
## ToDo
|
|
|
|
- [Blocks](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_blocks.html) verwenden
|
|
- [Handlers](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_handlers.html) verwenden
|