it-swarm.com.de

Wie bekomme ich die IP-Adressen aller Einheiten in einem Dienst in einem Charm-Hook in einem anderen Dienst?

Ich bin neu in Juju und versuche, einen Zauber zu schreiben. Ich benötige die IP-Adresse aller in einem Dienst eingesetzten Einheiten. Ich verwende derzeit Juju 1.25 und die Bereitstellung von Diensten im Openstack

Das Szenario ist:

Ich habe 3 Einheiten von WordPress (es hat Relation Hook-Dateien erforderlich) mit

juju deploy -n 3 cs:wordpress

Ich habe meinen Charme von lokalen Repo eingesetzt

juju deploy local:trusty/myCharm

Ich füge eine Beziehung zwischen den beiden hinzu

juju add-relation myCharm wordpress

Jetzt brauche ich eine Liste aller 3 IP-Adressen von wordpress service in einem der Hooks in myCharm

Ich habe Relation-Keys in wordpress und versucht, Relation-IDs -> Relation-List -> Relation-Get-Hook-Tools in myCharm zu verwenden. Aber es gibt mir nur eine IP und nicht alle drei.

relation-ids {relationName}  --gives one id. 
relation-list -r {id} --gives just one unit(wordpress/18). 
relation-get -r {id} {relation-key} {unit} --gives corresponding ip.

Was soll ich tun, um das erwartete Ergebnis zu erzielen?

4
mayuri

Das relation-list -r {id} sollte alle Einheiten in der Relation zurückgeben. Vielleicht analysieren Sie nur den ersten (oder letzten) Wert?

Das ist was mein relation-* Die Ausgabe sieht so aus, als ob mehrere Einheiten einer Anwendung mit einer anderen verwandt sind (in diesem Fall schaue ich auf die monitors -Relationsdaten zwischen nagios und 3 Einheiten von nrpe Sie möchten diese wahrscheinlich durch myCharm und Ihre 3 Einheiten wordpress) ersetzen:

$ juju run --unit nagios/0 'relation-ids monitors'
monitors:1

$ juju run --unit nagios/0 'relation-list -r monitors:1'  
nrpe/0
nrpe/1
nrpe/2

$ juju run --unit nagios/0 'relation-get -r monitors:1 private-address nrpe/0'
172.31.13.216

Ich kann das alles in einer Schleife zusammenfassen, die die private Adresse für alle Einheiten ausgibt, die mit nagios zusammenhängen:

$ juju run --unit nagios/0 'for i in `relation-ids monitors`; do for j in `relation-list -r $i`; do relation-get -r $i private-address $j; done; done'
172.31.13.216
172.31.30.157
172.31.49.121
1
kwmonroe