Filtern mehrerer Tags in Ansible dynamic inventory

8

Ich glaube, ich habe irgendwo eine Antwort auf diese gesehen, aber ich kann sie jetzt anscheinend nicht finden. Ich erstelle eine dynamische development Inventardatei für meine EC2-Instanzen. Ich möchte alle mit Stack=Development getaggten Instanzen gruppieren. Außerdem möchte ich die Entwicklungs-API-Server spezifisch identifizieren. Diese hätten nicht nur das Stack=Development -Tag, sondern auch das API=Yes -Tag.

Meine grundlegende Einrichtung verwendet Inventarordner:

%Vor%

In meiner base -Datei möchte ich Folgendes haben:

%Vor%

Dann könnte ich das ausführen, um alle meine Entwicklungs-API-Server zu pingen:

%Vor%

Kann so etwas gemacht werden? Ich weiß, dass die Syntax nicht richtig ist, aber hoffentlich ist die Absicht einigermaßen klar? Ich kann mir nicht vorstellen, dass ich der Einzige bin, der jemals mehrere Tags filtern muss, aber ich konnte nichts finden, was mich dahin bringt, wo ich hin will.

    
Rob Wilkerson 20.04.2016, 15:37
quelle

3 Antworten

5

Es ist nicht die Antwort, die ich in meinem Kopf hatte, aber manchmal stört mich nur, was in meinem Kopf ist. Da jedes Inventarverzeichnis sein eigenes ec2.ini hat, filtere ich nur den Stapel dort und gruppiere dann innerhalb dieses Filters.

%Vor%     
Rob Wilkerson 20.04.2016, 18:21
quelle
2

Die Ansible-Dokumentation enthält einen Abschnitt zu Mustern . Anstatt einen neuen Abschnitt zu erstellen, können Sie bei der Angabe der Hosts einen Tag-Schnittpunkt erstellen:

%Vor%

Dies funktioniert auch in Playbooks.

    
Xiong Chiamiov 20.04.2016 21:11
quelle
1

Die Antwort von xiong-chiamiov funktioniert tatsächlich. Ich habe es gerade in meiner möglichen Bereitstellung verwendet.

Ich habe also ein Playbook, das das dynamische Inventarscript verwendet. mit diesem Stück Code:

%Vor%

Und der Prozess filtert die Hosts nach diesen beiden Tags.

BEARBEITEN

Wenn Sie dies erweitern, können Sie auch Variablen verwenden, um die Hostgruppenspezifikation dynamisch zu machen. so:

%Vor%

Ich verwende die Variablen {{env}} und {{tag_project}} vars aus variablen Dateien und Argumenten, die zur Laufzeit ansible übergeben werden. Es ändert erfolgreich die Hosts, gegen die das Playbook läuft.

    
James Morgan 17.10.2017 21:06
quelle

Tags und Links