この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

ラベルテンプレートの概要

Elementalは、マシン登録リソースの`spec.machineInventoryLabels`および`spec.machineInventoryAnnotations`セクションで_ラベルテンプレート_を指定できます。

その形式は、Kubernetesのラベルや注釈で使用される標準的な`key`:valueです。

これらのラベルテンプレートは、マシンインベントリリソースがマシンオンボーディングフェーズ中に作成される際に添付される実際のラベルと注釈に変換されます。

結果として得られるラベルと注釈は、ラベルテンプレートと同じ`key`を持ちます。

関連する`value`が生成されます。

  • * label template variables*をレンダリングする(存在する場合)

  • *sanitizing*結果の値(ラベルのみの場合)

Elementalのテンプレート機能は、マシン登録の`spec.machineName`フィールドもカバーしており、登録するマシンのホスト名や、関連するマシンインベントリリソースの`name`を定義します。

詳細については、マシン名セクションを参照してください。

ラベルテンプレートの変数

Elementalラベルテンプレーティングには、マシン登録で指定された_ラベルテンプレート_の`value`内で使用できる一連の事前定義された変数が含まれています。

ラベルテンプレートの変数を指定するために使用される構文は次のとおりです:

${ VARFAMILY \/ VARPATH }

ここで、_VARFAMILY_はサポートされている変数のグループ(ファミリー)を定義し、_VARPATH_は所属するファミリーグループ内の実際の変数名を定義します。

Elementalは現在、次の_テンプレート変数ファミリー_をサポートしています:

すべての_テンプレート変数ファミリー_(ただし_`Random`_)は、MachineRegistrationの`elemental.registration.no-smbios`フィールドが`false`(デフォルト)に設定されている場合にのみ有効です。

`elemental.registration.no-smbios`フィールドが`true`に設定されている場合、登録されたマシンはテンプレート変数をレンダリングするために必要なデータを送信しないため、変数は利用できませんが、*ランダム*変数は唯一の顕著な例外です。

*ランダム*変数は、オペレーター側に組み込まれているため、常に利用可能です。それらは特別でもあり、一度だけ計算されるため、詳細についてはランダムテンプレート変数セクションを参照してください。

テンプレート変数は静的テキストと混合して、(マシンインベントリ)に割り当てられる実際のラベルを形成できます。

レンダリング例
  • 登録ホストのCPUコア数を追跡するラベルテンプレート(ホストが4コアを持っていると仮定):

    • 元のラベル: cpu: ${CPU\/TotalCores}-コア

    • レンダリングされたラベル: cpu:4-コア

  • 登録ホストのSMBIOS UUIDを追跡するラベルテンプレート:

    • 元のラベル: sbios-UUID: ${Product\/UUID}

    • レンダリングされたラベル: sbios-UUID: fd95324a-c26b-4e28-8727-1dcec293a0ec

サニタイズ

ラベルテンプレート値が含まれているラベルテンプレート変数に従ってレンダリングされた後、結果の値は`sanitized`であり、結果のラベルに割り当てられます。

この`sanitization`は、ラベル値が文字(大文字または小文字)、数字、ハイフン(-)、ピリオド(.)、およびアンダースコア(_)の文字のみを含むように強制します:

含まれていないすべての文字はハイフンに置き換えられます。

ラベル値の先頭と末尾の文字は、文字または数字でなければなりません。そうでない場合は、削除されます。

連続する2つのハイフンは1つに置き換えられます。

レンダリング例
  • 禁止された文字のサニタイズを行ったラベルテンプレート:

    • 元のラベル: サニタイズされた: this:needs—​サニタイズ!

    • レンダリングされたラベル: サニタイズされた: this-needs-sanitizing

ラベルテンプレートの使用

ラベルテンプレートは、ホストがElemental Operatorに登録するたびに、各ホストのMachineInventoryにラベルと注釈を自動的に添付および更新することを可能にします。

登録はオンボーディングフェーズ中だけでなく、各ホストが30分ごとに再登録(および再起動するたびに)行われます。再登録中に、関連するMachineRegistrationのラベルテンプレートが再評価され、MachineInventoryに追加または更新されます。

ラベルテンプレートが役立つ主なケースは基本的に3つあります:

  • ハードウェアデータをElementalカタログに添付するため。

  • クラスタプロビジョニングのためにホストを選択するセレクタを追加するため。

  • マシン名のカスタムテンプレートを定義するため。

Elementalカタログのハードウェアデータ

ラベルテンプレートの変数は、各MachineInventoryリソース(Elementalカタログを形成する)にハードウェアデータを添付するために使用できます。

この場合、注釈はその値がサニタイズされないため、より良い選択肢となるかもしれません。

クラスタプロビジョニングのセレクタ

`Label Templates`は、特別なハードウェア特性を持つマシンを識別し選択するためのラベルを生成するのに利用でき、新しいKubernetesクラスターを形成するために使用されます。

MachineInventoryに添付されたラベルは、_selector_の対象となり、MachineInventorySelectorTemplateリソースに適用されます(詳細についてはKubernetesクラスターのプロビジョニングセクションを参照してください)。

カスタムマシン名

オンボーディングマシンのホスト名は、MachineRegistrationの`spec.machineName`フィールドを使用して指定できます。

`spec.machineName`の値は、`Label Templates' variables`および`sanitization`のプロセスが`spec.machineInventoryLabels`フィールドに適用されるのと同様の処理を受けます。

MachineRegistrationの`spec.machineName`フィールドと`spec.machineInventorylabels`フィールドの間には、1つの顕著な違いがあります:サニタイズプロセス中に、アンダースコア(_)は他の禁止文字と同様に置き換えられます(すなわち、ハイフンに置き換えられます:-)。これは、アンダースコアがLinuxのホスト名では許可されていないため、必要です。

Elementalホストのホスト名を定義する方法についての詳細は、ハウツー/ホスト名をカスタマイズするセクションを参照してください。

レンダリングの例
  • 次のようにホスト名テンプレートを定義します:SLE-Micro-[random string of 6 hexadecimal values]

    • MachineRegistration の仕様:machineName:SLE-Micro-${Random\/Hex\/6}

    • MachineInventory の名前:SLE-Micro-32ad41

ラベルテンプレートの例

ラベルテンプレートの変数を使用した登録の例
Unresolved include directive in modules/ja/pages/label-templates/label-templates.adoc - include::example$quickstart/registration-hardware-dhcphostname.yaml[]