2017-08-20 1 views
1

Ich verwende einige Rollen mit Playbooks, die ein Dutzend Dienste über einen Cluster hinweg einrichten und Inventargruppen verwenden, um Hosts für Rollen anzugeben.Ansible: Wie leere Inventargruppe in Playbook erstellen?

Je nach Umgebung muss ich ein Inventar aus ENV in Playbook extrahieren. Im allgemeinen Fall sind die meisten Dienste nicht notwendig, daher müssen keine Hosts zu einer entsprechenden Gruppe hinzugefügt werden, aber eine Gruppe muss existieren.

Im Falle einer statischen Inventarisierung ist es ziemlich einfach. Aber wie definiert man eine leere Gruppe in einem Playbook?

Antwort

1

Ich konnte nicht finden, wie eine leere Inventargruppe in einem Playbook erstellt wird. Ich habe jedoch gefunden, wie man eine leere Inventargruppe von Vagrant übergibt. Es kann fast leer sein, zum Beispiel enthält es keinen Hostnamen, sondern eine Hostnamenvorlage, die zu keinem Host passt.

Zum Beispiel:

services.each do |service| 
    hosts = (ENV["SERVERS_#{service.upcase}"] || "").split(",").map{|i| cluster_nodes[i.to_i]} 
    groups[service] = hosts 
    groups[service] = ["stub-a:f"] if groups[service] == [] 
ansible.groups = groups