API を使用してStylebookから構成を作成する
Stylebookを作成したら、NetScalerコンソールGUIまたはNetScalerコンソールAPIを使用してStylebookをインポートする必要があります。NetScaler コンソールは、インポート時にStylebookを検証します。検証が成功すると、StylebookがNetScaler ConsoleのStylebookカタログに表示され、構成の作成に使用できる状態になります。
StyleBook APIを使用して、このStyleBookに基づいて構成を作成できるようになりました。cURLコマンドラインツールやPostman chromeブラウザー拡張機能などの任意のツールを使用して、NetScaler コンソールにHTTPリクエストを送信できます。
注:
StyleBooks APIは、デベロッパーポータルのOpenAPI仕様を使用して完全に文書化されています。
例1
負荷分散仮想サーバーを作成するためにStyleBookで作成したlb-vserver
StyleBookを考えてみましょう。 次の REST API を使用して、このStyleBook から構成パックを作成します。
HTTPメソッド: ポスト
URL: https://<IP>/stylebook/nitro/v2/config/configpacks
リクエストヘッダー:
Content-Type: application/json
Accept: 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"
}
}
}
<!--NeedCopy-->
このHTTPリクエストでは、deecee30-f478-4446-9741-a85041903410というIDは、IPアドレス10.102.117.31の負荷分散仮想サーバーlb1が作成されたNetScalerインスタンスのインスタンスIDです。NetScalerインスタンスのインスタンスIDは、NetScalerコンソールから取得されます。
NetScalerコンソールで管理されているインスタンスのIDを取得するには、NetScalerコンソールAPIを使用できます。たとえば、IP アドレスが 192.168.153.160 のインスタンス ID または NetScaler インスタンスを取得するには、次の API を使用できます:
HTTP メソッド: 取得
URL: https://<IP>/nitro/v2/config/ns?filter=ip_address:192.168.153.160
リクエストヘッダー:
Accept: application/json
レスポンスの ID は json ペイロードにあります:
期待されるレスポンスヘッダー (成功した場合):
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-->
構成 (構成パック) が正常に作成されると、次の HTTP 応答が表示されます。
期待されるレスポンスヘッダー (成功した場合):
202 わかりました
Content-Type: application/json
期待されるレスポンスボディ (成功した場合):
{
"job":
{
"job_id": "1460806080"
}
}
<!--NeedCopy-->
これで、ID 1460806080を使用して一意に識別される最初のジョブが作成されました。このIDを使用して、構成のクエリ、更新、削除を行えます。
次の URL を使用してジョブのステータスを照会できます:
https://<IP>/stylebook/nitro/v2/config/jobs/<jobid>
例2
同じStyleBookを使用して別の構成パックまたは構成パックを作成し、同じまたは異なるNetScaler ADCインスタンスで実行できます。この例では、別の構成を作成し、仮想サーバーに別の名前と IP アドレスを指定します。負荷分散方法として LEASTCONNECTION を指定します。この構成を 2 つの NetScaler インスタンスにデプロイします。
HTTP要求は次のとおりです。
HTTPメソッド: ポスト
URL: https://<IP>/stylebook/nitro/v2/config/configpacks
リクエストヘッダー:
Content-Type: application/json
Accept: 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"
}
}
}
<!--NeedCopy-->
このHTTPリクエストでは、IDが「deecee30-f478-4446-9741-a85041903410」と「abcdee30-f478-4446-9741-a85041903410」と「abcdee30-f478-4446-9741-a85041903410」の2つのNetScalerインスタンスにIPアドレス10.102.117.31の負荷分散仮想サーバーlb1が作成されます。
構成パックが正常に作成されると、次の HTTP 応答が受信されます:
期待されるレスポンスヘッダー (成功した場合):
202 わかりました
Content-Type: application/json
期待されるレスポンスボディ (成功した場合):
{
"job": {
"job_id": "165769629"
}
}
<!--NeedCopy-->
この新しい構成パックには、165769629という別のIDが付いています。この ID を使用して、この構成を更新または削除できます。
例3
「基本的な負荷分散の構成を作成するためのStyleBook」で作成した「basic-lb-config」StyleBookを参考にします。REST APIを使用して、このStyleBookから構成パックを次のように作成します:
HTTPメソッド: ポスト
URL: https://<IP>/stylebook/nitro/v2/config/configpacks
リクエストヘッダー:
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"
}
}
}
<!--NeedCopy-->
期待されるレスポンスヘッダー (成功した場合):
202 わかりました
Content-Type: application/json
期待されるレスポンスボディ (成功した場合):
{
"job": {
"job_id": "3628681382"
}
}
<!--NeedCopy-->
このHTTPリクエストでは、負荷分散構成は2つのNetScalerインスタンスで実行されます。これらのNetScaler ADC インスタンスにログオンして、仮想サーバーと2つのサービスがバインドされたサービスグループが作成されているかどうかを確認できます。
例4
「複合StyleBookの作成」で作成した複合StyleBookのcomposite-exampleを参考にします。REST APIを使用して、このStyleBookから次のように構成パックを作成します。
HTTPメソッド: ポスト
URL: https://<IP>/stylebook/nitro/v2/config/configpacks
リクエストヘッダー:
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"]
},
"targets":
[
{
"id": "deecee30-f478-4446-9741-a85041903410"
},
{
"id": "abcdefgg-d589-4557-8632-a74032802412"
}
],
"stylebook": {
"name": "composite-example",
"namespace": "com.example.stylebooks",
"version": "0.1"
}
}
<!--NeedCopy-->
このHTTPリクエストでは、構成はIDで表される2つのNetScaler ADC インスタンスに作成されます。NetScaler インスタンスにログオンすると、「複合例」StyleBook にインポートされた「basic-lb-config」StyleBook で作成された構成オブジェクトを表示できます。また、「複合例」 StyleBookの一部であったmyapp-mon
という新しいHTTPモニターも見られます。
構成パックが正常に作成されると、次の HTTP 応答が受信されます:
期待されるレスポンスヘッダー (成功した場合):
202 わかりました
Content-Type: application/json
期待されるレスポンスボディ (成功した場合):
{
"job": {
"job_id": "3628681382"
}
}
<!--NeedCopy-->
構成の更新
設定を更新するには、次の API を使用できます。ここで、IP アドレス 10.102.29.54 のバックエンドサーバーが負荷分散仮想サーバー `myapp に追加されます。
HTTPメソッド: PUT
URL: https://<IP>/stylebook/nitro/v2/config/configpacks/<configpackid>
リクエストヘッダー:
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"]
},
"targets":
[
{
"instance_id": "deecee30-f478-4446-9741-a85041903410"
},
{
"instance_id": "abdcedff-d589-4557-8632-a74032802412"
}
]
}
}
<!--NeedCopy-->
構成パックが正常に更新されると、次の HTTP 応答が受信されます。
期待されるレスポンスヘッダー (成功した場合):
202 わかりました
Content-Type: application/json
期待されるレスポンスボディ (成功した場合):
{
"job": {
"job_id": "3628681382"
}
}
<!--NeedCopy-->
構成の削除
この構成を(すべてのNetScaler ADCインスタンスから)削除するには、次のようにAPIを使用して構成パックを削除します。
構成パックが正常に削除されると、次の HTTP 応答が受信されます。
HTTP メソッド: DELETE
URL: https://<DNS-or-IP>//stylebook/nitro/v2/config/configpacks/<configpackid>
リクエストヘッダー:
Accept: application/json
期待されるレスポンスヘッダー (成功した場合):
202 わかりました
Content-Type: application/json
予想される応答ペイロード (成功した場合):
{
"job": {
"job_id": "3628681382"
}
}
<!--NeedCopy-->
NetScaler インスタンスにログオンし、この構成パックに含まれるすべての構成オブジェクトが削除されたことを確認します。
すべてのインスタンスからではなく特定のNetScaler ADC インスタンスから構成を削除するには、「構成の更新」の「 構成パックの更新」操作を使用します。JSON ペイロードのtargets
属性を変更して、特定の NetScaler インスタンス ID を削除します。