我是Juju的新手并试图写出一个魅力。我需要服务中部署的所有单元的IP地址。我正在使用
例如,我有3个单位的wordpress - juju deploy -n 3 cs:wordpress
我从当地的repo部署了我的魅力 - juju部署本地:trusty / X
我添加了两者之间的关系 - juju add-relation X wordpress
现在,我需要在我的魅力(X)中的一个钩子中列出所有3个wordpress服务的ip地址
我在wordpress中设置了关键字,并尝试使用relation-ids - > relation-list - >我的魅力中的关系 - 获取钩子工具。 但它只给了我一个ip而不是全部三个。
relation-ids - 给一个id。 relation-list id - 只提供一个单位。 relation-get - 给予相应的ip。
我该怎么做才能获得预期的结果?
答案 0 :(得分:1)
尝试这样的事情:
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")
在您的情况下,关系名称可能会有所不同。确认一下。
答案 1 :(得分:0)
您可以使用
获取单位的地址 get_host_ip(unit_get('private-address')
可以从charmhelpers
导入get_host_ipfrom charmhelpers.contrib.openstack.utils import get_host_ip
要获取所有魅力单元的IP地址,您必须添加对等关系。您可以从here
了解关系