1.7.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キーのラベルをパラメーターとして使用できます。
デバイステンプレートの次のフィールドは、プレースホルダーをサポートします。
| フィールド | サポートされているプレースホルダー |
| オペレーティングシステムイメージ | リポジトリー名、イメージ名、イメージタグ |
| Git Config Provider | ターゲットリビジョン、パス |
| HTTP Config Provider | URL 接尾辞、パス |
| Inline Config Provider | コンテンツ、パス |