我正在尝试使用containers service available from IBM Bluemix更好地自动部署容器。我目前正处于创建脚本以分配IP地址,然后点击REST端点以更新DNS条目的位置。
可以使用IBM Containers plug-in和cf ic ip bind
等命令来管理IP地址。但是,在执行该命令之前,我想知道哪些IP地址可用。这通常使用cf ic ip list
命令来完成,该命令的输出如下所示:
已分配的公共IP地址数:8
Listing the IP addresses in this space...
IP Address Container ID
1.1.1.1
1.1.1.2
2.1.1.1
2.1.1.2 deadbeef-aaaa-4444-bbbb-012345678912
2.1.1.3
2.1.1.4
1.1.1.3
2.1.1.5
这对人类来说是有用的输出,但是需要大量额外的重复操作才能处理脚本。有没有办法简单地让这个命令返回可能来自API的JSON输出?对于常规的CloudFoundry命令,我们可以使用cf curl
并获得可用的输出,但这里似乎没有模拟。
答案 0 :(得分:3)
您可以使用IBM Containers REST API:
curl -X GET --header "Accept: application/json" --header "X-Auth-Token: xxxxxxxx" --header "X-Auth-Project-Id: xxxxxxxx" "https://containers-api.ng.bluemix.net/v3/containers/floating-ips?all=true"
输出示例(出于隐私目的,我在下面修改了输出):
[
{
"Bindings": {
"ContainerId": null
},
"IpAddress": "111.111.1111.1111",
"MetaId": "607c9e7afaf54f89b4d1c926",
"PortId": null,
"Status": "DOWN"
},
{
"Bindings": {
"ContainerId": "abcdefg-123"
},
"IpAddress": "111.111.1111.1112",
"MetaId": "607c9e7afaf54f89b4d1c9262d",
"PortId": "8fa30c31-1128-43da-b709",
"Status": "ACTIVE"
},
{
"Bindings": {
"ContainerId": "abcdefg-123"
},
"IpAddress": "111.111.1111.1113",
"MetaId": "607c9e7afaf54f89b4d1c9262",
"PortId": "6f698778-94f6-43d0-95d1",
"Status": "ACTIVE"
},
{
"Bindings": {
"ContainerId": null
},
"IpAddress": "111.111.1111.1114",
"MetaId": "607c9e7afaf54f89b4d1c926",
"PortId": null,
"Status": "DOWN"
}
]
获取X-Auth-Token
的令牌和X-Auth-Project-Id
的空间ID:
$ cf oauth-token
$ cf space <space-name> --guid