Product Documentation

자체 StyleBook을 만드는 방법

Apr 26, 2017

배포에 사용할 자체 StyleBook을 만들어 NetScaler MAS로 가져오고 구성 개체를 만들 수 있습니다. API를 사용하여 StyleBook에서 구성을 만들 수도 있습니다.

시작하기 전에

StyleBook을 만들려면 다음을 알아야 합니다.

  • NITRO API
  • YAML

StyleBook 파일은 YAML 형식을 사용합니다. YAML 형식에 대한 자세한 내용은 http://learn.getgrav.org/advanced/yaml을 참조하십시오.

다음은 StyleBook을 만드는 동안 숙지해야 할 YAML 지침의 목록입니다.

  • YAML은 대/소문자를 구분합니다.
  • YAML에는 올바른 들여쓰기가 필요합니다.
  • 올바른 들여쓰기를 사용하려면 <스페이스바> 키를 사용합니다. 키를 사용하지 마십시오. 키를 사용하면 StyleBook을 MAS로 가져올 때 컴파일 오류가 발생합니다.
  • 문자열을 따옴표로 묶지 마십시오. 문자열에 문장 부호(대시, 콜론 등)가 포함되는 경우에만 문자열을 따옴표로 묶으십시오. 숫자를 문자열로 해석하려면 숫자를 따옴표로 묶거나 StyleBook의 str() 기본 제공 함수를 사용하십시오.
  • YES/Yes/yes/Y/y/NO/no/No/n/N, ON/On/on/OFF/Off/off 및 TRUE/true/truthy/FALSE/False/false/falsey와 같은 리터럴은 부울로 간주되며 각각 true 및 false와 동일합니다. 리터럴을 문자열로 해석하려면 따옴표 안에 포함합니다. 예를 들어 "YES", "No", "True", "False" 등으로 표시합니다.

메모

StyleBook 파일을 NetScaler MAS로 가져오기 전에 파일이 YAML 형식을 준수하는지 확인하는 것이 좋습니다. 파일 유효성을 검사하려면 온라인 도구를 사용할 수 있습니다. http://www.yamllint.com/

StyleBook 구조

StyleBook을 작성하려면 StyleBook의 문법, 구문 및 구조를 알아야 합니다. 일반적인 StyleBook에는 다음과 같은 섹션이 있습니다.

  • 헤더: 이 섹션은 StyleBook의 ID를 정의하고 수행하는 작업을 설명하는 데 사용됩니다. 필수 섹션입니다.
  • StyleBook 가져오기: 이 섹션은 현재 StyleBook에서 참조할 다른 StyleBook을 선언하는 데 사용됩니다. StyleBook을 작성하려면 NetScaler NITRO 구성 StyleBook 또는 다른 StyleBook을 가져와야 합니다. 필수 섹션입니다.
  • 매개 변수: 이 섹션에서는 StyleBook에서 구성을 만들 때 필요한 매개 변수를 정의합니다. StyleBook이 사용하는 입력을 설명합니다. 선택적 섹션입니다.
  • 구성 요소: StyleBook에서 특정 구성에 대해 만든 엔터티(구성 개체)를 정의하는 섹션입니다. 이 섹션은 StyleBook의 핵심으로 여겨집니다. components는 일반적으로 parameters 섹션에 제공된 입력을 사용하여 StyleBook이 생성한 구성을 변경합니다. 선택적 섹션입니다.
    StyleBook에는 parameters 섹션 또는 components 섹션이 포함되거나 두 섹션이 모두 포함될 수 있습니다. parameters 섹션만 있는 StyleBook은 다른 StyleBook이 사용할 수 있는 매개 변수 목록을 정의하는 데 유용합니다. StyleBook 집합에서 매개 변수 그룹을 쉽게 재사용할 수 있습니다. components 섹션만 있는 StyleBook은 사용자 입력을 가져올 매개 변수를 정의하지 않고 StyleBook에서 특성 값을 지정하려는 경우 사용할 수 있습니다.
  • 출력: parameters 섹션에서는 StyleBook의 입력을 정의하지만 이 선택적 섹션에서는 출력을 정의합니다. 이 선택적 출력 섹션에서는 이 StyleBook에서 구성을 만드는 사용자와 이 StyleBook을 가져오는 다른 StyleBook에 노출할 구성 요소를 지정할 수 있습니다. 그러면 사용자와 가져오는 StyleBook이 노출된 구성 요소의 속성을 참조할 수 있습니다.
  • 작업: StyleBook에는 StyleBook의 일부인 가상 서버에서 NetScaler MAS의 분석 기능을 사용하도록 설정하는 선택적 섹션을 포함할 수 있습니다.


다음 그림은 StyleBook의 간단한 윤곽을 보여 줍니다.

localized image

다음 예에서 StyleBook의 문법 및 구조와 복잡한 StyleBook을 작성하는 방법을 배워 볼 수 있습니다.

부하 분산 가상 서버를 만드는 StyleBook

이 예에서는 프로토콜 유형이 HTTP이고 수신 포트가 80인 부하 분산 가상 서버를 만드는 기본적인 StyleBook을 설계합니다. 가상 서버 이름, IP 주소 및 부하 분산 방식 매개 변수는 StyleBook의 매개 변수로, 사용자가 값을 정의할 수 있습니다.

헤더

StyleBook의 첫 여섯 줄은 header 섹션을 구성합니다. 이 예에서 header 섹션은 다음과 같이 작성되었습니다.

name: lb-vserver

description: This StyleBook defines a load balancing virtual server configuration.

display-name: Load Balancing Virtual Server (HTTP)

namespace: com.example.stylebooks

schema-version: "1.0"

version: "0.1"

header 섹션에는 다음과 같은 세부 정보가 포함됩니다.

  • name: 이 StyleBook의 이름입니다.
  • description: 이 StyleBook이 수행하는 작업을 정의하는 설명입니다. 이 설명은 NetScaler MAS GUI에 표시됩니다.
  • display-name: NetScaler MAS GUI에 표시되는 StyleBook에 대한 설명적 이름입니다.
  • namespace: 네임스페이스는 StyleBook에서 이름 충돌을 방지하기 위한 고유 식별자의 일부를 형성합니다.
  • schema-version: 이 릴리스에서는 항상 "1.0" 값을 가져옵니다.
  • version: StyleBook의 버전 번호입니다. StyleBook을 업데이트할 때 버전 번호를 변경할 수 있습니다.

name, namespaceversion의 조합으로 시스템에서 StyleBook을 고유하게 식별합니다. 이름, 네임스페이스 및 버전 조합이 동일한 StyleBook 2개를 NetScaler MAS에 만들 수 없습니다. 그러나 이름과 버전은 동일하지만 네임스페이스가 다거나 네임스페이스와 버전은 동일하지만 이름은 다른 StyleBook 2개를 만들 수는 있습니다.

메모

예를 들어 StyleBook을 업데이트했고 업데이트된 버전 번호가 있다고 하겠습니다. 이제 다른 StyleBook에서 이 StyleBook을 나타낼 때, 즉 가져오려는 경우 다른 StyleBook에서도 버전 번호를 업데이트해야 가져온 StyleBook의 올바른 버전이 사용됩니다.

StyleBook 가져오기

헤더 다음의 섹션은 “import-stylebooks”입니다. 이 섹션에서는 현재 StyleBook에서 참조할 다른 StyleBook의 네임스페이스 및 버전 번호를 선언해야 합니다. 이렇게 하면 StyleBook에서 동일한 구성을 다시 작성하지 않고 다른 StyleBook을 가져와 재사용할 수 있습니다.

이 예에서 import-stylebooks 섹션은 다음과 같이 작성되었습니다.

import-stylebooks:

 -

   namespace: netscaler.nitro.config

   prefix: ns

   version: "10.5"

NITRO 구성 개체를 직접 사용하는 모든 StyleBook은 netscaler.nitro.config 네임스페이스를 참조해야 합니다. 이 네임스페이스에는 lbvserver와 같은 모든 NetScaler NITRO 유형이 포함됩니다. 버전 10.5, 11.0 및 11.1이 지원되므로 릴리스 10.5 이상을 실행하는 모든 NetScaler 인스턴스에서 StyleBook을 사용하여 구성을 만들고 실행할 수 있습니다.

import-stylebooks 섹션에 사용되는 접두사는 네임스페이스 및 버전 조합을 참조하는 단축형입니다. 이 예에서 ns는 netscaler.nitro.config의 버전 10.5를 나타냅니다. StyleBook의 이후 섹션에서는 가져온 StyleBook을 참조할 때 네임스페이스와 버전 조합을 사용하는 대신 선택한 접두사 문자열을 사용할 수 있습니다(예: 위 예의 ns).

메모

버전 10.5 이상의 NetScaler 인스턴스를 구성할 때 StyleBook을 사용하려면 최대한의 호환성을 위해 Nitro 기본 제공 StyleBook을 직접 사용하는 StyleBook의 Nitro 10.5 네임스페이스(네임스페이스: netscaler.nitro.config, 버전: 10.5)를 가져와야 합니다.

매개 변수

parameters 섹션에서는 StyleBook에 필요한 모든 매개 변수를 선언할 수 있습니다. StyleBook 개발자는 StyleBook 사용자가 지정해야 하는 입력을 결정해야 합니다. 이 예의 StyleBook은 사용자가 가상 서버 이름, IP 주소 및 부하 분산 방식을 입력하도록 작성되었습니다.

parameters 섹션은 다음과 같을 수 있습니다.

parameters:

       -

          name: name

          type: string

          label: Application Name

          description: Name of the application configuration.

          required: true

      -

          name: ip

          type: ipaddress

          label: Application Virtual IP (VIP)

          description: Application VIP that the clients access.

          required: true

     -

          name: lb-alg

          type: string

                     label: LoadBalancing Algorithm

                     description: Choose the load balancing algorithm (method) used for load balancing client request between the application servers.

          allowed-values:   

              - ROUNDROBIN

              - LEASTCONNECTION

          default: ROUNDROBIN

메모

매개 변수의 레이블을 입력하지 않으면 NetScaler MAS가 이 매개 변수를 표시할 때 이름 특성을 사용합니다. NetScaler MAS GUI에서 매개 변수의 표시 방법을 제어하려면 항상 매개 변수에 대한 레이블을 정의해야 합니다.

그러나 API를 사용할 때는 매개 변수가 매개 변수 이름으로 지정됩니다.

이 섹션에는 name 특성 값이 나타내는 매개 변수 3개, 즉 가상 서버 이름에 대한 name, 가상 서버의 IP 주소에 대한 ip 및 부하 분산 방식에 대한 lb-alg가 선언되었습니다.

type은 이러한 매개 변수가 사용할 수 있는 값 유형을 나타냅니다. 예를 들어 name 및 lb-alg는 문자열 값을 사용할 수 있으며 ip 값은 ip 주소 유형이어야 합니다. StyleBook의 매개 변수는 다음과 같은 기본 제공 유형 중 하나일 수 있습니다.

  • string: 문자열입니다. 길이를 지정하지 않은 경우 문자열 값은 모든 수의 문자를 사용할 수 있습니다. 그러나 min-length 및 max-length 특성을 사용하여 문자열 유형의 길이를 제한할 수 있습니다.
  • number: 정수입니다. min-value 및 max-value 특성을 사용하여 이 유형이 사용할 수 있는 최소 및 최대 수를 지정할 수 있습니다.
  • boolean: true 또는 false입니다. 또한 모든 리터럴은 YAML에서 부울로 간주됩니다(예: Yes 또는 No).
  • ipaddress: 유효한 IPv4 또는 IPv6 주소를 나타내는 문자열입니다.
  • tcp-port: 0에서 65535 사이의 숫자로 TCP 또는 UDP 포트를 나타냅니다.
  • password: 쉽게 알 수 없는/비밀 문자열 값입니다. NetScaler MAS GUI에 이 매개 변수의 값이 표시될 때 별표(*****)로 표시됩니다.
  • certfile: 인증서 파일입니다.
  • keyfile: 인증서 키 파일입니다. 
  • file: 이 유형의 매개 변수의 경우 사용자가 인증서 또는 키 파일과 같은 파일을 업로드해야 합니다.
  • object: 여러 요소로 구성되며 각 요소는 매개 변수입니다. 이 유형은 여러 개의 관련된 매개 변수를 하나의 상위 매개 변수로 그룹화하는 데 사용될 수 있습니다.

required: 매개 변수가 필수인지 선택 사항인지를 나타냅니다. true로 설정된 경우 매개 변수가 필수이며 사용자는 이 StyleBook을 사용하여 구성을 만들 때 이 매개 변수에 대한 값을 입력해야 합니다. 기본적으로 모든 매개 변수는 선택 사항입니다. 이 예에서는 nameip가 필수 매개 변수이고 lb-alg는 선택적 매개 변수입니다. lb-alg의 기본값은 "ROUNDROBIN"입니다.

선택적 매개 변수에 기본값을 할당하려면 default 특성을 사용합니다. 구성을 만들 때 사용자가 값을 지정하지 않으면 기본값이 사용됩니다. 예를 들어 lb-alg 매개 변수의 기본값은 ROUNDROBIN입니다.

사용자가 구성을 만들 때 선택할 수 있는 특정 값을 지정하려면 allowed-values 특성을 사용합니다. 이 예에서는 lb-alg 매개 변수에 대해 ROUNDROBIN과 LEASTCONNECTION의 두 개 값이 지정되었습니다.

StyleBook을 NetScaler MAS로 가져와 사용하면 GUI에 이 매개 변수 3개가 포함된 형식이 표시됩니다. name 및 ip 필드에는 문자열과 IP 주소 유형의 값을 입력할 수 있고 lb-alg 필드는 기본값으로 선택된 ROUNDROBIN 드롭다운 목록이 표시됩니다.

메모

기본 제공 유형에 더해 다른 StyleBook이 매개 변수 유형으로 포함될 수 있습니다. 이렇게 하면 다른 StyleBook에 정의된 매개 변수를 재사용할 수 있습니다.

구성 요소

이 StyleBook의 마지막 섹션인 components 섹션은 StyleBook에서 가장 중요한 섹션으로 여겨집니다. 이 섹션에서는 SyleBook으로 만들어야 하는 구성 개체를 정의합니다.

이 예에서는 components 섹션을 다음과 같이 작성해야 합니다.

components:

   -

     name: lbvserver-comp

     type: ns::lbvserver

     properties:

           name: $parameters.name

           servicetype: HTTP

           ipv46: $parameters.ip

           port: 80

           lbmethod: $parameters.lb-alg

이 예에는 하나의 구성 요소만 포함됩니다. 구성 요소의 기본적인 특성은 이름, 유형 및 속성입니다. 구성 요소의 유형은 이 구성 요소가 제공하는 속성을 결정합니다. 구성 요소에는 두 종류의 유형이 있습니다.

  • Built-in type(기본 제공 유형): 이 유형은 시스템을 통해 제공되므로 정의할 필요가 없습니다. 예를 들어 NITRO 엔터티 유형은 "lbvserver" 또는 "servicegroup"입니다. 이 예에서는 기본 제공 구성 요소 유형을 사용합니다.
  • Composite type(복합 유형): 이 유형은 만든 후 NetScaler MAS로 가져온 StyleBook 또는 NetScaler MAS와 함께 제공된 StyleBook입니다. 복합 StyleBook 만들기에서 복합 StyleBook에 대한 자세한 내용을 확인할 수 있습니다.

이 예에는 lbvserver-comp라고 하는 구성 요소가 정의되어 있습니다. 이 구성 요소의 유형은 ns::lbvserver(기본 제공 유형)이며 여기서 "ns"는 import-stylebooks 섹션에서 정의한 netscaler.nitro.config 네임스페이스 및 10.5 버전을 나타내는 접두사이고 "lbvserver"는 이 네임스페이스의 Nitro 리소스입니다.

여기에 정의된 properties는 "lbvserver" 리소스의 특성입니다. 사용 가능한 모든 NetScaler NITRO 리소스 및 해당하는 특성에 대한 자세한 내용은 NetScaler Nitro REST API 설명서를 참조하십시오.

이 섹션의 속성에는 "lbvserver" 리소스의 필수 특성이 포함되며 이러한 특성에 대한 값을 지정할 수 있습니다. 이 예에서는 servicetype 및 port에 대해 정적 값을 지정하고 이름인 ipv46과 lbmethod 속성은 입력 매개 변수의 값을 사용합니다. 나머지 StyleBook에서 $parameters.<매개 변수 이름> 식(예: $parameters.ip)을 사용하여 parameters 섹션에 정의된 매개 변수 이름을 참조할 수 있습니다.

메모

관례적으로 접두사 “ns”는 항상 “import-stylebooks” 섹션에서 NetScaler Nitro 네임스페이스를 지정하는 데 사용됩니다. 필수는 아니지만 일관성을 위해 자체 StyleBook에도 동일한 규칙을 사용하는 것이 좋습니다.

StyleBook 작성

이제 이 StyleBook에 필요한 모든 섹션이 정의되었으니 이 섹션을 하나로 모아 첫 번째 StyleBook을 작성할 수 있습니다. StyleBook 콘텐츠를 복사하고 텍스트 편집기에 붙여 넣은 다음 lb-vserver.yaml로 파일을 저장합니다. 온라인 도구인 http://www.yamllint.com/을 통해 StyleBook 콘텐츠를 실행하면 YAML 구문의 유효성을 검사할 수 있습니다.

lb-vserver.yaml 파일의 전체 콘텐츠는 아래와 같이 재현됩니다.

lb-vserver.yaml 복사

--- 

components:

    description: "This StyleBook component (a Builtin Nitro StyleBook) builds a NetScaler lbvserver configuration object."

    name: lbvserver-comp

    properties: 

      ipv46: $parameters.ip

      lbmethod: $parameters.lb-alg

      name: $parameters.name

      port: 80

      servicetype: SSL

    type: "ns::lbvserver"

description: "This stylebook defines a very simple load balancing SSL virtual server configuration"

display-name: "Load Balancing Virtual Server (SSL)"

import-stylebooks: 

  - 

    namespace: netscaler.nitro.config

    prefix: ns

    version: "10.5"

  - 

    namespace: com.citrix.adc.stylebooks

    prefix: stlb

    version: "1.0"

name: lb-vserver

namespace: com.example.stylebooks

parameters: 

  - 

    description: "Give a name to the application configuration."

    label: "Application Name"

    name: name

    required: true

    type: string

  - 

    description: "The Application VIP that clients access"

    label: "Application Virtual IP (VIP)"

    name: ip

    required: true

    type: ipaddress

  - 

    allowed-values: 

      - ROUNDROBIN

      - LEASTCONNECTION

    default: ROUNDROBIN

    description: "Choose the loadbalancing algorithm (method) used for loadbalancing client requests between the application servers."

    label: "LoadBalancing Algorithm"

    name: lb-alg

    type: string

schema-version: "1.0"

version: "0.1"

StyleBook을 사용하여 구성을 만들려면 NetScaler MAS로 가져온 다음 사용해야 합니다. 자세한 내용은 사용자 정의된 StyleBook을 사용하는 방법을 참조하십시오.

import-stylebooks construct를 사용하여 이 StyleBook을 다른 StyleBook으로 가져올 수도 있습니다. 또는 다음 섹션에서 설명하는 추가 매개 변수 및 구성 요소를 포함하도록 이 StyleBook을 수정할 수 있습니다.

기본 부하 분산 구성을 만드는 StyleBook

이전 섹션에서는 부하 분산 가상 서버를 만드는 기본 StyleBook을 작성했습니다. 이 StyleBook을 다른 이름으로 저장한 다음 기본 부하 분산 구성에 대한 추가 매개 변수 및 구성을 포함하도록 업데이트할 수 있습니다. 이 StyleBook 파일을 basic-lb-config.yaml로 저장합니다.

이 섹션에서는 부하 분산 가상 서버, 서비스 그룹 및 서비스 목록으로 구성된 부하 분산 구성을 만드는 새로운 StyleBook을 설계합니다. 또한 서비스를 서비스 그룹에 바인딩하고 서비스 그룹을 가상 서버에 바인딩합니다.

헤더

이 StyleBook을 작성하려면 먼저 header 섹션을 업데이트해야 합니다. 이 섹션은 부하 분산 가상 서버 StyleBook에 만든 섹션과 유사합니다. header 섹션에서 name 값을 basic-lb-config로 변경합니다. 또한 descriptiondisplay-name을 업데이트하여 이 StyleBook을 적절히 설명합니다. namespaceversion 값은 변경하지 않아도 됩니다. 이름을 변경했으므로 이름, 네임스페이스 및 버전 조합에 따라 이 StyleBook의 고유 식별자가 시스템에 만들어집니다.

     name: basic-lb-config

     description: This StyleBook defines a simple load balancing configuration.

     display-name: Load Balancing Configuration

     namespace: com.example.stylebooks

     schema-version: "1.0"

     version: "0.1"

StyleBook 가져오기

import-stylebooks 섹션은 동일하게 유지됩니다. Nitro 구성 개체를 사용하는 netscaler.nitro.config 네임스페이스를 참조합니다.

     import-stylebooks:

      -

        namespace: netscaler.nitro.config

        prefix: ns

        version: "10.5"

매개 변수

서비스 또는 서버 목록 및 서비스 수신 포트를 정의하는 매개 변수 2개를 추가하도록 parameters 섹션을 업데이트해야 합니다. 처음 3개의 매개 변수인 name, ip 및 lb-alg는 동일하게 유지됩니다.

     parameters:

       -

          name: name

          type: string

          label: Application Name

          description: Name of the application configuration

          required: true

      -

          name: ip

          type: ipaddress

          label: Application Virtual IP (VIP)

          description: Application VIP that the clients access          

          required: true

     -

          name: lb-alg

          type: string

          label: LoadBalancing Algorithm

          description: Choose the load balancing algorithm used for load balancing client requests between the application servers.

          allowed-values:

              - ROUNDROBIN

              - LEASTCONNECTION

          default: ROUNDROBIN

    -

           name: svc-servers

           type: ipaddress[]

           label: Application Server IPs

           description: The IP addresses of all the servers of this application           

          required: true

    -

          name: svc-port

          type: tcp-port

          label: Server Port

          description: The TCP port open on the application servers to receive requests.

          default: 80

이 예에서는 응용 프로그램의 백엔드 서버를 나타내는 서비스의 IP 주소 목록을 허용하는 svc-servers 매개 변수가 추가되었습니다. 이 매개 변수는 required: true로 지정된 것과 같이 필수 매개 변수입니다. 두 번째 매개 변수인 svc-port는 서버가 수신하는 포트 번호를 나타냅니다. 사용자가 지정하지 않은 경우 svc-port 매개 변수의 기본 포트 번호는 80입니다. 

구성 요소

또한 새 매개 변수 2개를 사용하여 완전한 부하 분산 구성을 작성할 수 있도록 components 섹션을 업데이트하여 추가 구성 요소를 정의해야 합니다.

이 예에서는 components 섹션을 다음과 같이 작성해야 합니다.

     components:

      -

        name: lbvserver-comp

        type: ns::lbvserver

        properties:

               name: $parameters.name + "-lb"

               servicetype: HTTP

               ipv46: $parameters.ip

               port: 80

               lbmethod: $parameters.lb-alg

          components:

           -

              name: svcg-comp

              type: ns::servicegroup

              properties:

                      name: $parameters.name + "-svcgrp"

                      servicetype: HTTP

             components:

               -

                  name: lbvserver-svg-binding-comp

                  type: ns::lbvserver_servicegroup_binding

                  properties:

                          name: $parent.parent.properties.name

                          servicegroupname: $parent.properties.name

               -

                  name: members-svcg-comp

                  type: ns::servicegroup_servicegroupmember_binding

                  repeat: $parameters.svc-servers

                  repeat-item: srv

                  properties:

                      ip: $srv

                      port: str($parameters.svc-port)

                      servicegroupname: $parent.properties.name


이 예에서 원래 구성 요소인 lbvserver-comp(이전 예의 구성 요소)에 svcg-comp라는 하위 구성 요소가 만들어졌습니다. svcg-comp 구성 요소 안에는 두 개의 하위 구성 요소가 있습니다. 다른 구성 요소 안에 구성 요소를 중첩하면 중첩된 구성 요소에서 상위 구성 요소의 특성을 참조하여 구성 개체를 만들 수 있습니다. 중첩된 구성 요소는 상위 구성 요소에 만들어진 각 개체에 대해 하나 이상의 개체를 만들 수 있습니다.

svcg-svcg 구성 요소는 "servicegroup" 리소스의 특성에 제공된 값을 사용하여 NetScaler 인스턴스에 서비스 그룹을 만들 때 사용됩니다. 이 예에서는 servicetype에 대해 정적 값을 지정하고 name에는 입력 매개 변수의 값이 사용됩니다. parameters 섹션에 정의된 name 매개 변수는 $parameters.name + "-svcgrp" 표기법을 사용하여 참조합니다. 여기서 "-svcgrp"는 사용자 정의된 이름에 추가(연결)됩니다.

svcg-svcg 구성 요소에는 lbvserver-svg-binding-compmembers-svcg-comp의 하위 구성 요소 2개가 있습니다.

첫 번째 하위 구성 요소인 lbvserver-svg-binding-comp는 상위 구성 요소에 의해 만들어진 서비스 그룹과 상위 구성 요소의 상위 구성 요소가 만든 부하 분산 가상 서버(lbvserver) 간에 구성 개체를 바인딩하는 데 사용됩니다. 상위 구성 요소의 엔터티를 참조할 때는 상위 참조라고도 하는 $parent 표기법이 사용됩니다. 예를 들어 servicegroupname: $parent.properties.name은 상위 구성 요소인 svcg-comp가 만든 서비스 그룹을 참조하고 name: $parent.parent.properties.name은 상위 구성 요소의 상위 구성 요소인 lbvserver-comp가 만든 가상 서버를 참조합니다.

members-svcg 구성 요소는 서비스 목록과 상위 구성 요소가 만든 서비스 그룹 간에 구성 개체를 바인딩하는 데 사용됩니다. StyleBook의 repeat 구조를 사용하여 매개 변수 svc-servers에 지정된 서버 목록을 반복하면 여러 바인딩 구성 개체를 만들 수 있습니다. 반복 작업 중에 이 StyleBook 구성 요소는 서비스 그룹의 각 서비스(repeat-item 구조에서 srv로 참조됨)에 대해 servicegroup_servicegroupmember_binding 유형의 Nitro 구성 개체를 만들고 각 Nitro 구성 개체의 ip 특성을 해당하는 서버의 IP 주소로 설정합니다.

일반적으로 구성 요소에서 repeatrepeat-item 구조를 사용하면 해당 구성 요소를 통해 동일한 유형의 여러 구성 요소 개체를 작성할 수 있습니다. repeat-item 구조에 srv와 같은 변수 이름을 할당하여 반복 작업의 현재 값을 지정할 수 있습니다. 이 변수 이름은 동일한 구성 요소의 속성 또는 하위 구성 요소에서 $으로 표시됩니다(예: $srv).

위의 예에는 각 구성 요소 안에 구성 요소를 중첩하여 이 구성을 쉽게 만들었습니다. 이 특정 구성의 경우 구성 요소를 중첩하지 않아도 구성을 작성할 수 있습니다. 아래에 표시된 것과 같이 중첩 없이도 동일한 결과를 얻을 수 있습니다.

     components:

      -

          name: members-svcg-comp

          type: ns::servicegroup_servicegroupmember_binding

          repeat: $parameters.svc-servers

          repeat-item: srv

          properties:

               ip: $srv

               port: str($parameters.svc-port)

               servicegroupname: $components.svcg-comp.properties.name

     -

          name: lbvserver-svg-binding-comp

          type: ns::lbvserver_servicegroup_binding

          properties:

                 name: $components.lbvserver-comp.properties.name

                 servicegroupname: $components.svcg-comp.properties.name

      -    

          name: lbvserver-comp

          type: ns::lbvserver

          properties:

                name: $parameters.name + "-lb"

                servicetype: HTTP

                ipv46: $parameters.ip

                port: 80

                lbmethod: $parameters.lb-alg

       -

          name: svcg-comp

          type: ns::servicegroup

          properties:

               name: $parameters.name + "-svcgrp"

               servicetype: HTTP
  

여기서는 모든 구성 요소가 동일한 수준(즉, 중첩되지 않음)에 있지만 달성되는 결과(생성된 NetScaler 구성)는 이전에 사용된 중첩된 구성 요소의 결과와 동일합니다. 또한 StyleBook에서 구성 요소가 선언되는 순서는 구성 개체를 만드는 순서에 영향을 미치지 않습니다. 이 예에서 svcg-complbvserver-comp 구성 요소는 마지막에 선언되었지만 두 번째 구성 요소인 lbvserver-svg-binding-comp에 이러한 구성 요소에 대한 이후 참조가 있으므로 두 번째 구성 요소가 작성되기 전에 작성되어야 합니다.  

메모

관례적으로 StyleBook의 이름, 매개 변수, 대체, 구성 요소 및 출력은 소문자입니다. 여러 단어가 포함되는 경우 "-" 문자로 구분됩니다. 예를 들어 "lb-bindings", "app-name", "rewrite-config"와 같이 구분됩니다. 다른 규칙은 구성 요소 이름에 "-comp" 문자열을 접미사로 추가하는 것입니다. 

출력

새 StyleBook에 추가할 수 있는 마지막 섹션은 outputs 섹션입니다. 이 섹션에서는 이 StyleBook을 사용하여 구성을 만든 후 사용자(또는 다른 StyleBook)에 노출할 항목을 지정합니다. 예를 들어 이 StyleBook에서 만든 lbvserver 및 servicegroup 구성 개체를 노출하도록 outputs 섹션에서 지정할 수 있습니다.

outputs:

 -

     name: lbvserver-comp

     value: $components.lbvserver-comp

     description: The component that builds the Nitro lbvserver configuration object

 -

    name: servicegroup-comp

    value: $components.svcg-comp

    description: The component that builds the Nitro servicegroup configuration object

StyleBook의 outputs 섹션은 선택 사항입니다. StyleBook이 출력을 반환해야 하는 것은 아닙니다. 그러나 일부 내부 구성 요소를 출력으로 반환하면 복합 StyleBook을 만들 때와 같이 이 StyleBook을 가져오는 모든 StyleBook을 보다 유연하게 사용할 수 있습니다.

메모

출력 섹션에 StyleBook 구성 요소의 단일 속성만 노출하지 말고 전체 구성 요소를 노출하는 것이 좋습니다(예: 단지 $components.lbvserver-comp.properties.name 이름이 아닌 전체 $components.lbvserver-comp 노출). 또한 특정 출력이 나타내는 항목에 대한 설명을 출력에 추가하는 것이 좋습니다. 

StyleBook 작성

이제 이 StyleBook에 필요한 모든 섹션이 정의되었으니 이 섹션을 하나로 모아 두 번째 StyleBook을 작성할 수 있습니다. 이 StyleBook 파일은 이미 basic-lb-config.yaml로 저장되었습니다. 온라인 도구인 http://www.yamllint.com/을 통해 StyleBook 콘텐츠를 실행하면 YAML 구문의 유효성을 검사할 수 있습니다.

basic-lb-config.yaml 파일의 전체 콘텐츠는 아래와 같이 재현됩니다.

basic-lb-config.yaml 복사

name: basic-lb-config

namespace: com.example.stylebooks

version: "0.1"

display-name: Load Balancing Configuration

description: This StyleBook defines a simple load balancing configuration.

schema-version: "1.0"

import-stylebooks:

  -

    namespace: netscaler.nitro.config

    version: "10.5"

    prefix: ns

parameters:

  -

    name: name

    type: string

    label: Application Name

    description: Give a name to the application configuration.

    required: true

  -

    name: ip

    type: ipaddress

    label: Application Virtual IP (VIP)

    description: The Application VIP that clients access

    required: true

  -

    name: lb-alg

    type: string

    label: LoadBalancing Algorithm

    description: Choose the loadbalancing algorithm (method) used for loadbalancing client requests between the application servers.

    allowed-values:

      - ROUNDROBIN

      - LEASTCONNECTION

    default: ROUNDROBIN

  -

    name: svc-servers

    type: ipaddress[]

    label: Application Server IPs

    description: The IP addresses of all the servers of this application

    required: true

  -

    name: svc-port

    type: tcp-port

    label: Server Port

    description: The TCP port open on the Application Servers to receive requests.

    default: 80

components:

  -

    name: lbvserver-comp

    type: ns::lbvserver

    properties:

      name: $parameters.name + "-lb"

      servicetype: HTTP

      ipv46: $parameters.ip

      port: 80

      lbmethod: $parameters.lb-alg

    components:

      -

        name: svcg-comp

        type: ns::servicegroup

        properties:

          servicegroupname: $parameters.name + "-svcgrp"

          servicetype: HTTP

        components:

            -

              name: lbvserver-svg-binding-comp

              type: ns::lbvserver_servicegroup_binding

              properties:

                name: $parent.parent.properties.name

                servicegroupname: $parent.properties.servicegroupname

            -

              name: members-svcg-comp

              type: ns::servicegroup_servicegroupmember_binding

              repeat: $parameters.svc-servers

              repeat-item: srv

              properties:

                ip: $srv

                port: $parameters.svc-port

                servicegroupname: $parent.properties.servicegroupname

outputs:

  -

    name: lbvserver-comp

    value: $components.lbvserver-comp

    description: The component that builds the Nitro lbvserver configuration object

  -

    name: servicegroup-comp

    value: $components.lbvserver-comp.components.svcg-comp

    description: The component that builds the Nitro servicegroup configuration object

StyleBook을 사용하여 구성을 만들려면 NetScaler MAS로 가져온 다음 사용해야 합니다. 자세한 내용은 사용자 정의된 StyleBook을 사용하는 방법을 참조하십시오.

또한 다음 섹션에 설명된 것과 같이 이 StyleBook을 다른 StyleBook으로 가져와 속성을 사용할 수 있습니다.

복합 StyleBook 만들기

StyleBook의 중요하면서도 강력한 기능은 다른 StyleBook의 기반으로 사용될 수 있다는 점입니다. Nitro 기본 제공 StyleBook과 마찬가지로 StyleBook을 다른 StyleBook으로 가져와 두 번째 StyleBook의 구성 요소가 사용하는 type으로 참조할 수 있습니다.

예를 들어 이전 섹션에서 작성한 basic-lb-config StyleBook을 사용하여 composite-example이라는 다른 StyleBook을 작성할 수 있습니다. "basic-lb-config" StyleBook을 사용하려면 새 StyleBook의 import-stylebooks 섹션에서 이 StyleBook을 가져와야 합니다.

새 StyleBook은 다음과 같을 수 있습니다.

composite-example.yaml 복사

name: composite-example

namespace: com.example.stylebooks

version: "0.1"

display-name: Load Balancing Virtual Server (HTTP/RoundRobin)

description: This StyleBook defines a RoundRobin load balancing configuration with a monitor.

schema-version: "1.0"

import-stylebooks:

  -

    namespace: netscaler.nitro.config

    version: "10.5"

    prefix: ns

  -

    namespace: com.example.stylebooks

    version: "0.1"

    prefix: stlb

parameters:

  -

    name: name

    type: string

    label: Application Name

    description: Give a name to the application configuration.

    required: true

  -

    name: ip

    type: ipaddress

    label: Application Virtual IP (VIP)

    description: The Application VIP that clients access

    required: true

  -

    name: svc-servers

    type: ipaddress[]

    label: Application Server IPs

    description: The IP addresses of all the servers of this application

    required: true

components:

  -

    name: basic-lb-comp

    type: stlb::basic-lb-config

    description: This component's type is another StyleBook that builds the NetScaler lbvserver, servicegroups and services configuration objects.

    properties:

      name: $parameters.name

      ip: $parameters.ip

      svc-servers: $parameters.svc-servers

  -

    name: monit-comp

    type: ns::lbmonitor

    description: This component is a basic Nitro type (a Builtin StyleBook) that builds the NetScaler monitor configuration object.

    properties:

      monitorname: $parameters.name + "-mon"

      type: HTTP

      respcode:str("200")

      httprequest: "'GET /'"

      lrtm: ENABLED

      secure: "YES"

    components:

      -

        name: monit-svcgrp-bind-comp

        type: ns::servicegroup_lbmonitor_binding

        properties:

          servicegroupname: $components.basic-lb-comp.outputs.servicegroup-comp.properties.servicegroupname

          monitor_name: $parent.properties.monitorname

import-stylebooks 섹션에서 "stlb" 접두사로 참조되는 네임스페이스 및 버전을 사용하여 basic-lb-config StyleBook을 가져옵니다.

components 섹션에서 구성 요소 2개를 정의합니다. 첫 번째 구성 요소는 stlb::basic-lb-config 유형입니다. 여기서 "basic-lb-config"는 기본 부하 분산 구성을 만드는 StyleBook에서 만든 StyleBook의 이름입니다. 이 구성 요소에 대해 정의되는 속성은 basic-lb-config StyleBook에서 선언된 필수 매개 변수에 해당합니다. 그러나 StyleBook의 모든 매개 변수(필수 및 선택)를 사용할 수 있습니다. lbvserver, 서비스 그룹 및 서비스 및 서비스 그룹 바인딩을 다시 작성할 필요 없이 하나의 구성 요소로 이 모든 작업을 수행하는 StyleBook을 가져와 새 StyleBook에서 이러한 구성 개체를 만들 수 있습니다.

StyleBook은 Nitro 리소스 특성인 "lbmonitor"(기본 제공 StyleBook)를 사용하는 두 번째 구성 요소인 "monit-comp"를 추가하여 모니터 구성 개체를 만듭니다. 여기에는 첫 번째 구성 요소에서 만들어진 서비스 그룹에 모니터를 바인딩하는 바인딩 구성 개체를 만들기 위한 "monit-svcgrp-bind-comp" 하위 구성 요소도 포함됩니다. "basic-lb-config" StyleBook에서 만든 servicegroup 구성 요소가 출력으로 노출되므로 이 StyleBook에서 $components.basic-lb-comp.outputs.servicegroup-comp 식을 사용하여 액세스할 수 있습니다. StyleBook을 가져와 다른 방법으로는 액세스할 수 없는 구성 요소를 가져온 StyleBook에서 outputs 섹션을 사용하여 액세스하는 방법의 예입니다.

다음으로 StyleBook 콘텐츠를 복사하고 텍스트 편집기에 붙여 넣은 다음 composite-example.yaml로 파일을 저장합니다. 온라인 도구인 http://www.yamllint.com/을 통해 StyleBook 콘텐츠를 실행하면 YAML 구문의 유효성을 검사할 수 있습니다. 그런 다음 NetScaler MAS로 가져와 이 StyleBook을 사용하여 하나 이상의 구성을 만듭니다.

GUI 특성을 사용하여 StyleBook 사용자 지정

StyleBook의 parameters 섹션에 GUI 특성을 추가하면 NetScaler MAS GUI에 직관적인 필드를 표시할 수 있습니다.

: label 특성을 사용하여 매개 변수에 대한 설명적 이름을 추가하고 description 특성을 사용하여 이 매개 변수에 대한 도구 설명을 추가할 수 있습니다.

name: ip

label: 가상 서버 IP 주소

description: 부하 분산된 응용 프로그램을 나타내는 가상 서버의 IP 주소

type: ipaddress

required: true

: 개체 유형의 매개 변수가 있는 경우 gui 특성을 사용하여 레이아웃을 정의할 수 있습니다. 이 예에서 레이아웃은 필드가 두 개의 열로 표시되는 축소 가능한 개체입니다.

name: svcg-advanced

label: 고급 응용 프로그램 서버 설정

type: object

required: false

gui:

     collapse_pane: true

     columns: 2

: 다른 StyleBook의 기반으로 사용되는 일부 StyleBook의 경우 사용자가 직접 사용하는 것이 아니므로 NetScaler MAS GUI에 표시되지 않도록 할 수 있습니다. 이 경우 private 특성을 사용하면 NetScaler MAS GUI에 StyleBook이 나열되지 않습니다.

name: basic-lb-config

description: This stylebook defines a simple load balancing configuration.

display-name:Load Balancing Configuration

namespace: com.example.stylebooks

private: true

schema-version: "1.0"

version: "0.1"