样书配置

使用 API 从样书创建配置

构建样书后,必须使用 NetScaler 控制台 GUI 或使用 NetScaler 控制台 API 将其导入。当您导入样书时,NetScaler 控制台会对其进行验证。如果验证成功,您的样书将显示在 NetScaler 控制台样书目录中,随时可以用于创建配置。

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

注意:

样书 API 使用开发者门户上的 OpenAPI 规范进行了完整记录。

示例 1

以在用于创建负载平衡虚拟服务器的样书中创建的 lb-vserver 样书为例。使用以下 REST API 从此样书创建配置包:

HTTP 方法: POST

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 请求中,ID deecee30-f478-4446-9741-a85041903410 是创建 IP 地址为 10.102.117.31 的负载平衡虚拟服务器 lb1 的 NetScaler 实例的实例 ID。NetScaler 实例的实例 ID 是从 NetScaler 控制台检索的。

要获取由 NetScaler 控制台管理的实例的 ID,您可以使用 NetScaler 控制台 API。例如,要检索实例 ID 或 IP 地址为 192.168.153.160 的 NetScaler 实例,可以使用以下 API:

HTTP 方法: GET

URL: https://<IP>/nitro/v2/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",
   }
 ]
}
<!--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

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

HTTP 请求如下:

HTTP 方法: POST

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 请求中,IP 地址为 10.102.117.31 的负载平衡虚拟服务器 lb1 是在 ID 为“deecee30-f478-4446-9741-a85041903410”和“abcdee30-f478-4446-9741-a85041903410”的两个 NetScaler 实例上创建的。

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

预期响应标题(成功时):

202 正常

Content-Type: application/json

预期反应正文(成功时):

{
    "job": {
        "job_id": "165769629"
    }
}
<!--NeedCopy-->

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

示例 3

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

HTTP 方法: POST

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

示例 4

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

HTTP 方法: POST

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

成功创建配置包后,将收到以下 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 实例中),您可以使用 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 实例而不是所有实例中删除配置,请使用更新配置中的更新配置包操作。更改 JSON 负载中的 targets 属性以删除特定的 NetScaler 实例 ID。

使用 API 从样书创建配置