Как получить IP-адреса всех подразделений в сервисе в Чаржу?
Я новичок в Juju и пытаюсь написать очарование. Мне нужен IP-адрес всех устройств, развернутых в сервисе. я использую
Например, у меня есть 3 единицы WordPress с-- Juju развертывания -n 3 CS: WordPress
Я развернул свое очарование из локального репозитория - juju deploy local:trusty/X
Я добавляю связь между двумя...
Теперь мне нужен список всех 3 ip-адресов сервиса WordPress в одном из хуков в моем обаянии (X)
Я установил реляционные ключи в WordPress и попытался использовать в своем обаянии инструменты-идентификаторы отношения -> список-отношения -> связь-получить. Но это дает мне только один IP, а не все три.
отношение-идентификаторы - дает один идентификатор. ID списка отношений - дает только одну единицу. отношение-получает - дает соответствующий IP.
что я должен сделать, чтобы получить ожидаемый результат?
2 ответа
Попробуйте что-то вроде этого:
from charmhelpers.contrib.openstack.utils import get_host_ip
from charmhelpers.core.hookenv import (
relation_ids,
related_units,
relation_get,
)
def _get_ips(rel_name):
return [get_host_ip(rdata['private-address'])
for rid in relation_ids(rel_name)
for rdata in
(relation_get(rid=rid, unit=unit) for unit in related_units(rid))
if rdata]
ips = _get_ips("wordpress")
Имя отношения может быть другим в вашем случае. Подтвердите это.
Вы можете получить адрес подразделения, используя
get_host_ip(unit_get('private-address')
где get_host_ip может быть импортирован из charmhelpers
from charmhelpers.contrib.openstack.utils import get_host_ip
Чтобы получить IP-адреса всех единиц прелести, вы должны добавить одноранговые отношения. Вы можете прочитать об отношениях здесь