Application Delivery Management

使用 API 从 StyleBook 创建配置

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

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

示例 1

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

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

您可以使用相同的 StyleBook 创建另一个配置包,并在相同或不同的 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 请求中,IP 地址为 10.102.117.32 的负载平衡虚拟服务器 lb2 是在由 id“deecee30-f478-4446-9741-a85041903410”和“debecc60-d589-4557-8632-a74032802412”表示的两个 NetScaler 实例上创建的。

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

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

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

示例 3

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

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

请考虑您在创建复合 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
<!--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 实例,则可以查看由导入到“composite-example” StyleBook 中的“basic-lb-config” StyleBook 创建的配置对象。您还可以看到一个新的 HTTP 监视器“myapp-mon”,它是“composite-example” StyleBook 的一部分。

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

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

更新配置

要更新此配置(例如,通过向负载平衡虚拟服务器 myapp 添加 IP 地址为 10.102.29.54 的新后端服务器),请使用更新配置包的 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 从 StyleBook 创建配置