APIを使用したStyleBookからの構成作成
StyleBookを構築したら、NetScaler® Application Delivery Management (ADM) にインポートして、NetScaler ADMまたはNetScaler ADM APIのいずれかを使用して利用する必要があります。NetScaler ADMは、StyleBookをインポートする際に検証を行い、検証が成功すると、StyleBookはNetScaler ADMのStyleBookカタログに表示され、構成の作成に利用できるようになります。
これで、StyleBook APIを使用して、このStyleBookに基づいた構成を作成できます。curlコマンドラインツールやPostman Chromeブラウザ拡張機能などの任意のツールを使用して、NetScaler ADMにHTTPリクエストを送信できます。
例 1
ロードバランシング仮想サーバーを作成するStyleBookで作成した「lb-vserver」StyleBookを検討します。REST APIを使用して、このStyleBookからconfigpackを次のように作成します。
POST
https://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/lb-vserver/configpacks
<!--NeedCopy-->
Content-Type: application/json
Accept: application/json
{
"configpack":
{
"parameters": {
"name": "lb1",
"ip": "10.102.117.31"
},
"target_devices":
[
{
"id": "deecee30-f478-4446-9741-a85041903410"
}
]
}
}
<!--NeedCopy-->
このHTTPリクエストでは、ID(例: 「deecee30-f478-4446-9741-a85041903410」)は、IPアドレス10.102.117.31を持つロードバランシング仮想サーバーlb1が作成されるNetScalerインスタンスのインスタンスIDです。NetScalerインスタンスのインスタンスIDは、NetScaler ADMから取得されます。
NetScaler ADMによって管理されているインスタンスのIDを取得するには、NetScaler ADM APIを使用できます。たとえば、IPアドレスが192.168.153.160であるNetScalerインスタンスのインスタンスIDを取得するには、次のAPIを使用できます。
GET https://<MAS-IP>/nitro/v1/config/ns?filter=ip_address:192.168.153.160
<!--NeedCopy-->
Accept: application/json
<!--NeedCopy-->
応答には、ペイロードにIDが含まれています。
200
OK
Content-Type: application/json
{
"errorcode": 0,
"message": "Done",
"operation": "get",
"resourceType": "ns",
"username": "nsroot",
"tenant_name": "Owner",
"resourceName": "",
"ns":
[
{
"is_grace": "false",
"hostname": "",
"std_bw_config": "0",
"gateway_deployment": "false",
…"id": "deecee30-f478-4446-9741-a85041903410",
...
}
]
}
<!--NeedCopy-->
configpackが正常に作成されると、次のHTTP応答を受け取ります。
200 OK
Content-Type: application/json
{
"configpack":
{
"config_id": "1460806080"
}
}
<!--NeedCopy-->
ID 1460806080を使用して一意に識別される最初のconfigpackが作成されました。このIDを使用して、構成のクエリ、更新、または削除を行うことができます。
例 2
同じStyleBookを使用して別のconfigpackを作成し、同じまたは異なるNetScalerインスタンスで実行できます。この例では、別の構成を作成し、仮想サーバーに異なる名前とIPアドレスを指定し、ロードバランシング方式としてLEASTCONNECTIONも指定します。この構成を2つのNetScalerインスタンスに展開します。
HTTPリクエストは次のとおりです。
POST
https://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/lb-vserver/configpacks
<!--NeedCopy-->
Content-Type: application/json
Accept: application/json
{
"configpack":
{
"parameters":
{
"name": "lb2",
"ip": "10.102.117.32",
"lb-alg": "LEASTCONNECTION"
},
"target_devices"
[
{"id": "deecee30-f478-4446-9741-a85041903410"},
{"id": "debecc60-d589-4557-8632-a74032802412"}
]
}
}
<!--NeedCopy-->
このHTTPリクエストでは、IPアドレス10.102.117.32を持つロードバランシング仮想サーバーlb2が、「deecee30-f478-4446-9741-a85041903410」と「debecc60-d589-4557-8632-a74032802412」のIDで表される2つのNetScalerインスタンス上に作成されます。
configpackの作成が成功すると、次のHTTP応答を受け取ります。
200 OK
Content-Type: application/json
{
"configpack":
{
"config_id": "1657696292"
}
}
<!--NeedCopy-->
この新しいconfigpackには、異なるID 165769629があります。このIDを使用して、この構成を更新または削除できます。
例 3
基本的なロードバランシング構成を作成するStyleBookで作成した「basic-lb-config」StyleBookを検討します。REST APIを使用して、このStyleBookからconfigpackを次のように作成します。
POST
http://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/basic-lb-config/configpacks
<!--NeedCopy-->
Content-Type: application/json
Accept: application/json
{
"configpack":
{
"parameters":
{
"name": "myapp",
"ip": "10.70.122.25",
"svc-servers":
["192.168.100.11","192.168.100.12"],
"svc-port": 8080
},
"target_devices":
[
{
"id": "deecee30-f478-4446-9741-a85041903410"
},
{
"id": "debecc60-d589-4557-8632-a74032802412"
}
]
}
}
<!--NeedCopy-->
このHTTPリクエストでは、ロードバランシング構成が2つのNetScalerインスタンスで実行されます。これらのNetScalerインスタンスにログオンして、仮想サーバーと、2つのサービスがバインドされたサービスグループが作成されているかどうかを確認できます。
例 4
複合StyleBookの作成で作成した複合StyleBook composite-example を検討します。REST APIを使用して、このStyleBookからconfigpackを次のように作成します。
POST http://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/composite-example/configpacks
<!--NeedCopy-->
Content-Type: application/json
Accept: application/json
{
"configpack":
{
"parameters": {
"name": "myapp",
"ip": "2.2.2.2",
"svc-servers": ["10.102.29.52","10.102.29.53"]
},
"target_devices":
[
{
"id": "deecee30-f478-4446-9741-a85041903410"
},
{
"id": "debecc60-d589-4557-8632-a74032802412"
}
]
}
}
<!--NeedCopy-->
このHTTPリクエストでは、構成はそれらのIDで表される2つのNetScalerインスタンス上に作成されます。NetScalerインスタンスにログオンすると、「composite-example」StyleBookにインポートされた「basic-lb-config」StyleBookによって作成された構成オブジェクトを表示できます。また、「composite-example」StyleBookの一部であった「myapp-mon」という新しいHTTPモニターも表示されます。
configpackの作成が成功すると、次のHTTP応答を受け取ります。
200 OK
Content-Type: application/json{
"configpack": {
"config_id": "4917276817"
}
}
<!--NeedCopy-->
構成の更新
この構成を更新するには、たとえば、IPアドレス10.102.29.54を持つ新しいバックエンドサーバーをロードバランシング仮想サーバーmyappに追加するには、configpackを更新するためのAPIを次のように使用します。
PUT http://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/composite-example/configpacks/4917276817
<!--NeedCopy-->
Content-Type: application/json
Accept: application/json
{
"configpack": {
"parameters": {
"name": "myapp",
"ip": "2.2.2.2",
"svc-servers": ["10.102.29.52","10.102.29.53","10.102.29.54"]
},
"target_devices":
[
{
"id": "deecee30-f478-4446-9741-a85041903410"
},
{
"id": "debecc60-d589-4557-8632-a74032802412"
}
]
}
}
<!--NeedCopy-->
configpackの更新が成功すると、次のHTTP応答を受け取ります。
200 OK
Content-Type: application/json
{
"configpack": {
"config-id": "4917276817"
}
}
<!--NeedCopy-->
構成の削除
この構成を(すべてのNetScalerインスタンスから)削除するには、configpackを削除するためのAPIを次のように使用できます。
DELETE http://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/composite-example/configpacks/4917276817
<!--NeedCopy-->
Accept: application/json
<!--NeedCopy-->
configpackの削除が成功すると、次のHTTP応答を受け取ります。
200 OK
Content-Type: application/json
{
"configpack": {
"config_id": "4917276817"
}
}
<!--NeedCopy-->
NetScalerインスタンスにログオンして、このconfigpackの一部であるすべての構成オブジェクトが削除されていることを確認できます。
すべてのNetScalerインスタンスからではなく、特定のNetScalerインスタンスから構成を削除したい場合は、上記で説明したconfigpack更新操作を使用し、JSONペイロードの「target_devices」属性を変更して、特定のNetScalerインスタンスIDを削除します。