Como obter os endereços IP de todas as unidades em um serviço em um charme em outro serviço?

4

Eu sou novo no Juju e estou tentando escrever um charme. Eu preciso do endereço IP de todas as unidades implantadas em um serviço. Atualmente estou usando o juju 1.25 e implementando serviços em openstack

O cenário é:

Eu tenho 3 unidades de wordpress (requer arquivos de hook de relação) com

juju deploy -n 3 cs:wordpress

Eu implantei meu charme no repositório local

juju deploy local:trusty/myCharm

Eu adiciono relação entre os dois

juju add-relation myCharm wordpress

Agora, eu preciso da lista de todos os 3 endereços IP do serviço wordpress em um dos hook em myCharm

Eu configurei relation-keys no wordpress e tentei usar relation-ids - > relação-lista - > ferramentas de hook de relação-get em myCharm. Mas isso me dá apenas um ip e não todos os três.

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.

O que devo fazer para obter o resultado esperado?

    
por mayuri 05.08.2016 / 21:40

1 resposta

1

O relation-list -r {id} deve retornar todas as unidades na relação. Talvez você esteja apenas analisando o primeiro (ou último) valor?

Esta é a aparência da minha relation-* de saída quando tenho várias unidades de um aplicativo relacionadas a outra (neste caso, estou vendo os dados da relação monitors entre nagios e 3 unidades de nrpe ; você provavelmente desejará substituir aqueles com myCharm e suas 3 unidades de wordpress ):

$ 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

Eu posso juntar tudo isso em um loop que gera o endereço privado de todas as unidades relacionadas a nagios , assim:

$ 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
    
por kwmonroe 09.08.2016 / 19:09