Application Delivery Management

使用 API 从样书创建配置

构建样书后,您必须将其导入 NetScaler Application Delivery Management (ADM) 才能使用 NetScaler ADM 或使用 NetScaler ADM API 来使用。NetScaler ADM 会在您导入样书时对其进行验证,如果验证成功,您的样书将出现在 NetScaler ADM 样书目录中,随时可以用于创建配置。

现在可以使用样书 API 基于此样书创建配置。您可以使用任何工具,例如 curl 命令行工具或 Postman chrome 浏览器扩展程序,向 NetScaler ADM 发送 HTTP 请求。

示例 1

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

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-->

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

200 OK
Content-Type: application/json
{
  "configpack":
  {
    "config_id": "1460806080"
  }
}
<!--NeedCopy-->

您已经创建了第一个使用 ID 1460806080 进行唯一标识的配置包。可以使用此 ID 查询、更新或删除该配置。

示例 2

您可以使用同一本样书创建另一个配置包,并在相同或不同的 NetScaler 实例上执行该配置包。在此示例中,创建另一个配置并为虚拟服务器提供不同的名称和 IP 地址,另外还指定 LEASTCONNECTION 作为负载平衡方法。在两个 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 请求中,在由 ID deecee30-f478-4446-9741-a85041903410 和 debecc60-d589-4557-8632-a74032802412 表示的两个 NetScaler 实例上创建 IP 地址为 10.102.117.32 的负载平衡虚拟服务器 lb2。

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

200 OK
Content-Type: application/json
{
   "configpack":
  {
     "config_id": "1657696292"
  }
}
<!--NeedCopy-->

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

示例 3

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

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 请求中,负载平衡配置在两个 NetScaler 实例上执行。您可以登录到这些 NetScaler 实例,以验证是否创建了绑定了两个服务的虚拟服务器和服务组。

示例 4

考虑在创建复合样书中创建的复合样书 composite-example。使用 REST API 基于此样书创建配置包,如下所示:

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 表示的 NetScaler 实例上创建配置。如果您登录到 NetScaler 实例,则可以查看导入到“复合示例”样书中的“基本 lb-config”样书创建的配置对象。您还可以看到名为“myapp-mon”的新 HTTP 监视器,它属于“composite-example”样书的一部分。

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

200 OK
Content-Type: application/json{
  "configpack": {
    "config_id": "4917276817"
  }
}
<!--NeedCopy-->

更新配置

要更新此配置,例如,将 IP 地址为 10.102.29.54 的新后端服务器添加到负载平衡虚拟服务器 myapp,请使用 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-->

成功更新配置包后,将收到以下 HTTP 响应:

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

删除配置

要(从所有 NetScaler 实例)删除此配置,可以使用 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-->

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

200 OK
Content-Type: application/json
{
   "configpack": {
     "config_id": "4917276817"
  }
}
<!--NeedCopy-->

可以登录 NetScaler 实例,确认是否已删除属于此配置包的所有配置对象。

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

使用 API 从样书创建配置