如何获得Juju魅力服务中所有单位的IP地址?

时间:2016-08-04 22:18:03

标签: juju

我是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。

我该怎么做才能获得预期的结果?

2 个答案:

答案 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_ip
from charmhelpers.contrib.openstack.utils import get_host_ip

要获取所有魅力单元的IP地址,您必须添加对等关系。您可以从here

了解关系