8.2. デバイステンプレート
フリートのデバイステンプレートには、テンプレートの更新時にフリート内のすべてのデバイスに適用されるデバイス仕様が含まれています。
たとえば、フリートのデバイステンプレートで、フリート内のすべてのデバイスが quay.io/flightctl/rhel:9.5 オペレーティングシステムイメージを実行する必要があることを指定できます。
その後、Red Hat Edge Manager サービスがターゲット仕様をフリート内のすべてのデバイスにロールアウトし、Red Hat Edge Manager エージェントが各デバイスを更新します。
デバイステンプレート内の他の仕様項目も変更できます。変更は同様に Red Hat Edge Manager によって適用されます。
しかし、フリート内のすべてのデバイスがまったく同じ仕様である必要がない場合もあります。Red Hat Edge Manager では、テンプレートにデバイス名またはラベルの値に基づいて設定されるプレースホルダーを含めることができます。
このプレースホルダーの構文は、Go テンプレート の構文と同じです。ただし、使用できるのは単純なテキストとアクションのみです。
プレースホルダーでの条件付きまたはループの使用はサポートされません。
{{ .metadata.labels.key }} や {{ .metadata.name }} など、デバイスのメタデータから任意のものを参照できます。
プレースホルダーでは次の関数も使用できます。
-
upper関数は値を大文字に変更します。たとえば、{{ upper .metadata.name }}です。 -
lower関数は値を小文字に変更します。たとえば、{{ lower .metadata.labels.key }}です。 -
replace関数は、部分文字列のすべての出現箇所を別の文字列に置き換えます。たとえば、{{ replace "old" "new" .metadata.labels.key }}です。 -
getOrDefault関数は、欠落しているラベルにアクセスする場合にデフォルト値を返します。たとえば、{{ getOrDefault .metadata.labels "key" "default" }}です。関数はパイプで組み合わせることができます。たとえば、{{ getOrDefault .metadata.labels "key" "default" | upper | replace " " "-" }}です。
必ず適切な Go テンプレート構文を使用してください。たとえば、{{ .metadata.labels.target-revision }} は、ハイフンが含まれているため無効です。代わりに、{{ index .metadata.labels "target-revision" }} としてフィールドを参照する必要があります。
次の方法で、デバイステンプレートでプレースホルダーを使用できます。
-
デプロイメントステージ別にデバイスにラベルを付けることができます。たとえば、
stage: testingやstage: productionです。その後、使用するオペレーティングシステムイメージを参照するときに、stageキーを含むラベルをプレースホルダーとして使用できます (例:quay.io/myorg/myimage:latest-{{ .metadata.labels.stage }})。または、Git リポジトリー内の設定フォルダーを参照するときにも使用できます。 -
デプロイメントサイト別にデバイスにラベルを付けることができます。たとえば、
site: factory-berlinやsite: factory-madridです。 その後、Kubernetes でネットワークアクセス認証情報を使用してシークレットを参照するときに、
siteキーをパラメーターとして含むラベルを使用できます。デバイステンプレートの次のフィールドは、プレースホルダーをサポートします。Expand フィールド
サポートされているプレースホルダー
オペレーティングシステムイメージ
リポジトリー名、イメージ名、イメージタグ
Git Config Provider
ターゲットリビジョン、パス
HTTP Config Provider
URL 接尾辞、パス
Inline Config Provider
コンテンツ、パス