Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
linux:ansible:playbook_example_09 [23.09.2022 10:47. ] – [inventory - Beispiel] django | linux:ansible:playbook_example_09 [23.09.2022 12:50. ] – [CMDB-basierte professionelle Umgebungen] django | ||
---|---|---|---|
Zeile 285: | Zeile 285: | ||
Ansible bietet daher einen skalierbareren Ansatz, um den Überblick über Host- und Gruppenvariablen zu behalten. Man kann für jeden Host und jede Gruppe die Variablen in einer jeweils zugehörigen Datei auslagern. Ansible wir beim Aufruf und Abarbeiten eines Playbooks diese hostspezifischen Dateien im Verzeichnis **'' | Ansible bietet daher einen skalierbareren Ansatz, um den Überblick über Host- und Gruppenvariablen zu behalten. Man kann für jeden Host und jede Gruppe die Variablen in einer jeweils zugehörigen Datei auslagern. Ansible wir beim Aufruf und Abarbeiten eines Playbooks diese hostspezifischen Dateien im Verzeichnis **'' | ||
- | Diese beiden Verzeichnisse wurden bereits bei der initialen Konfiguration unserer Ansible-Umgebung mit Hilfe des Ansible-Playbooks **'' | + | Diese beiden Verzeichnisse wurden bereits bei der initialen Konfiguration unserer Ansible-Umgebung mit Hilfe des Ansible-Playbooks **'' |
- | Wir legen also die beiden Verzeichnisse an. | + | |
$ tree inventories/ | $ tree inventories/ | ||
< | < | ||
Zeile 341: | Zeile 340: | ||
**__Aber__** wenn man solch eine Datei aus einer **CMDB** automatisiert erzeugen möchte, klappt dies schon nicht mehr so einfach, wie anfänglich angenommen. Wir werden uns daher im nächsten Beispiel eine doch geeignetere Variante ansehen. | **__Aber__** wenn man solch eine Datei aus einer **CMDB** automatisiert erzeugen möchte, klappt dies schon nicht mehr so einfach, wie anfänglich angenommen. Wir werden uns daher im nächsten Beispiel eine doch geeignetere Variante ansehen. | ||
</ | </ | ||
+ | |||
+ | ==== CMDB-basierte professionelle Umgebungen ==== | ||
+ | Wie schon im vorhergehenden Beispiel angemerkt, wird es zum einen bei professionellen Umgebungen, nicht mehr praktikabel pflegbar sein, alle Infoarmastionen in einer YML-Datei mit verschiedenen Host- oder Gruppen basierenden Variablen-Definitionen versuchen vor zuhalten. Der Export und das automatische Generieren von Inventory-Daten in strukturierter **'' | ||
+ | |||
+ | Bei der Grundkonfiguration unserer Absible-Umgebung mit Hilfe des Ansible-Playbooks **'' | ||
+ | < | ||
+ | ├── group_vars | ||
+ | │ └── all | ||
+ | └── host_vars</ | ||
+ | |||
+ | Wir können nun entweder eine Inventory-Datei **'' | ||
+ | $ less ~/ | ||
+ | |||
+ | <file bash hosts># Generiert mit Hilfe von Ansible am 2022-09-20 - diese Datei nicht manuell bearbeiten! | ||
+ | # Inventory Datei für die System-Umgebung bei nausch.org | ||
+ | # | ||
+ | # Hinweise: | ||
+ | # | ||
+ | # leere Zeilen werden ignoriert | ||
+ | # Host- und Gruppendefinitionen werden mit [] abgegrenzt | ||
+ | # Hosts können über ihren Hostnamen, FQN oder ihrer IP-Adresse definiert | ||
+ | # | ||
+ | # | ||
+ | # Host-Definitionen | ||
+ | |||
+ | # Hosts ohne Gruppenzuordnung | ||
+ | localhost | ||
+ | |||
+ | [intranet] | ||
+ | pml010002 | ||
+ | pml010003 | ||
+ | pml010004 | ||
+ | ... | ||
+ | ... | ||
+ | pml010124 | ||
+ | pml010125 | ||
+ | pml010126 | ||
+ | |||
+ | [IDMZ] | ||
+ | vml030010 | ||
+ | vml030020 | ||
+ | vml030030 | ||
+ | vml030040 | ||
+ | ... | ||
+ | ... | ||
+ | vml030230 | ||
+ | vml030240 | ||
+ | vml030250 | ||
+ | |||
+ | [EDMZ] | ||
+ | vml050010 | ||
+ | vml050020 | ||
+ | vml050030 | ||
+ | vml050040 | ||
+ | vml050250 | ||
+ | |||
+ | [TKDMZ] | ||
+ | vml070010 | ||
+ | vml070020 | ||
+ | vml070030 | ||
+ | |||
+ | [external] | ||
+ | customer_no_001 | ||
+ | customer_no_002 | ||
+ | ... | ||
+ | ... | ||
+ | customer_no_042 | ||
+ | |||
+ | [gluon] | ||
+ | ff_pliening_gbw__ug_ | ||
+ | ff_pliening_gbw_egod | ||
+ | ff_pliening_gbw_ogod | ||
+ | ff_pliening_gbw_dgod | ||
+ | ff_pliening_gbw_cpod | ||
+ | ff_roding_fwg_nausch | ||
+ | |||
+ | [raspbian] | ||
+ | ff_pliening_rpb4_ol_v6 | ||
+ | |||
+ | # Host-Gruppen-Definitionen | ||
+ | # (zu welcher Gruppe gehören Untergruppen bzw. Hosts) | ||
+ | |||
+ | [freifunk: | ||
+ | gluon | ||
+ | raspbian | ||
+ | |||
+ | [linux: | ||
+ | intranet | ||
+ | IDMZ | ||
+ | EDMZ | ||
+ | TKDMZ | ||
+ | external | ||
+ | </ | ||
+ | |||
+ | Die betreffenden Host- bzw. Gruppenspezifischen Variablen halten wir hier in entsprechenden Dateien bzw. Unterverzeichnissen vor, wie z.B. die automatisch erzeugte Datei **'' | ||
+ | $ less inventories/ | ||
+ | <file c++ ansible_environment># | ||
+ | ansible_become: | ||
+ | ansible_become_method: | ||
+ | ansible_become_user: | ||
+ | ansible_become_ask_pass: | ||
+ | |||
+ | Oder z.B. die Definitionen für eine bestimmte Gruppe. | ||
+ | $ less inventories/ | ||
+ | <file c++ ssh_environment># | ||
+ | ssh_port: 22 | ||
+ | ssh_user: django | ||
+ | ssh_protocol: | ||
+ | ssh_keyfile: | ||
+ | |||
+ | Das Beispiel hier zeigt die Host-spezifischen Variablen eines Hosts im Intranet. | ||
+ | $ less inventories/ | ||
+ | |||
+ | <file c++ pml111002># | ||
+ | host_alias: printer | ||
+ | host_mac: " | ||
+ | host_ipv4: " | ||
+ | host_ipv6: ":: | ||
+ | host_sshjump: | ||
+ | |||
+ | Unser Inventory hat nun in etwa folgenden strukturellen Aufbau: | ||
+ | < | ||
+ | ├── group_vars | ||
+ | │ ├─── all | ||
+ | │ | ├── ansible_environment | ||
+ | │ | ├── ssh_environment | ||
+ | │ | └── vault | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | │ | ||
+ | | | ||
+ | ├── hosts | ||
+ | └── host_vars | ||
+ | ├── ff_pliening_gbw_cpod | ||
+ | ├── ff_pliening_gbw_dgod | ||
+ | ├── ff_pliening_gbw_egod | ||
+ | ├── ff_pliening_gbw_ogod | ||
+ | ├── ff_pliening_gbw__ug_ | ||
+ | ├── ff_pliening_rpb4_ol_v6 | ||
+ | ├── ff_roding_fwg_nausch | ||
+ | ├── pml111002 | ||
+ | ├── pml111003 | ||
+ | ├── pml111004 | ||
+ | ... | ||
+ | ... | ||
+ | ├── pml010124 | ||
+ | ├── pml010125 | ||
+ | ├── pml010126 | ||
+ | ├── vml030010 | ||
+ | ├── vml030020 | ||
+ | │ ├── dhcpd | ||
+ | │ ├── named | ||
+ | │ └── hostconfig | ||
+ | ├── vml030030 | ||
+ | ├── vml030040 | ||
+ | ... | ||
+ | ... | ||
+ | ├── vml030230 | ||
+ | ├── vml030240 | ||
+ | ├── vml030250 | ||
+ | ├── vml050010 | ||
+ | ├── vml050020 | ||
+ | │ ├── vhosts | ||
+ | │ └── hostconfig | ||
+ | ├── vml000030 | ||
+ | │ ├── exporter | ||
+ | │ ├── github | ||
+ | │ └── hostconfig | ||
+ | ├── vml050030 | ||
+ | ├── vml050040 | ||
+ | │ ├── prometheus | ||
+ | │ ├── grafana | ||
+ | │ ├── apache | ||
+ | │ └── hostconfig | ||
+ | ├── vml050250 | ||
+ | ├── vml070010 | ||
+ | ├── vml070020 | ||
+ | ├── vml070030 | ||
+ | ├── customer_no_001 | ||
+ | ├── customer_no_002 | ||
+ | ... | ||
+ | ... | ||
+ | └── customer_no_002 | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Zusammenfassung === | ||
+ | <WRAP center round tip 80%> | ||
+ | Wir haben nun eine standardisiertes Inventory. Die hilft uns zum einen bei der ggf. manuellen Pflege, da Informationen strukturiert immer an definierten Stellen stehen. Dies verlangt natürlich den Admins einiges an Disziplin ab, aber so können sich alle darauf verlassen, dass benötigte Informationen und Konfigurationsoptionen an den gleichen Stellen stehen (sollten). | ||
+ | |||
+ | Pflegt man die Inventory-Daten hingegen über eine (WEB)UI einer CMBD-Anwendung und generiert dann automatisiert die entsprechenden Inventory-Daten, | ||
+ | </ | ||
+ | |||
+ | |||
===== lorem ipsum dolor sit amet ===== | ===== lorem ipsum dolor sit amet ===== | ||
:KRIT: FIXME :KRIT: | :KRIT: FIXME :KRIT: |