2016-07-25 20 views
0

Wie erstellt man eine variable Gruppe basierend auf dem IP-Adressbereich in Ansible-Inventory-Gruppen? Ich habe zwei Gruppen von Servern an verschiedenen Orten. Ich möchte die Gruppen jedes Mal erstellen, so dass das Playbook auf einer aktualisierten Liste von Servern ausgeführt wird. Ich gruppiere bereits nach Verteilung, Prod, Dev, Test, Qa, Dr in meinem Host-Inventar.Dynamische Gruppen basierend auf IP-Bereich in Ansible-Gruppen

Vielen Dank im Voraus

Antwort

0

können Sie alle Hosts am Anfang und gruppieren sie scannen, wie Sie wollen, zum Beispiel von Netzwerk:

- hosts: all 
    tasks: 
    - group_by: key=network_{{ ansible_default_ipv4.network }} 

Dies wird so viele Gruppen mit Namen network_<network> so viele verschiedene Netzwerke Sie haben erstellen. Beachten Sie jedoch, dass Fakten von allen Hosts gesammelt werden müssen. Je nach Anzahl der Hosts und der Geschwindigkeit der Verbindungen kann dies viel Zeit in Anspruch nehmen. Fakten-Caching wird die Dinge beschleunigen, aber trotzdem ...

Wenn Sie Ihre Inventardatei von Hand verwalten, sollten Sie auch manuell regionale Gruppen angeben.

+0

Nur eine Follow-up-Frage, ich verstehe, wie Gruppe mit os-Distribution verwendet werden kann. In diesem können wir wissen, wie die Gruppen heißen würden, sobald sie zu Gruppen zusammengeschlossen sind. Wenn ich die obige Gruppenklassifikation verwende. Woher weiß ich, welche Gruppen erstellt wurden? Außerdem möchte ich die zwei IP-Bereiche, die wir haben, zu einem Gruppennamen wie "SB" und "AD" registrieren. –

+0

Sie können 'group_by: key = SB' mit' when: ansible_default_ipv4.network == '192.168.0.0'' oder anderen Kriterien verwenden –

+0

Gibt es eine Möglichkeit, die Hostnamen aller Server, die in diese Kategorien fallen, zu sammeln . Damit ich sie in meinem Inventar definieren kann, anstatt die Gruppen jedes Mal neu zu erstellen. –

Verwandte Themen