Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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でも可能ですが今回は割愛し、すでにポータルからオーダーされているものとします。

メンバー(サーバーインスタンス)は空にしておきます。

image.png

インスタンスの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とします。

members.json
[
  "${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です。

確認

ポータルから確認します。

image.png

ちなみに宛先にポータブル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で指定することも可能です。

以上です。

参考

teruq
ガチSIer ※このサイトの投稿は私自身のものであり、必ずしも IBM の立場、戦略、意見を表すものではありません
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away