StyleBookの設定

NetScalerインスタンスをデータソースとして使用する

管理対象のNetScalerインスタンスをデータソースとして使用できます。 managed-adc は組み込みのデータソースタイプで、ADM のデータソースとして簡単に使用できます。NetScalerコンソールで管理されている各NetScalerインスタンスは、デフォルトでデータソースです。構成パックの作成時にNetScaler Consoleで管理されている既存のNetScalerのデータが必要な場合は、これらのデータソースをStyleBooksで使用し始めることができます。

StyleBookの定義で、 datum ビルトインのタイプパラメータを指定します。そのため、StyleBookのデータソースタイプを使用できます。StyleBookユーザーは、そのソースからデータを取得するために使用できるデータソースを選択できます。

収集せずに組み込みデータソースを使用する

parameters:
  -
    name: selected-adc
    label: Select an existing NetScaler
    type: datum
    required: true
    data-source:
      type: managed-adc
<!--NeedCopy-->

この例では、 パラメーターdatumを使用してADMが管理する任意のNetScalerインスタンスを選択します。 組み込みデータソースによりmanaged-adc、NetScaler コンソールで管理されている任意のNetScalerインスタンスからデータを取得できます。

StyleBookでは、選択したNetScalerインスタンスのすべての構成にアクセスできます。また、同じNetScalerまたは別のNetScalerインスタンスで構成を作成または更新するときに、その構成を使用できます。これは、選択したターゲットNetScalerインスタンスによって異なります。

データソースからコレクションを選択してください:

選択したNetScalerインスタンスでコレクションにアクセスするには、次の式を使用します。

$parameters.selected-adc.collections.<collection-name>
<!--NeedCopy-->

例:

$parameters.selected-adc.collections.lbvserver
<!--NeedCopy-->

この式は、選択したNetScalerインスタンスのlbvserverエンティティのリストを返します。たとえば、このリストを繰り返し処理して、 特定の条件を満たす特定のlbvserverを選択できます。

コレクションなしのStyleBook の例

name: add-vservers-from-managed-adc-instances
namespace: com.citrix.adc.stylebooks
version: "1.0"
schema-version: "1.0"

import-stylebooks:
  -
    namespace: netscaler.nitro.config
    prefix: ns
    version: "10.5"

parameters:
    -
      name: selected-adc
      label: Select a NetScaler instance
      type: datum
      required: true
      data-source:
        type: "managed-adc"

components:
  -
    name: sslvserver-comp
    type: ns::sslvserver
    repeat: $parameters.selected-adc.collections.lbvserver
    repeat-item: lbvs
    repeat-condition: $lbvs.attributes.servicetype == "SSL"
    properties:
      name: $lbvs.attributes.name
      ssl2: DISABLED
      ssl3: DISABLED
      tls1: DISABLED
      tls11: ENABLED
      tls12: ENABLED
<!--NeedCopy-->

構成パックGUIには、NetScaler Consoleによって管理されているNetScalerインスタンスが表示され、StyleBookユーザーは構成パックを作成または更新するときに任意のNetScalerを選択できます。

ビルトインのNetScalerデータソース (収集なし)

このStyleBookは選択したNetScalerを使用し、すべてのlbvserverエンティティを反復処理します。SSL仮想サーバーを選択し、各仮想サーバーで許可される SSL プロトコルバージョンを設定します。

次の式を使用すると、NetScalerインスタンス内のlbvserverエンティティのリストを反復処理できます。

repeat: $parameters.selected-adc.collections.lbvserver
<!--NeedCopy-->
  • collections:NetScalerインスタンス上のすべてのエンティティタイプを指します。たとえばcsvserverlbmonitorservicegroupなど。

  • lbvserver:NetScalerインスタンス内の負荷分散仮想サーバーエンティティのリストを指します。

組み込みデータソースとコレクションの使用

parameters:
  -
    name: selected-lbvserver
    label: Select an existing lbvserver
    type: datum
    required: true
    data-source:
      type: managed-adc
      collection: lbvserver
<!--NeedCopy-->

この例では、datumパラメーターを使用して、ユーザーがNetScalerインスタンスとmanaged-adcデータソースタイプからの特定のlbvserverインスタンスの両方を選択できるようにします。

セクションでコレクションタイプを定義parametersすると、StyleBookユーザーはNetScalerインスタンスとそのインスタンスのコレクションから特定のエンティティを選択できます。

コレクション付きの組み込みインスタンスデータソース

コレクションの属性を選択:

StyleBookユーザーが仮想サーバーを選択すると、StyleBook内の次の式は選択した項目の任意の属性にアクセスできます。

$parameters.selected-lbvserver.attributes.<attribute-name>
<!--NeedCopy-->

この例では、選択されたdatumlbvserverです 。そのため、nameservicetypeipv46など、NetScalerエンティティlbvserverの任意の属性にアクセスできます。

例:

$parameters.selected-lbvserver.attributes.ipv46
<!--NeedCopy-->

この式は、選択した負荷分散仮想サーバーのIPを取得します。NetScalerエンティティ (コレクション) とその属性について詳しくは、「 NetScaler NITRO APIリファレンス」を参照してください。

コレクションのリストを選択してください

StyleBookユーザーは、管理対象NetScalerインスタンス上の特定のエンティティを選択できるだけでなく、選択したNetScalerインスタンスの同じコレクションまたは異なるコレクションから任意のエンティティにアクセスすることもできます。そのNetScalerインスタンスの別のコレクションにアクセスするには、componentsセクションで次の式を使用します。

$parameters.selected-lbvserver.datasource.collections.<collection-name>
<!--NeedCopy-->

例:

$parameters.selected-lbvserver.datasource.collections.csvserver
<!--NeedCopy-->

この式は、選択したNetScalerインスタンスのコンテンツスイッチ仮想サーバーのリストを返します。

また、次の式は、lbvserversservicegroupsの間にあるすべてのバインディングのリストを返します 。

$parameters.selected-lbvserver.datasource.collections.lbvserver_servicegroup_binding
<!--NeedCopy-->

コレクションを含むStyleBook の例

以下は、マネージドNetScalerインスタンスをデータソースとして使用する方法を示すStyleBookの例です。

---
name: bind-lb-to-servicegroup-using-ADC-as-datasource
namespace: com.citrix.adc.stylebooks
version: "1.1"
display-name: "HTTP/SSL LoadBalancing StyleBook with Service Binding"
description: "This stylebook defines a typical Load Balanced Application configuration where we allow the user to select an existing lbvserver on the NetScaler using datum type parameter. Then a servicegroup for the selected lb is created if it does not exist on the NetScaler. Finally, the selected lbvserver is bound to the service "
schema-version: "1.0"
import-stylebooks:
  -
    namespace: netscaler.nitro.config
    prefix: ns
    version: "10.5"

parameters:
  -
    name: selected-vserver
    label: "Select an Existing VServer"
    description: "Load Balancing Application Vservers to be bound to service on the ADC"
    type: datum
    required: true
    data-source:
      type: managed-adc
      collection: lbvserver
  -
    name: services
    label: Services
    type: object[]
    required: true
    parameters:
      -
        name: ip
        label: IP address
        type: ipaddress
        required: true
      -
        name: port
        label: Port
        type: tcp-port
        required: true

components:
  -
    name: servicegroup-discovery-comp
    type: object
    repeat: $parameters.selected-vserver.datasource.collections.servicegroup
    repeat-item: svcgrp
    repeat-condition: $svcgrp.attributes.servicegroupname ==  $parameters.selected-vserver.attributes.name + "-svcgrp"
    properties:
      servicegroupname: $svcgrp.attributes.servicegroupname
  -
    name: servicegroup-creation-if-not-exists-comp
    type: ns::servicegroup
    condition: not exists($components.servicegroup-discovery-comp)
    properties:
      servicegroupname: $parameters.selected-vserver.attributes.name + "-svcgrp"
      servicetype: $parameters.selected-vserver.attributes.servicetype
  -
    name: servicegroupmember-comp
    type: ns::servicegroup_servicegroupmember_binding
    repeat: $parameters.services
    repeat-item: service
    properties:
      servicegroupname: if-then-else($components.servicegroup-discovery-comp, $components.servicegroup-discovery-comp.properties.servicegroupname, $components.servicegroup-creation-if-not-exists-comp.properties.servicegroupname)
      ip: $service.ip
      port: $service.port
<!--NeedCopy-->

このStyleBookでは、componentsセクションは、svcgrpと連結された選択した負荷分散仮想サーバー名と一致するサービスグループ名を確認します 。

選択した負荷分散仮想サーバーの名前がlbv1の場合 、 このStyleBookは名前lbv1-svcgrpのサービスグループをチェックします。見つからない場合は、 lbv1-svcgrp サービスグループを作成し、 lbv1 仮想サーバーにバインドします。

次の式は、NetScalerインスタンス内のサービスグループのリストを取得します。

repeat: $parameters.selected-vserver.datasource.collections.servicegroup
<!--NeedCopy-->

この式では:

  • datasource: ADMによって管理されている選択されたNetScalerインスタンスを指します。

  • collections:NetScaler インスタンス内のすべてのエンティティを指します。

  • servicegroup: NetScaler インスタンス内のサービスグループを指します。

NetScalerインスタンスをデータソースとして使用する