BIG-IPのAPIを叩いてみる(再入門編)

前回はBIG-IPのAPIを叩いてみる(入門編)ということでSelfIPの一覧取得と設定を試してみました。

実践編に行こうと思いましたが、もう少し実運用であり得そうな操作を確認してからにします。

 

DSRも時間が取れて動作検証ができましたので、また改めて更新したいと思います。

他にもまだ書きたいネタはあるのですが。。

 

ということで、今回はもう少しBIG-IPのAPIを叩いてみます。

既にお気づきだと思いますが、前回はBIG-IPのデフォルトPartitionの「Common」に対してGETとPOSTの操作を行ってます。今回はPartitionを指定してltmの情報をGETしたいと思います。

 

 

■VSのアドレス一覧取得 

 Partitionの指定は以下の通りです。

 このパラメータがわかってしまえば簡単な話です。

  ・Parameter=$partition

  ・Value = /パーティション名/

 

https://IPアドレス/mgmt/tm/ltm/virtual-address?$partition=/パーティション名/

{
"kind": "tm:ltm:virtual-address:virtual-addressstate",
"selfLink": "https://localhost/mgmt/tm/ltm/virtual-address?$partition=/パーティション名/",
"partition": "/パーティション名/",
"currentItemCount": 3,
"pageIndex": 1,
"startIndex": 1,
"totalItems": 3,
"totalPages": 1,
"items": [
{
"kind": "tm:ltm:virtual-address:virtual-addressstate",
"name": “VS名”,
"generation": 0,
"lastUpdatedMicros": 0,
"selfLink": "https://localhost/mgmt/tm/ltm/virtual-address/X.X.X.X?$partition=/パーティション名/",
"address": “X.X.X.X”,
"arp": "enabled",
"autoDelete": "true",
"connectionLimit": 0,
"enabled": "yes",
"floating": "enabled",
"icmpEcho": "enabled",
"inheritedTrafficGroup": "false",
"mask": "255.255.255.255",
"routeAdvertisement": "disabled",
"serverScope": "any",
"trafficGroup": "/Common/traffic-group-1",
"unit": 1
},

■Partition内のPool一覧取得

https://IPアドレス/mgmt/tm/ltm/pool?$partition=/パーティション名/

{
"kind": "tm:ltm:pool:poolstate",
"selfLink": "https://localhost/mgmt/tm/ltm/pool?$partition=/パーティション名/",
"partition": "/パーティション名/",
"currentItemCount": 4,
"pageIndex": 1,
"startIndex": 1,
"totalItems": 4,
"totalPages": 1,
"items": [
{
"kind": "tm:ltm:pool:poolstate",
"name": "Pool名(1)",
"generation": 0,
"lastUpdatedMicros": 0,
"selfLink": "https://localhost/mgmt/tm/ltm/pool/Pool名(2)?$partition=/パーティション名/",
"allowNat": "yes",
"allowSnat": "yes",
"description": "",
"ignorePersistedWeight": "disabled",
"ipTosToClient": "pass-through",
"ipTosToServer": "pass-through",
"linkQosToClient": "pass-through",
"linkQosToServer": "pass-through",
"loadBalancingMode": "round-robin",
"minActiveMembers": 0,
"minUpMembers": 0,
"minUpMembersAction": "failover",
"minUpMembersChecking": "disabled",
"monitor": "/Common/gateway_icmp ",
"queueDepthLimit": 0,
"queueOnConnectionLimit": "disabled",
"queueTimeLimit": 0,
"reselectTries": 0,
"slowRampTime": 10,
"membersReference": {
"link": "https://localhost/mgmt/tm/ltm/pool/Pool名(1)/members?$partition=/パーティション名/"
}
},

■Pool内のmember一覧取得

https://IPアドレス/mgmt/tm/ltm/pool/Pool名/members?$partition=/パーティション名/

{
"kind": "tm:ltm:pool:members:membersstate",
"selfLink": "https://localhost/mgmt/tm/ltm/pool/Pool名/members?$partition=/パーティション名/",
"partition": "/パーティション名/",
"currentItemCount": 1,
"pageIndex": 1,
"startIndex": 1,
"totalItems": 1,
"totalPages": 1,
"items": [
{
"kind": "tm:ltm:pool:members:membersstate",
"name": "Node名:http",
"generation": 0,
"lastUpdatedMicros": 0,
"selfLink": "https://localhost/mgmt/tm/ltm/pool/Pool名/members/Node名:http?$partition=/パーティション名/",
"address": “X.X.X.X”,
"connectionLimit": 0,
"dynamicRatio": 1,
"inheritProfile": "enabled",
"monitor": "default",
"priorityGroup": 0,
"rateLimit": "disabled",
"ratio": 1,
"session": "monitor-enabled",
"state": "up"
}
]
}

 

VS、Pool、Memberの情報取得を紹介しました。もちろんこのデータはこのURIを叩いた瞬間の情報が返ってきている訳です。静的な情報(IPアドレスやPool名)もあれば、Nodeのステータスなど動的な情報もあります。

 

Postmanを使ってAPIを叩いてみる - ぽぽぽぽーんのネットワークとOSSのエントリーを見るとわかりますが、APIが公開されているとデータの格納は非常に楽なので、動的な情報を元に色々やってみるのも面白いかもですね。

 

PoolからNodeを抜いて別の用途に転用したり追加したり、特にリリース直後は環境が変わる事がよくあると思うので、LBでバランシングしているNodeを取得しJOBの対象とするなどもできそうですね。

 

自身の環境ではRole周りで課題となっている点があり、実際に使っているかというとまだだったりします。

他の方が実運用でどのように使っているか非常に気になります。

 

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

 

 

 

シェアして頂けると嬉しいです。 もし参考になったよという方がいれば是非お願いします。モチベーション維持の観点で非常に励みになります。

このエントリーをはてなブックマークに追加