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を選択できます。
このStyleBookは選択したNetScalerを使用し、すべてのlbvserver
エンティティを反復処理します。SSL仮想サーバーを選択し、各仮想サーバーで許可される SSL プロトコルバージョンを設定します。
次の式を使用すると、NetScalerインスタンス内のlbvserver
エンティティのリストを反復処理できます。
repeat: $parameters.selected-adc.collections.lbvserver
<!--NeedCopy-->
-
collections
:NetScalerインスタンス上のすべてのエンティティタイプを指します。たとえばcsvserver
、lbmonitor
、servicegroup
など。 -
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-->
この例では、選択されたdatum
はlbvserver
です 。そのため、name
、servicetype
、ipv46
など、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インスタンスのコンテンツスイッチ仮想サーバーのリストを返します。
また、次の式は、lbvservers
とservicegroups
の間にあるすべてのバインディングのリストを返します 。
$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 インスタンス内のサービスグループを指します。