APIを使用してStyleBookから構成を作成する
StyleBookを構築したら、NetScaler Console GUIを使用するか、NetScaler Console APIを使用してインポートする必要があります。インポート時にNetScaler ConsoleはStyleBookを検証します。検証が成功すると、StyleBookはNetScaler ConsoleのStyleBookカタログに表示され、構成の作成に使用できるようになります。
このStyleBookに基づいて構成を作成するために、StyleBook APIを使用できるようになりました。cURLコマンドラインツールやPostman Chromeブラウザ拡張機能など、任意のツールを使用してNetScaler ConsoleにHTTPリクエストを送信できます。
例1
StyleBook to Create a Load Balancing Virtual Serverで作成したlb-vserver StyleBookを検討してください。このStyleBookから構成パックを作成するには、REST APIを次のように使用します。
HTTPメソッド: POST URL:
https://<IP>/stylebook/nitro/v2/config/configpacks
リクエストヘッダー:
コンテンツタイプ: application/json
受諾: application/json
リクエストボディペイロード:
{
"configpack":
{
"parameters": {
"name": "lb1",
"vip-ipaddress": "10.102.117.31"
},
"targets":
[
{
"instance_id": "deecee30-f478-4446-9741-a85041903410"
}
],
"stylebook": {
"name": "lb-vserver",
"namespace": "com.example.stylebooks",
"version": "1.0"
}
}
}
このHTTPリクエストでは、IPアドレス10.102.117.31を持つロードバランシング仮想サーバー
lb1が、インスタンスID「deecee30-f478-4446-9741-a85041903410」を持つNetScalerインスタンス上に作成されます。NetScalerインスタンスのインスタンスIDはNetScaler Consoleから取得されます。
NetScaler Consoleによって管理されているインスタンスのIDを取得するには、NetScaler Console APIを使用できます。たとえば、IPアドレスが192.168.153.160であるNetScalerインスタンスのインスタンスIDを取得するには、次のAPIを使用できます。
HTTPメソッド: GET
URL:
https://<IP>/nitro/v2/config/ns?filter=ip_address:192.168.153.160
リクエストヘッダー:
受け入れ: application/json
レスポンスにはjsonペイロードにIDが含まれています。
予期される応答ヘッダー(成功時):
200 OK
コンテンツタイプ: 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",
}
]
}
設定(config pack)が正常に作成されると、以下のHTTP応答が返されます。
予期される応答ヘッダー(成功時):
202 OK
コンテンツタイプ: application/json
予期される応答本文(成功時):
{
"job":
{
"job_id": "1460806080"
}
}
ID 1460806080 を使用して一意に識別される最初のジョブを作成しました。このIDを使用して、設定のクエリ、更新、または削除を行うことができます。
ジョブのステータスを照会するには、以下のURLを使用できます。
https://<IP>/stylebook/nitro/v2/config/jobs/<jobid>.
例 2
同じStyleBookを使用して、別の設定パックを作成し、同じまたは異なるNetScalerインスタンスで実行できます。この例では、別の設定を作成し、仮想サーバーに異なる名前とIPアドレスを指定します。ロードバランシング方法としてLEASTCONNECTIONを指定します。この設定を2つのNetScalerインスタンスに展開します。
HTTPリクエストは次のとおりです。
HTTPメソッド: POST
URL:
https://<IP>/stylebook/nitro/v2/config/configpacks
リクエストヘッダー:
コンテンツタイプ: application/json
アクセプト: application/json
リクエストボディペイロード:
{
"configpack":
{
"parameters": {
"name": "lb1",
"vip-ipaddress": "10.102.117.31",
"lb-alg": "LEASTCONNECTION"
},
"targets":
[
{
"instance_id": "deecee30-f478-4446-9741-a85041903410"
},
{
"instance_id": "abcdee30-f478-4446-9741-a85041903410"
}
],
"stylebook": {
"name": "lb-vserver",
"namespace": "com.example.stylebooks",
"version": "1.0"
}
}
}
このHTTPリクエストでは、IPアドレス10.102.117.31を持つロードバランシング仮想サーバーlb1が、インスタンスID「deecee30-f478-4446-9741-a85041903410」と「abcdee30-f478-4446-9741-a85041903410」を持つ2つのNetScalerインスタンス上に作成されます。
設定パックが正常に作成されると、次のHTTPレスポンスが受信されます。
予期されるレスポンスヘッダー (成功時):
202 OK
コンテンツタイプ: application/json
予期されるレスポンスボディ (成功時):
{
"job": {
"job_id": "165769629"
}
}
この新しい設定パックには、異なるID 1657696292があります。このIDを使用して、この設定を更新または削除できます。
例 3
基本的な負荷分散構成を作成するためのStyleBookで作成した「basic-lb-config」StyleBookを検討します。このStyleBookからREST APIを使用してconfig packを作成するには、次の手順に従います。
HTTPメソッド: POST
URL:
https://<IP>/stylebook/nitro/v2/config/configpacks
リクエストヘッダー:
コンテンツタイプ: application/json
アクセプト: application/json
リクエストボディペイロード:
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
},
"targets":
[
{
"instance_id": "deecee30-f478-4446-9741-a85041903410"
},
{
"instance_id": "abcdefgi-d589-4557-8632-a74032802412"
}
],
"stylebook": {
"name": "basic-lb-config",
"namespace": "com.example.stylebooks",
"version": "0.1"
}
}
}
予期される応答ヘッダー(成功時):
202 OK
コンテンツタイプ: application/json
予期される応答ボディ(成功時):
{
"job": {
"job_id": "3628681382"
}
}
このHTTPリクエストでは、負荷分散構成が2つのNetScalerインスタンスで実行されます。これらのNetScalerインスタンスにログオンして、仮想サーバーと、2つのサービスがバインドされたサービスグループが作成されているかどうかを確認できます。
例 4
複合StyleBookの作成で作成した複合StyleBook「composite-example」を検討します。このStyleBookからREST APIを使用してconfig packを作成するには、次の手順に従います。
HTTP メソッド: POST
URL:
https://<IP>/stylebook/nitro/v2/config/configpacks
リクエストヘッダー:
コンテンツタイプ: application/json
アクセプト: application/json
リクエストボディペイロード:
{
"configpack":
{
"parameters": {
"name": "myapp",
"ip": "2.2.2.2",
"svc-servers": ["10.102.29.52","10.102.29.53"]
},
"targets":
[
{
"id": "deecee30-f478-4446-9741-a85041903410"
},
{
"id": "abcdefgg-d589-4557-8632-a74032802412"
}
],
"stylebook": {
"name": "composite-example",
"namespace": "com.example.stylebooks",
"version": "0.1"
}
}
このHTTPリクエストでは、設定はIDで表される2つのNetScalerインスタンス上に作成されます。NetScalerインスタンスにログインすると、「composite-example」StyleBookにインポートされた「basic-lb-config」StyleBookによって作成された設定オブジェクトを表示できます。また、「composite-example」StyleBookの一部であったmyapp-monという新しいHTTPモニターも確認できます。
設定パックの作成が成功すると、以下のHTTPレスポンスが受信されます。
予期されるレスポンスヘッダー (成功時):
202 OK
コンテンツタイプ: application/json
予期されるレスポンスボディ (成功時):
{
"job": {
"job_id": "3628681382"
}
}
設定の更新
IPアドレス10.102.29.54を持つ新しいバックエンドサーバーで更新したい設定があるとします。そのサーバーをロードバランシング仮想サーバーmyappに追加するには、以下のAPIを使用します。
HTTP メソッド: PUT
URL:
https://<IP>/stylebook/nitro/v2/config/configpacks/<configpackid>
リクエストヘッダー:
コンテンツタイプ: application/json
承認: 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"]
},
"targets":
[
{
"instance_id": "deecee30-f478-4446-9741-a85041903410"
},
{
"instance_id": "abdcedff-d589-4557-8632-a74032802412"
}
]
}
}
設定パックの更新が成功すると、以下のHTTPレスポンスが受信されます。
予期されるレスポンスヘッダー (成功時):
202 OK
コンテンツタイプ: application/json
予期されるレスポンスボディ (成功時):
{
"job": {
"job_id": "3628681382"
}
}
設定の削除
この設定 (すべてのNetScalerインスタンスから) を削除するには、設定パックを削除するためのAPIを次のように使用できます。
設定パックの削除が成功すると、以下のHTTPレスポンスが受信されます。
HTTPメソッド: DELETE
URL:
https://<DNS-or-IP>//stylebook/nitro/v2/config/configpacks/<configpackid>
リクエストヘッダー:
受け入れ: application/json
予期される応答ヘッダー (成功時):
202 OK
コンテンツタイプ: application/json
予期される応答ペイロード (成功時):
{
"job": {
"job_id": "3628681382"
}
}
NetScalerインスタンスにログオンし、この構成パックの一部であるすべての構成オブジェクトが削除されていることを確認します。
すべてのインスタンスからではなく、特定のNetScalerインスタンスから構成を削除するには、構成の更新で構成パックの更新操作を使用します。JSONペイロードのターゲット属性を変更して、特定のNetScalerインスタンスIDを削除します。