IBM Cloud Load BalancerにIBM Cloud CLIでメンバーを追加する
目的
IBM Cloud Load Balancer(以下、ICLB)はIBM CloudのLBaaSです。ICLBは基本的な設定はポータルのWeb UIで可能ですが、Web UIで設定できないものもあります。例えば、ICLBのメンバーはWeb UIでは仮想サーバのプライマリIPしか選択できません。ポータブルIPを指定したい場合はAPIを利用する必要があります。
APIを利用するには、APIドキュメントを読んで頑張ってcurlする、ライブラリを使ってPythonなどで書く、slcliを利用する方法などがありますが、IBM Cloud、特に旧SoftLayer時代のドキュメントは非常にわかりづらいです。Pythonを使ったサンプルは多く公開されていますが、Pythonを動かす環境が必要になります。
そこで、今回はIBM Cloudユーザーなら必ずインストールしているIBM Cloud CLIを使ってメンバーの追加をしてみます。
手順
ICLBのオーダー
APIでも可能ですが今回は割愛し、すでにポータルからオーダーされているものとします。
メンバー(サーバーインスタンス)は空にしておきます。
インスタンスのUUID確認
インスタンスのUUIDを確認します。IBM Cloud CLIを利用します。
$ ibmcloud sl call-api Network_LBaaS_LoadBalancer getAllObjects
[
{
"accountId": ******,
"address": "lb-tok04-******-tok04.clb.appdomain.cloud",
"createDate": "2020-06-08T10:48:23+09:00",
"id": ******,
"isDataLogEnabled": 1,
"isPublic": 0,
"locationId": 2344395,
"modifyDate": "2020-06-21T10:56:37+09:00",
"name": "lb-tok04",
"operatingStatus": "ONLINE",
"provisioningStatus": "ACTIVE",
"type": 0,
"useSystemPublicIpPool": 1,
"uuid": "*******-****-****-****-************",
"datacenter": {
"id": 2344395,
"longName": "Tokyo 4",
"name": "tok04",
"statusId": 2
}
}
]
このときのuuid
を控えておきます。
メンバー定義JSONの作成
以下のフォーマットでJSONファイルを用意します。配列の1番目に先ほど控えたUUIDを指定します。2番目にメンバーをさらに配列で指定します。宛先がPublic IPの場合はpublicIpAddress
にします。今回はprivateIpAddress
とします。
[
"${uuid}",
[
{
"privateIpAddress": "${メンバー1のIP}"
},
{
"privateIpAddress": "${メンバー2のIP}"
}
]
]
メンバーの追加
次のようにCLIを実行します。
$ ibmcloud sl call-api Network_LBaaS_Member addLoadBalancerMembers --parameters "$(cat members.json)"
{
"accountId": ******,
"address": "lb-tok04-******-tok04.clb.appdomain.cloud",
"createDate": "2020-06-08T10:48:23+09:00",
"id": ******,
"isDataLogEnabled": 1,
"isPublic": 0,
"locationId": 2344395,
"modifyDate": "2020-06-21T11:08:35+09:00",
"name": "lb-tok04",
"operatingStatus": "ONLINE",
"provisioningStatus": "UPDATE_PENDING",
"type": 0,
"useSystemPublicIpPool": 1,
"uuid": "*******-****-****-****-************"
}
エラーとならなければOKです。
確認
ポータルから確認します。
ちなみに宛先にポータブルIPを指定した場合はServer Nameとタイプは不明
となり気持ち悪いですが、気にしないでよいです。
CLIから確認します。先ほどはUUIDを使いましたがこの場合はIDを使います。
$ ibmcloud sl call-api Network_LBaaS_LoadBalancer getAllObjects --mask id
[
{
"id": ******
}
]
$ ibmcloud sl call-api Network_LBaaS_LoadBalancer getMembers --init ${id}
[
{
"address": "*.*.*.*",
"createDate": "2020-06-21T11:08:35+09:00",
"id": *******,
"modifyDate": "2020-06-21T11:08:42+09:00",
"provisioningStatus": "ACTIVE",
"uuid": "********-****-****-****-************",
"weight": null
},
{
"address": "*.*.*.*",
"createDate": "2020-06-21T11:08:35+09:00",
"id": *******,
"modifyDate": "2020-06-21T11:08:42+09:00",
"provisioningStatus": "ACTIVE",
"uuid": "********-****-****-****-************",
"weight": null
}
]
"weight": null
は"weight": 50
と同じ意味になります。明示したい場合は先ほどのJSONで指定することも可能です。
以上です。
参考
Author And Source
この問題について(IBM Cloud Load BalancerにIBM Cloud CLIでメンバーを追加する), 我々は、より多くの情報をここで見つけました https://qiita.com/teruq/items/4be6c188de6810f83727著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .