負荷分散仮想サーバーを作成するStyleBook
この例で設計する基本的なStyleBookでは、プロトコルのタイプがHTTPで、ポート80でリッスンする負荷分散仮想サーバーを作成します。仮想サーバーの名前、IPアドレス、負荷分散方式の各パラメーターには、ユーザーが定義した値を指定できます(これらはStyleBookのパラメーターです)。
Header
StyleBookの先頭の6行は、Headerセクションです。この例の場合、Headerセクションは、次のように記述されています。
name:lb-vservernamespace:com.example.stylebookversion:"1.0"display-name:Load Balancing Virtual Server (HTTP)description:"ThisstylebookdefinesaverysimpleloadbalancingHTTPvirtualserverconfiguration"schema-version:"1.0"
Headerセクションには、次の情報が記述されています。
- name:このStyleBookの名前。
- description:このStyleBookの実行内容を示す説明。この説明は NetScaler ADM に表示されます。
- 表示名:NetScaler ADM に表示されるスタイルブックの説明的な名前。
- namespace:名前空間は、StyleBookの一意の識別子の一部で、これにより名前の衝突を回避できます。
- スキーマバージョン: このリリースでは常に「1.0」の値を取ります。
- version:StyleBookのバージョン番号。バージョン番号は、StyleBookの更新時に変更できます。
name、namespace、およびversionの組み合わせにより、システム内でStyleBookが一意に識別されます。NetScaler ADM では、名前、名前空間、およびバージョンの組み合わせが同じ2つのStyleBookを使用することはできません。ただし、nameとversionが同じであってもnamespaceが異なる場合、またはnamespaceとversionが同じであってもnameが異なる場合は、それらの2つのStyleBookを使用できます。
注
StyleBookを更新して、versionの番号が更新された場合を想定してください。別のStyleBookでこのStyleBookを参照している(つまりインポートしている)場合は、インポート元のStyleBookの正しいバージョン番号が使用されるように、別のStyleBookを確実に更新して、インポートされるStyleBookの正しいバージョンが使われるようにしてください。
StyleBookのインポート
ヘッダーの後のセクションは「インポートスタイルブック」と呼ばれます。このセクションで、現在のStyleBookで参照する他のStyleBookの名前空間とバージョン番号を宣言する必要があります。このセクションを記述すると、他のStyleBookをインポートして再利用できるため、StyleBookで同じ構成を再作成する必要がなくなります。
この例の場合、import-stylebooksセクションは、次のように記述されています。
import-stylebooks:-namespace:netscaler.nitro.configprefix:nsversion:"10.5"
いずれかのNITRO構成オブジェクトを直接使用する場合、StyleBookでは、netscaler.nitro.config名前空間を必ず参照する必要があります。この名前空間には、lbvServerなど、すべてのCitrix ADC NITRO タイプが含まれています。ソフトウェアバージョン10.5以降がサポートされているため、StyleBookを使用して、リリース10.5以降を実行する任意のCitrix ADCインスタンスで構成を作成して実行できます。
import-stylebooksセクションで使用されるプレフィックスは、名前空間とバージョンの組み合わせを示すための略語です。この場合、nsは、バージョン10.5のnetscaler.nitro.configを示します。StyleBookの以降のセクションでは、名前空間とバージョンを使用して、インポートされるStyleBookを示す代わりに、選択したプレフィックス文字列(上記の例ではns)を使用できます。
スタイルブックで使用されるバージョンは、NetScaler NITRO バージョンです。NITRO バージョンXに基づくStyleBookを使用して、バージョンX以上のCitrix ADCを構成できます。
注
StyleBookを使用してバージョン10.5以降のCitrix ADCインスタンスを構成できるようにするには、互換性を最大化するために、NITRO組み込みStyleBooks(名前空間:netscaler.NITRO .config、バージョン:10.5)を直接使用するStyleBookに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を構成するのにも使用されます。
パラメーター
Parametersセクションでは、StyleBookで必要なすべてのパラメーターを宣言できます。StyleBookの作成者は、StyleBookのユーザーが指定する入力項目を決定する必要があります。この例の場合、ユーザーが、仮想サーバーの名前、IPアドレス、負荷分散方式を指定するようにStyleBookを設計しました。
Parametersセクションは、次のようになっています。
parameters:-name:namelabel:"ApplicationName"description:"给anametotheapplicationconfiguration."type:stringrequired:true-name:vip-ipaddresslabel:"LoadBalancerIPAddress"description:"TheApplicationVIPthatclientsaccess"type:ipaddressrequired:true-name:lb-alglabel:LB Algorithmdescription:Load Balancing Algorithmtype:stringdefault:ROUNDROBINallowed-values:-ROUNDROBIN-LEAST-CONNECTION
注
パラメーターのラベルを指定しない場合、NetScaler ADM はこのパラメーターを表示するときに名前属性を使用します。NetScaler ADM での表示方法を制御できるように、必ずパラメーターにラベルを定義する必要があります。
ただし、APIで使われる場合、パラメーターはそのnameで指定されます。
このセクションでは、name属性の値で示される3つのパラメーターが宣言されています。nameは仮想サーバー名、ipは仮想サーバーのIPアドレス、lb-algは負荷分散方式を表します。
- typeは、そのパラメーターで使用できる値のタイプを示します。たとえば、名前および
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の数値。
- パスワード: Opaque/シークレット文字列値。NetScaler ADM でこのパラメータの値が表示される場合は、アスタリスク(*****)として表示されます。
- 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 ADM はこれらの3つのパラメータを含むフォームが表示されます。[名前] と [IP] に表示されるフィールドでは、文字列とipaddress
タイプの値を入力できます。lb-alg
フィールドは ROUNDROBIN がデフォルト値として選択されたドロップダウンリストとして表示されます。
注
組み込みタイプに加えて、パラメーターには他のStyleBookをタイプにすることができます。こうして他のStyleBookで定義されたパラメーターを再利用できます。
コンポーネント
このStyleBookの最後のセクションは、Componentsセクションです。Componentsセクションは、StyleBookで最も重要なセクションです。このセクションでは、StyleBookで作成する必要がある設定オブジェクトを定義します。
この例の場合、Componentsセクションは、次のように記述する必要があります。
components:-name:lbvserver-compdescription:This StyleBook component (a Builtin Nitro StyleBook) builds a NetScaler lbvserver configuration object.type:ns::lbvserverproperties:name:$parameters.nameipv46:$parameters.vip-ipaddresslbmethod:$parameters.lb-algservicetype:HTTPport:80
この例では、コンポーネントが1つのみ含まれています。コンポーネントの主要な属性は、name、type、およびpropertiesです。このコンポーネントで指定するプロパティは、コンポーネントのタイプによって決まります。コンポーネントには、次の 2 つのタイプがあります。
- 組み込み型: このタイプはシステムによって提供され、NITRO エンティティタイプ
lbvserver
やservicegroup
など、定義する必要はありません 。この例では、 組み込みコンポーネントタイプを使用しています。 - 複合タイプ:このタイプは、作成してCitrix ADMにインポートしたStyleBook、またはCitrix ADMに同梱されているデフォルトのStyleBookです。複合スタイルブックの詳細については、「複合スタイルブックの作成」を参照してください。
この例では、lbvserver-compというコンポーネントを定義しました。このコンポーネントは、ns። lbvserver(組み込みのNITRO タイプ)です。ここで、「ns」は、 import-stylebooksセクションで指定した名前空間 netscaler.nitro.configおよびバージョン10.5を参照する接頭辞であり、lbvserver
はこの名前空間のNITRO リソースです。
ここで定義されたプロパティは、lbvserver
リソースの属性です。利用可能なすべてのCitrix ADC NITROリソースとその属性の詳細については、NetScaler NITRO REST APIのドキュメントを参照してください。
このセクションのプロパティには、lbvserver
リソースの必須属性が含まれており、これらの属性の値を指定できます。この例では、servicetype
およびポートに静的値を指定し、名前、ipv46、 およびlbmethod
プロパティは入力パラメータから値を取得します。StyleBookの残りの部分では、 を使用して、パラメータ・セクションで定義されたパラメータ名を参照できます。$parameters.
注
慣例により、「インポートスタイルブック」セクションでCitrix ADC NITRO 名前空間を指定するには、「ns」というプレフィックスが常に使用されます。これは必須ではありませんが、一貫性を保つためにお使いのStyleBookで慣例に従うことをお勧めします。
StyleBookを構築する
StyleBookの必須セクションをすべて定義しました。これらのセクションをまとめて、最初のStyleBookを作成します。StyleBookの内容をコピーして、テキストエディターに貼り付け、lb-vserver.yamlという名前でファイルを保存します。Citrixでは、StyleBooksに組み込まれているYAML検証ツールを使用してYAMLコンテンツを検証およびインポートすることをお勧めします。
lb-vserver.yamlファイルのすべての内容を次に示します。
name:lb-vservernamespace:com.example.stylebookversion:"1.0"display-name:Load Balancing Virtual Server (HTTP)description:"ThisstylebookdefinesaverysimpleloadbalancingHTTPvirtualserverconfiguration"schema-version:"1.0"import-stylebooks:-namespace:netscaler.nitro.configversion:"10.5"prefix:ns-namespace:com.citrix.adc.stylebooksversion:"1.0"prefix:stlbparameters:-name:namelabel:"ApplicationName"description:"给anametotheapplicationconfiguration."type:stringrequired:true-name:vip-ipaddresslabel:"LoadBalancerIPAddress"description:"TheApplicationVIPthatclientsaccess"type:ipaddressrequired:true-name:lb-alglabel:LB Algorithmdescription:Load Balancing Algorithmtype:stringdefault:ROUNDROBINallowed-values:-ROUNDROBIN-LEAST-CONNECTIONcomponents:-name:lbvserver-compdescription:This StyleBook component (a Builtin Nitro StyleBook) builds a NetScaler lbvserver configuration object.type:ns::lbvserverproperties:name:$parameters.nameipv46:$parameters.vip-ipaddresslbmethod:$parameters.lb-algservicetype:HTTPport:80
StyleBookを使用して構成を作成するには、NetScaler ADM にインポートしてから使用する必要があります。詳しくは、「ユーザー定義のStyleBookを使用する方法」を参照してください。
またこのStyleBookを他のStyleBookに(import-stylebooks構造を使って)インポートすることもできます。または、次のセクションで説明されるように、より多くのパラメーターとコンポーネントを含むようにこのStyleBookを修正することもできます。