Citrix Application Delivery Management 13.0

APIを使用してStyleBookから設定を作成する

StyleBookを構築したら、Citrix ADMまたはCitrix ADM APIを使用して、そのStyleBookをCitrix Application Delivery Management(ADM)にインポートする必要があります。Citrix ADM は、インポート時にStyleBookを検証します。検証が成功すると、StyleBookのCitrix ADM カタログにStyleBookが表示され、構成の作成に使用できます。

StyleBook APIを使用して、このStyleBookに基づいて構成を作成できるようになりました。curlコマンドラインツールやPostman chromeブラウザ拡張機能などの任意のツールを使用して、HTTPリクエストをCitrix ADM に送信できます。

例1

負荷分散仮想サーバーを作成するためのStyleBookで作成した「lb-vserver」スタイルブックを検討してください。REST APIを使用して、次のようにこのStyleBookからコンフィグパックを作成します。

POST

https://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/lb-vserver/configpacks

Content-Type: application/json
Accept: application/json
{
  "configpack":
  {
    "parameters": {
      "name": "lb1",
      "ip": "10.102.117.31"
    },
    "target_devices":
    [
      {
        "id": "deecee30-f478-4446-9741-a85041903410"
      }
    ]
}
}

このHTTPリクエストでは、ID(例:「deecee30-f478-4446-9741-a85041903410”)は、負荷分散仮想サーバー lb1 がIPアドレス10.102.117.31が作成されるCitrix ADC インスタンスのインスタンスIDです。Citrix ADC インスタンスのインスタンスIDは、Citrix ADM から取得されます。

Citrix ADM によって管理されるインスタンスのIDを取得するには、Citrix ADM APIを使用します。たとえば、IPアドレスが192.168.153.160のCitrix ADC インスタンスのインスタンスIDを取得するには、次のAPIを使用します。

GET https://<MAS-IP>/nitro/v1/config/ns?filter=ip_address:192.168.153.160
Accept: application/json

応答ではペイロード内に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",
    ...
   }
 ]
}

構成 (configpack) が正常に作成されると、次の HTTP 応答が表示されます。

200 OK
Content-Type: application/json
{
  "configpack":
  {
    "config_id": "1460806080"
  }
}

ID 1460806080 を使用して一意に識別される最初の構成 (コンフィグパック) を作成しました。このIDを使用して、構成のクエリ、更新、削除を行えます。

例2

同じStyleBookを使用して別の構成または構成パックを作成し、同じまたは異なるCitrix ADC インスタンスで実行できます。この例では、別の構成を作成し、仮想サーバーに異なる名前とIPアドレスを指定します。また、負荷分散の方法としてLEASTCONNECTIONを指定します。この構成を2つのCitrix ADC インスタンスに展開します。

HTTP要求は次のとおりです。

POST

https://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/lb-vserver/configpacks
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"}
    ]
  }
}

このHTTPリクエストでは、IPアドレス10.102.117.32の負荷分散仮想サーバーlb2が、ids “deecee30-f478-4446-9741-a85041903410”と”debecc60-d589-4557-8632-a74032802412”で表される2つのCitrix ADC インスタンスに作成されます。

コンフィグパックが正常に作成されると、次の HTTP 応答が受信されます。

200 OK
Content-Type: application/json
{
   "configpack":
  {
     "config_id": "1657696292"
  }
}

この新しい構成パックは、異なる ID 165769629 です。このIDを使用することで、この構成を更新または削除できます。

例3

基本的な負荷分散の構成を作成するためのStyleBookで作成した「basic-lb-config」スタイルブックについて検討してください。REST APIを使用して、次のようにこのStyleBookからコンフィグパックを作成します。

POST

http://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/basic-lb-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
    },
    "target_devices":
    [
     {
      "id": "deecee30-f478-4446-9741-a85041903410"
     },
     {
      "id": "debecc60-d589-4557-8632-a74032802412"
     }
    ]
  }
}

このHTTPリクエストでは、2つのCitrix ADC インスタンスで負荷分散構成が実行されます。これらのCitrix ADC インスタンスにログオンして、仮想サーバーと2つのサービスがバインドされたサービスグループが作成されているかどうかを確認できます。

例4

複合StyleBookの作成で作成した複合StyleBook composite-example を考えてみましょう。REST APIを使用して、次のようにこのStyleBookからコンフィグパックを作成します。

POST http://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/composite-example/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"]
    },
    "target_devices":
    [
    {
      "id": "deecee30-f478-4446-9741-a85041903410"
    },
    {
      "id": "debecc60-d589-4557-8632-a74032802412"
    }
    ]
 }
}

このHTTPリクエストでは、構成はIDで表される2つのCitrix ADC インスタンスに作成されます。Citrix ADC インスタンスにログオンすると、「複合例」スタイルブックにインポートされた「basic-lb-config」スタイルブックで作成された構成オブジェクトを表示できます。また、「composite-example」StyleBookの一部だった「myapp-mon」という新しいHTTPモニターも表示されます。

コンフィグパックが正常に作成されると、次の HTTP 応答が受信されます。

200 OK
Content-Type: application/json{
  "configpack": {
    "config_id": "4917276817"
  }
}

構成の更新

たとえば、IP アドレス 10.102.29.54 の新しいバックエンドサーバをロードバランシング仮想サーバ myapp に追加して、この設定を更新するには、次のように API を使用して configpack を更新します。

PUT http://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/composite-example/configpacks/4917276817
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"
  }
]
}
}

configpack が正常に更新されると、次の HTTP 応答が受信されます。

200 OK
Content-Type: application/json
{
   "configpack": {
     "config-id": "4917276817"
  }
}

構成の削除

この構成を(すべてのCitrix ADC インスタンスから)削除するには、次のようにAPIを使用して構成パックを削除します。

DELETE http://<MAS-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/composite-example/configpacks/4917276817
Accept: application/json

configpack が正常に削除されると、次の HTTP 応答が受信されます。

200 OK
Content-Type: application/json
{
   "configpack": {
     "config_id": "4917276817"
  }
}

Citrix ADC インスタンスにログオンし、この構成パックに含まれるすべての構成オブジェクトが削除されたことを確認できます。

すべてのCitrix ADCインスタンスからではなく、特定のCitrix ADC インスタンスから構成を削除する場合は、上記の構成パックの更新操作を使用し、JSONペイロードの「target_devices」属性を変更して、特定のCitrix ADCインスタンスIDを削除します。

APIを使用してStyleBookから設定を作成する