Product Documentation

API를 사용하여 StyleBook에서 구성을 만드는 방법

Jul 18, 2017

StyleBook을 작성한 후 사용하려면 NetScaler MAS GUI 또는 NetScaler MAS API를 사용하여 NetScaler MAS로 StyleBook을 가져와야 합니다. StyleBook을 가져오면 NetScaler MAS가 StyleBook의 유효성을 검사합니다. 유효성 검사가 성공적이면 StyleBook이 NetScaler MAS GUI의 StyleBook 카탈로그에 표시되고 구성을 만들 때 사용할 수 있게 됩니다.

이제 StyleBook API를 사용하여 이 StyleBook에 기반한 구성을 만들 수 있습니다. curl 명령줄 도구나 Postman Chrome 브라우저 확장 같은 도구를 사용하여 NetScaler MAS로 HTTP 요청을 보낼 수 있습니다.

예제 1

부하 분산 가상 서버를 만드는 StyleBook에서 만든 "lb-vserver" StyleBook을 사용한다고 가정합니다. 다음과 같이 REST API를 사용하여 이 StyleBook에서 구성 팩을 만듭니다.

POST

https:///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")는 IP 주소가 10.102.117.31인 부하 분산 가상 서버 lb1이 만들어지는 NetScaler 인스턴스의 인스턴스 ID입니다. NetScaler 인스턴스의 인스턴스 ID는 NetScaler MAS에서 검색됩니다.

NetScaler MAS로 관리되는 인스턴스의 ID를 구하려면 NetScaler MAS API를 사용할 수 있습니다. 예를 들어 IP 주소가 192.168.153.160인 NetScaler 인스턴스의 인스턴스 ID를 검색하려면 다음과 같은 API를 사용할 수 있습니다.

     GET https:///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",

                 ...

           }

           ]

      }

구성(구성 팩)이 성공적으로 만들어지면 다음과 같은 HTTP 응답을 받게 됩니다.

 

     200 OK

     Content-Type: application/json               

     {

           "configpack": {

            "config_id": "1460806080"

           }

     }

 

ID 1460806080을 사용하여 고유하게 식별되는 첫 번째 구성(구성 팩)을 만들었습니다. 이 ID를 사용하여 구성을 쿼리하거나, 업데이트하거나, 삭제할 수 있습니다.

예제 2

동일한 StyleBook을 사용하여 다른 구성 또는 구성 팩을 만들고 이 구성을 동일하거나 다른 NetScaler 인스턴스에서 실행할 수 있습니다. 이 예제에서는 다른 구성을 만들고 가상 서버에 대해 다른 이름과 IP 주소를 제공하고 부하 분산 방법으로 LEASTCONNECTION을 지정합니다. 이 구성을 NetScaler 인스턴스 2개에 배포합니다.

HTTP 요청은 다음과 같습니다.

POST

https:///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 요청에서 id가 "deecee30-f478-4446-9741-a85041903410"과 "debecc60-d589-4557-8632-a74032802412"인 NetScaler 인스턴스 2개에 IP 주소가 10.102.117.32인 부하 분산 가상 서버 lb2가 만들어집니다.

구성 팩이 성공적으로 만들어지는 경우 다음과 같은 HTTP 응답을 받게 됩니다.

200 OK

Content-Type: application/json

{

 "configpack": {

  "config_id": "1657696292"

 }

}

 

이 새 구성 팩은 다른 ID인 165769629를 갖습니다. 이 id를 사용하여 이 구성을 업데이트하거나 제거할 수 있습니다.

예제 3

기본 부하 분산 구성을 만드는 StyleBook에서 만든 "basic-lb-config" StyleBook을 사용한다고 가정합니다. 다음과 같이 REST API를 사용하여 이 StyleBook에서 구성 팩을 만듭니다.

POST

http:///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 요청에서 부하 분산 구성은 NetScaler 인스턴스 2개에서 실행됩니다. 이러한 NetScaler 인스턴스에 로그온하여 두 서비스가 바인딩된 가상 서버 및 서비스 그룹이 인스턴스에 만들어지는지 확인할 수 있습니다.

예제 4

복합 StyleBook 만들기에서 만든 복합 StyleBook composite-example을 사용한다고 가정합니다. 다음과 같이 REST API를 사용하여 이 StyleBook에서 구성 팩을 만듭니다.

POST http:///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로 나타나는 NetScaler 인스턴스 2개에 구성이 만들어집니다. NetScaler 인스턴스에 로그온한 경우 "composite-example" StyleBook으로 가져온 "basic-lb-config" StyleBook에서 만들어지는 구성 개체를 볼 수 있습니다. "composite-example" StyleBook에 포함되었던 "myapp-mon"이라고 하는 새 HTTP 모니터도 볼 수 있습니다.

구성 팩이 성공적으로 만들어지는 경우 다음과 같은 HTTP 응답을 받게 됩니다.

200 OK

Content-Type: application/json

{

 "configpack": {

  "config_id": "4917276817"

 }

}

구성 업데이트

이 구성을 업데이트하려면, 예를 들어 부하 분산 가상 서버 myapp에 IP 주소가 10.102.29.54인 새 백엔드 서버를 추가하려면 다음과 같이 API를 사용하여 구성 팩을 업데이트합니다.

PUT http:///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"

                           }

          ]  

      }

}

 

구성 팩이 성공적으로 업데이트되는 경우 다음과 같은 HTTP 응답을 받게 됩니다.

 

200 OK

Content-Type: application/json

{

 "configpack": {

  "config-id": "4917276817"

 }

}

구성 삭제

모든 NetScaler 인스턴스에서 이 구성을 삭제하려면 다음과 같이 API를 사용하여 구성 팩을 삭제할 수 있습니다.

DELETE http:///stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/0.1/composite-example/configpacks/4917276817

Accept: application/json

구성 팩이 성공적으로 삭제되는 경우 다음과 같은 HTTP 응답을 받게 됩니다.

200 OK

Content-Type: application/json

{

 "configpack": {

  "config_id": "4917276817"

 }

}


NetScaler 인스턴스에 로그온하여 이 구성 팩의 일부인 모든 구성 개체가 제거되었는지 확인할 수 있습니다.

모든 NetScaler 인스턴스가 아닌 특정 인스턴스에서 구성을 제거하려는 경우 위에 설명된 업데이트 구성 팩 작업을 사용하고 특정 NetScaler 인스턴스 ID를 제거하도록 JSON 페이로드의 "target_devices" 특성을 변경합니다.