使用 API 从样本创建配置

构建样本后,您必须将其导入到 Citrix Application Delivery Management (ADM),以便使用 Citrix ADM 或 Citrix ADM API 来使用样本。Citrix ADM 会在导入样本时验证样本,如果验证成功,样本将显示在 Citrix ADM 样本目录中,可用于创建配置。

现在可以使用样本 API 基于此样本创建配置。您可以使用任何工具(如 curl 命令行工具或邮差 Chrome 浏览器扩展)将 HTTP 请求发送到 Citrix ADM。

示例 1

考虑您在中创建的 “lb-vserver” 样本用于创建负载平衡虚拟服务器的样本。使用 REST API 从此样本创建配置包,如下所示:

HTTP 方法: POST

网址: https://<ADM-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"
    },
    "targets":
    [
      {
        "id": "deecee30-f478-4446-9741-a85041903410"
      }
    ]
  }
}

在此 HTTP 请求中,ID(例如 deecee30-f478-4446-9741-a85041903410)是在其中创建 IP 地址为 10.102.117.31 的负载平衡虚拟服务器 lb1 的 Citrix ADC 实例的实例 ID。从 Citrix ADM 检索 Citrix ADC 实例的实例 ID。

要获取 Citrix ADM 管理的实例的 ID,您可以使用 Citrix ADM API。例如,要检索 IP 地址为 192.168.153.160 的 Citrix ADC 实例的实例 ID,您可以使用以下 API:

HTTP 方法: GET

网址: https://<ADM-IP>/nitro/v1/config/ns?filter=ip_address:192.168.153.160

请求标题:

Accept: application/json

响应包含 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",
   }
 ]
}

如果配置(配置包)已成功创建,您将收到以下 HTTP 响应:

预期响应标题(成功):

200 OK

Content-Type: application/json

预期反应机构(关于成功):

{
  "configpack":
  {
    "config_id": "1460806080"
  }
}

您已创建了通过使用编号 1460806080 唯一标识的第一个配置(配置包)。可以使用此 ID 查询、更新或删除该配置。

示例 2

您可以使用同一样本创建另一个配置或配置包,并在相同或不同的 Citrix ADC 实例上执行它。在此示例中,创建另一个配置并为虚拟服务器提供不同的名称和 IP 地址,另外还指定 LEASTCONNECTION 作为负载平衡方法。在两个 Citrix ADC 实例上部署此配置。

HTTP 请求如下:

HTTP 方法: POST

网址: https://<ADM-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"
    },
    "targets"
    [
     {"id": "deecee30-f478-4446-9741-a85041903410"},
     {"id": "debecc60-d589-4557-8632-a74032802412"}
    ]
  }
}

在此 HTTP 请求中,在由 ID deecee30-f478-4446-9741-a85041903410 和 debecc60-d589-4557-8632-a74032802412 表示的两个 Citrix ADC 实例上创建 IP 地址为 10.102.117.32 的负载平衡虚拟服务器 lb2。

成功创建配置包后,会收到以下 HTTP 响应:

预期响应标题(成功):

200 OK

Content-Type: application/json

预期反应机构(关于成功):

{
   "configpack":
  {
     "config_id": "1657696292"
  }
}

这个新的配置包有一个不同的 ID 165769629。您可以通过使用此 ID 更新或删除此配置。

示例 3

考虑您在中创建的 “基本 Lb-config” 样本用于创建基本负载平衡配置的样本。使用 REST API 从此样本创建配置包,如下所示:

HTTP 方法: POST

网址: http://<ADM-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/basic-lb-config/configpacks

请求标题:

Content-Type: application/json

Accept: application/json

预期响应标题(成功):

200 OK

Content-Type: 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":
    [
     {
      "id": "deecee30-f478-4446-9741-a85041903410"
     },
     {
      "id": "debecc60-d589-4557-8632-a74032802412"
     }
    ]
  }
}

在此 HTTP 请求中,负载平衡配置将在两个 Citrix ADC 实例上执行。您可以登录到这些 Citrix ADC 实例,以验证是否创建了虚拟服务器和具有两个服务绑定的服务组。

示例 4

考虑您在中创建的复合样本合成 示例创建复合样本/zh-cn/citrix-application-delivery-management-service/stylebooks/how-to-create-custom-stylebooks/create-composite-stylebook.html[()]。使用 REST API 从此样本创建配置包,如下所示:

HTTP 方法: POST

网址: http://<ADM-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"]
    },
    "targets":
    [
     {
      "id": "deecee30-f478-4446-9741-a85041903410"
     },
     {
      "id": "debecc60-d589-4557-8632-a74032802412"
     }
    ]
  }
}

在此 HTTP 请求中,将在两个由其 ID 表示的 Citrix ADC 实例上创建配置。如果您登录到 Citrix ADC 实例,则可以查看导入到 “复合示例” 样本中的 “基本 lb-config” 样本创建的配置对象。您还可以看到一个名为 “myapp-mon” 的新 HTTP 监视器,该监视器是 “合成示例” 样本的一部分。

成功创建配置包后,会收到以下 HTTP 响应:

预期响应标题(成功):

200 OK

Content-Type: application/json

预期反应正文(关于成功):

{
  "configpack": {
    "config_id": "4917276817"
  }
}

更新配置

要更新此配置,例如,通过将 IP 地址 10.102.29.54 的新后端服务器添加到负载平衡虚拟服务器 myapp 中,请使用 API 更新配置包,如下所示:

HTTP 方法: PUT

网址: http://<ADM-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"]
  },
  "targets":
   [
     {
      "id": "deecee30-f478-4446-9741-a85041903410"
     },
     {
      "id": "debecc60-d589-4557-8632-a74032802412"
     }
   ]
  }
}

在成功更新配置包时,会收到以下 HTTP 响应:

预期响应标题(成功):

200 OK

Content-Type: application/json

预期反应机构(关于成功):

{
   "configpack": {
     "config-id": "4917276817"
  }
}

删除配置

要删除此配置(从所有 Citrix ADC 实例中),可以使用 API 删除配置包,如下所示:

成功删除配置包后,会收到以下 HTTP 响应:

HTTP 方法: DELETE

网址: http://<ADM-DNS-or-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/composite-example/configpacks/4917276817

请求标题:

Accept: application/json

预期响应标题(成功):

200 OK

Content-Type: application/json

预期响应有效载荷(成功):

{
   "configpack": {
     "config_id": "4917276817"
  }
}

您可以登录到 Citrix ADC 实例并验证是否已删除此配置包中的所有配置对象。

如果要从特定 Citrix ADC 实例中删除配置,而不是从所有实例中删除配置,请使用上述更新配置包操作,并更改 JSON 有效负载中的 “目标” 属性,以删除特定 Citrix ADC 实例 ID。

使用 API 从样本创建配置