ロードバランシング仮想サーバーを作成するためのStyleBook
この例では、HTTPプロトコルタイプでポート80をリッスンするロードバランシング仮想サーバーを作成する基本的なStyleBookを設計します。仮想サーバー名、IPアドレス、およびロードバランシングメソッドの各パラメータは、ユーザー定義の値を受け入れます。つまり、これらはStyleBookのパラメータです。
ヘッダー
StyleBookの最初の6行はヘッダーセクションで構成されます。この例では、ヘッダーセクションは次のように記述されています。
name: lb-vserver
namespace: com.example.stylebook
version: "1.0"
display-name: Load Balancing Virtual Server (HTTP)
description: "This stylebook defines a very simple load balancing HTTP virtual server configuration"
schema-version: "1.0"
ヘッダーセクションには、以下の詳細が含まれます。
-
name: このStyleBookの名前。
-
description: このStyleBookが何をするかを定義する説明。この説明はNetScaler Consoleに表示されます。
-
display-name: NetScaler Consoleに表示されるStyleBookの記述的な名前。
-
namespace: 名前空間は、名前の衝突を避けるためにStyleBookの一意の識別子の一部を形成します。
-
schema-version: このリリースでは常に「1.0」の値を取ります。
-
version: StyleBookのバージョン番号。StyleBookを更新するときにバージョン番号を変更できます。
name、namespace、およびversionの組み合わせは、システム内でStyleBookを一意に識別します。NetScaler Consoleでは、名前、名前空間、およびバージョンの組み合わせが同じ2つのStyleBookを持つことはできません。ただし、同じ名前とバージョンで異なる名前空間を持つ2つのStyleBook、または同じ名前空間とバージョンで異なる名前を持つ2つのStyleBookを持つことはできます。
注
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"
すべてのStyleBookは、NITRO構成オブジェクトを直接使用する場合、netscaler.nitro.config名前空間を参照する必要があります。この名前空間には、lbvserverなどのすべてのNetScaler NITROタイプが含まれています。ソフトウェアバージョン10.5以降がサポートされているため、StyleBookを使用して、リリース10.5以降を実行している任意のNetScalerインスタンスで構成を作成および実行できます。
import-stylebooksセクションで使用されるプレフィックスは、名前空間とバージョンの組み合わせを参照するための短縮形です。この場合、nsはバージョン10.5のnetscaler.nitro.configを参照します。StyleBookの後のセクションでは、インポートされたStyleBookを参照するために名前空間とバージョンを使用する代わりに、上記の例のように、選択したプレフィックス文字列(例:ns)を使用できます。
StyleBookで使用されるバージョンは、NetScaler NITROバージョンです。NITROバージョンXに基づいているStyleBookは、バージョンX以降の任意のNetScalerを構成するために使用できます。
注
StyleBookがバージョン10.5以降の任意のNetScalerインスタンスを構成するために使用できるようにするには、Citrixは、最大限の互換性のために、NITRO組み込みStyleBookを直接使用するStyleBook(名前空間: netscaler.nitro.config、バージョン: 10.5)でNITRO 10.5名前空間をインポートすることを推奨します。
他のStyleBookをインポートするStyleBookは、インポートするStyleBookと同じかそれ以上のNITROバージョンに基づいている必要があります。たとえば、NITROバージョン10.5に基づいているStyleBookは、11.1に基づいているStyleBookに依存したり、使用したり、インポートしたりすることはできません。しかし、バージョン11.1に基づいているStyleBookは、11.1より前の任意のバージョンに基づいているStyleBookをインポートできます。
NITRO名前空間をまったくインポートしないStyleBookも可能です。つまり、StyleBookはNITROコンポーネントを直接定義する必要はなく、NITROコンポーネントを定義するStyleBookをインポート(依存)できます。他のStyleBookをインポートするStyleBookは、その依存関係の階層内で常に最高のNITROバージョンを取得します。そして、そのバージョン以降のNetScalerを構成するために使用されます。
パラメータ
パラメータセクションでは、StyleBookで必要となるすべてのパラメータを宣言できます。StyleBook開発者として、StyleBookのユーザーに指定してもらいたい入力内容を決定する必要があります。この例では、仮想サーバーの名前、そのIPアドレス、および負荷分散方法をユーザーが提供する必要があるようにStyleBookを構築しています。
パラメータセクションは次のようになります。
parameters:
-
name: name
label: "Application Name"
description: "Give a name to the application configuration."
type: string
required: true
-
name: vip-ipaddress
label: "Load Balancer IP Address"
description: "The Application VIP that clients access"
type: ipaddress
required: true
-
name: lb-alg
label: LB Algorithm
description: Load Balancing Algorithm
type: string
default: ROUNDROBIN
allowed-values:
- ROUNDROBIN
- LEAST-CONNECTION
注
パラメータのラベルを指定しない場合、NetScaler Consoleはこのパラメータを表示する際にname属性を使用します。NetScaler Consoleでの表示方法を制御できるように、パラメータには常にラベルを定義する必要があります。
ただし、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: TCP または UDP ポートを表す、0 から 65535 までの数値です。
-
password: 不透明な/秘密の文字列値です。NetScaler Console がこのパラメーターの値を表示する場合、アスタリスク (*****) で表示されます。
-
certfile: 証明書ファイルです。
-
keyfile: 証明書秘密鍵ファイルです。
-
file: この型のパラメーターは、ユーザーがファイル (例: 証明書ファイルやキーファイル) をアップロードする必要があります。
-
object: 複数の要素で構成され、これらの各要素がパラメーターです。この型は、複数の関連するパラメーターを1つの親パラメーターの下にグループ化するために使用できます。
-
required: パラメーターが必須かオプションかを示します。true に設定されている場合、そのパラメーターは必須であり、この StyleBook を使用して構成を作成する際に、ユーザーはこのパラメーターの値を指定する必要があります。デフォルトでは、すべてのパラメーターはオプションです。この例では、name と ip は必須パラメーターですが、lb-alg はオプションパラメーターであり、そのデフォルト値は「ROUNDROBIN」です。
オプションパラメーターにデフォルト値を割り当てるには、default 属性を使用します。構成を作成する際に、ユーザーが値を指定しない場合、デフォルト値が使用されます。たとえば、lb-alg パラメーターの場合、デフォルト値は ROUNDROBIN です。
構成を作成する際にユーザーが選択できる特定の値を定義するには、allowed-values 属性を使用します。この例では、lb-alg パラメーターに ROUNDROBIN と LEASTCONNECTION の2つの値を指定しました。
StyleBookをインポートして使用すると、NetScaler Consoleにこれら3つのパラメータを含むフォームが表示されます。名前とIPに表示されるフィールドには、文字列と
ipaddress型の値を入力でき、lb-algフィールドは、ROUNDROBINがデフォルト値として選択されたドロップダウンリストとして表示されます。
注
組み込み型に加えて、パラメータは別のStyleBookをその型として持つことができます。これは、他のStyleBookで定義されたパラメータを再利用する方法です。
コンポーネント
このStyleBookの最後のセクションはコンポーネントセクションと呼ばれ、StyleBookの中で最も重要なセクションと見なされます。このセクションでは、StyleBookによって作成される構成オブジェクトを定義します。
この例では、コンポーネントセクションを次のように記述する必要があります。
components:
-
name: lbvserver-comp
description: This StyleBook component (a Builtin Nitro StyleBook) builds a NetScaler lbvserver configuration object.
type: ns::lbvserver
properties:
name: $parameters.name
ipv46: $parameters.vip-ipaddress
lbmethod: $parameters.lb-alg
servicetype: HTTP
port: 80
この例には、コンポーネントが1つだけ含まれています。コンポーネントの主な属性は、名前、タイプ、プロパティです。コンポーネントのタイプは、このコンポーネントが提供するプロパティを決定します。コンポーネントには次の2種類があります。
-
組み込み型: このタイプはシステムによって提供され、定義する必要はありません。たとえば、NITROエンティティタイプ
lbvserverまたはservicegroupなどです。この例では、組み込みコンポーネントタイプを使用しています。 -
複合型: このタイプは、作成してNetScaler ConsoleにインポートしたStyleBook、またはNetScaler Consoleに付属しているデフォルトのStyleBookです。複合StyleBookの作成で複合StyleBookについて詳しく学ぶことができます。
この例では、lbvserver-compというコンポーネントを定義しました。このコンポーネントはns::lbvserverタイプ(組み込みのNITROタイプ)です。「ns」は、import-stylebooksセクションで指定した名前空間netscaler.nitro.configおよびバージョン10.5を参照するプレフィックスであり、
lbvserverはこの名前空間内のNITROリソースです。
ここで定義されているpropertiesは、
lbvserverリソースの属性です。利用可能なすべてのNetScaler NITROリソースとその属性の詳細については、NetScaler NITRO REST APIドキュメントを参照してください。
このセクションのプロパティには、
lbvserverリソースの必須属性が含まれており、これらの属性の値を指定できます。この例では、servicetypeとポートに静的な値を指定していますが、名前、ipv46、およびlbmethodプロパティは入力パラメータから値を取得します。StyleBookの残りの部分では、**$parameters.\<parameter-name\>**式(例: $parameters.ip)を使用して、parametersセクションで定義されたパラメータ名を参照できます。
注
慣例により、プレフィックス「ns」は「import-stylebooks」セクションでNetScaler NITRO名前空間を指定するために常に使用されます。必須ではありませんが、Citrixは一貫性のために独自のStyleBookでも同じ慣例を使用することを推奨しています。
StyleBookを構築する
このStyleBookの必要なセクションをすべて定義したので、それらをすべてまとめて、最初のStyleBookを構築します。StyleBookの内容をテキストエディタにコピーして貼り付け、ファイルをlb-vserver.yamlとして保存します。Citrixは、StyleBooksに組み込まれているYAMLバリデーターを使用してYAMLコンテンツを検証およびインポートすることを推奨しています。
ファイルlb-vserver.yamlの全内容は以下のとおりです。
name: lb-vserver
namespace: com.example.stylebook
version: "1.0"
display-name: Load Balancing Virtual Server (HTTP)
description: "This stylebook defines a very simple load balancing HTTP virtual server configuration"
schema-version: "1.0"
import-stylebooks:
-
namespace: netscaler.nitro.config
version: "10.5"
prefix: ns
-
namespace: com.citrix.adc.stylebooks
version: "1.0"
prefix: stlb
parameters:
-
name: name
label: "Application Name"
description: "Give a name to the application configuration."
type: string
required: true
-
name: vip-ipaddress
label: "Load Balancer IP Address"
description: "The Application VIP that clients access"
type: ipaddress
required: true
-
name: lb-alg
label: LB Algorithm
description: Load Balancing Algorithm
type: string
default: ROUNDROBIN
allowed-values:
- ROUNDROBIN
- LEAST-CONNECTION
components:
-
name: lbvserver-comp
description: This StyleBook component (a Builtin Nitro StyleBook) builds a NetScaler lbvserver configuration object.
type: ns::lbvserver
properties:
name: $parameters.name
ipv46: $parameters.vip-ipaddress
lbmethod: $parameters.lb-alg
servicetype: HTTP
port: 80
StyleBookを使用して構成を作成するには、NetScaler Consoleにインポートしてから使用する必要があります。詳細については、「ユーザー定義StyleBookの使用方法」を参照してください。
このStyleBookを他のStyleBookにインポートすることもできます(import-stylebooksコンストラクトを使用)。または、次のセクションで説明するように、このStyleBookを修正して、より多くのパラメータとコンポーネントを含めることもできます。