0

我是 Juju 的新手,正在尝试写一个魅力。我需要部署在服务中的所有单元的 IP 地址。我在用

例如我有 3 个 wordpress 单元,带有-- juju deploy -n 3 cs:wordpress

我从本地仓库部署了我的魅力——juju deploy local:trusty/X

我在两者之间添加关系--juju add-relation X wordpress

现在,我需要在我的魅力 (X) 中的一个钩子中列出 wordpress 服务的所有 3 个 ip 地址

我在 wordpress 中设置了关系键,并尝试在我的魅力中使用关系 ID -> 关系列表 -> 关系获取钩子工具。但它只给了我一个 ip 而不是全部三个。

关系 ids——给出一个 id。关系列表 id -- 只给出一个单位。关系获取——给出对应的ip。

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

4

2 回答 2

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")

在您的情况下,关系名称可能会有所不同。请确认。

于 2016-10-10T15:23:46.767 回答
0

您可以使用

get_host_ip(unit_get('private-address')

其中 get_host_ip 可以从 charmhelpers 导入

from charmhelpers.contrib.openstack.utils import get_host_ip

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

于 2016-10-08T09:21:51.303 回答