Configuration Management Database ================================= Diese Rolle erstellt eine [CMDB](https://de.wikipedia.org/wiki/Configuration_Management_Database) innerhalb eines vorhandenen Dokuwikis. Dabei werden die meisten Informationen per `ansible_facts`-Module direkt vom jeweiligen Host ermittelt. Darüber hinaus können weitere Variablen per `host_vars` definiert werden. ## Storage Boxes Ebenso können CMDB-Seiten für [Hetzner Storage Boxes](https://docs.hetzner.com/de/robot/storage-box) erstellt werden. Auf diesen ist kein Python-Interpreter vorhanden. Möglich Informationen über eine Box müssen deshalb per `raw`-Module ermittelt werden. Bei Verwendung der `mitogen`-Strategie kann es zu Problem mit dem Modul kommen. Als mögliche Lösung kann die Strategie auf Playbook-Ebene angepasst werden. Voraussetzung ist weiterhin eine Inventory-Gruppe namens `storage_boxes`, die alle Storage Boxes zusammenfasst. ## Variablen | Variable Name | Function | Default value | File | | ------------- | -------- | ------------- | ---- | | `cmdb` | Dictionary for dokuwiki server variables _(required)_ | -- | `group_vars/all/cmdb.yml` | | `cmdb.wiki_server` | dokuwiki server _(required)_ | -- | `group_vars/all/cmdb.yml` | | `cmdb.wiki_pages_path` | path for wiki pages on dokuwiki server _(required)_ | -- | `group_vars/all/cmdb.yml` | | `cmdb.wiki_media_path` | path for media on dokuwiki server _(required)_ | -- | `group_vars/all/cmdb.yml` | | `cmdb.wiki_meta_path` | path for metadata on dokuwiki server _(required)_ | -- | `group_vars/all/cmdb.yml` | | `cmdb.wiki_user` | File system user of wiki files and directories _(required)_ | -- | `group_vars/all/cmdb.yml`| | `cmdb.wiki_group` | File system group of wiki files and directories _(required)_ | -- | `group_vars/all/cmdb.yml`| ## Beispiel-Playboook ```YAML --- - name: Create CMDB entries for regular servers hosts: - all,!storage_boxes roles: - role: senselab.cmdb - name: Create CMDB entries for storage boxes gather_facts: false strategy: linear hosts: - storage_boxes tasks: - name: Run storage box tasks ansible.builtin.include_role: name: senselab.cmdb tasks_from: storage_box.yml - name: Create items ansible.builtin.include_role: name: senselab.cmdb tasks_from: server.yml args: apply: delegate_to: "{{ cmdb.wiki_server }}" ``` ## Installation der CMDB Führe die Rolle mit dem `install`-Tag aus: ```Shell ansible-playbook playbooks/cmdb.yml --tags never,install ``` ## Erstellung / Aktualisierung der Einträge Führe die Rolle ohne `install`-Tag aus: ```Shell ansible-playbook playbooks/cmdb.yml ```