6.4. エッジデバイスのオペレーティングシステム設定
オペレーティングシステムレベルのホスト設定をイメージに追加すると、一貫性と再現性を最大化できます。設定を更新するには、新しいオペレーティングシステムイメージを作成し、新しいイメージを使用してデバイスを更新します。
ただし、次の場合には、新しいイメージでデバイスを更新することが現実的ではない可能性があります。
- イメージ内に設定がない場合。
- 設定がデバイスに固有のものである必要がある場合。
- オペレーティングシステムイメージを更新して再起動することなく、実行時に設定を更新できる必要がある場合。
このような場合は、デバイスのファイルシステムに存在する設定ファイルのセットを宣言できます。Red Hat Edge Manager エージェントは、設定ファイルに更新を適用します。その際に、必ずファイルシステム内のすべてのファイルが正常に更新されるか、さもなければ更新前の状態にロールバックされます。ユーザーがデバイスのオペレーティングシステムと設定セットの両方を同時に更新する場合、Red Hat Edge Manager エージェントは最初にオペレーティングシステムを更新します。その後、指定された設定ファイルのセットを適用します。
Red Hat Edge Manager エージェントが順番に適用する設定セットのリストを指定することもできます。競合が発生した場合、最後に適用された設定セットが有効になります。
Red Hat Edge Manager エージェントがディスク上の設定を更新した後、実行中のアプリケーションは、設定を有効にするために新しい設定をメモリーにリロードする必要があります。更新に再起動が必要な場合、systemd により、新しい設定を使用して正しい順序でアプリケーションが自動的に再起動されます。更新に再起動が不要な場合、多くのアプリケーションは設定ファイルの変更を検出し、ファイルを自動的にリロードできます。アプリケーションが変更の検出をサポートしていない場合は、デバイスのライフサイクルフックを使用すると、特定の条件が満たされた場合にスクリプトまたはコマンドを実行できます。
6.4.1. 設定プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager では、設定プロバイダーと呼ばれる多くのソースから設定を提供できます。Red Hat Edge Manager は現在、次の設定プロバイダーをサポートしています。
- Git Config Provider
- Git リポジトリーからデバイス設定ファイルを取得します。
- Kubernetes Secret Provider
- Kubernetes クラスターからシークレットを取得し、そのコンテンツをデバイスのファイルシステムに書き込みます。
- HTTP Config Provider
- HTTP (S) エンドポイントからデバイス設定ファイルを取得します。
- Inline Config Provider
- 外部システムをクエリーしなくても、デバイスマニフェストでデバイス設定ファイルをインラインで指定できます。
以下のセクションでは、設定プロバイダーの詳細を説明します。
6.4.1.1. Git リポジトリーからの設定 リンクのコピーリンクがクリップボードにコピーされました!
デバイス設定を GitHub や GitLab などの Git リポジトリーに保存できます。その後、Git Config Provider を追加して、Red Hat Edge Manager がリポジトリーからデバイスのファイルシステムに設定を同期できるようにします。
Git Config Provider は次のパラメーターを受け取ります。
| パラメーター | 説明 |
|
|
Red Hat Edge Manager で定義された |
|
| チェックアウトするリポジトリーのブランチ、タグ、またはコミット。 |
|
|
ファイルおよびサブディレクトリーがデバイスのファイルシステムに同期されるリポジトリー内のディレクトリーへの絶対パス。 |
|
|
オプション: リポジトリーの内容を書き込むためのデバイスのファイルシステム内のディレクトリーへの絶対パス。デフォルトでは、値はファイルシステムのルート ( |
Repository リソースでは、Red Hat Edge Manager が使用する必要がある Git リポジトリー、プロトコル、およびアクセス認証情報を定義します。リポジトリーを設定する必要があるのは 1 回だけです。設定後、リポジトリーを使用して個々のデバイスまたはデバイス群を設定できます。
6.4.1.2. Kubernetes クラスターからのシークレット リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager は、Red Hat Edge Manager が稼働している Kubernetes クラスターに対してのみ、Kubernetes シークレットを照会できます。そのシークレットの内容を、デバイスファイルシステム上のパスに書き込むことができます。
Kubernetes Secret Provider は次のパラメーターを受け取ります。
| パラメーター | 説明 |
|
| シークレットの名前。 |
|
| シークレットの namespace。 |
|
| シークレットの内容を書き込むためのデバイスのファイルシステム内のディレクトリー。 |
Red Hat Edge Manager には、定義された namespace 内のシークレットにアクセスするための権限が必要です。たとえば、ClusterRole と ClusterRoleBinding を作成すると、flightctl-worker サービスアカウントがその namespace 内のシークレットを取得してリスト表示できるようになります。
6.4.1.3. HTTP サーバーからの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager は、設定のために HTTP サーバーにクエリーを実行できます。HTTP サーバーは、デバイスに対して静的または動的に生成された設定を提供できます。
HTTP Config Provider は次のパラメーターを受け取ります。
| パラメーター | 説明 |
|
|
Red Hat Edge Manager で定義された |
|
|
|
|
| HTTP サーバーの応答を書き込むためのデバイスのファイルシステム内のファイルへの絶対パス。 |
Repository リソースでは、Red Hat Edge Manager が接続する HTTP サーバーと、使用するプロトコルおよびアクセス認証情報を指定します。リポジトリーのニーズを一度設定すれば、リポジトリーを使用して多数のデバイスやデバイス群を設定できます。
6.4.1.4. デバイス仕様のインライン設定 リンクのコピーリンクがクリップボードにコピーされました!
設定はデバイス仕様にインラインで指定できます。インラインデバイス仕様を使用すると、Red Hat Edge Manager が設定を取得するために外部システムに接続する必要がなくなります。
Inline Config Provider はファイル仕様のリストを受け取ります。各ファイル仕様は次のパラメーターを受け取ります。
| パラメーター | 説明 |
|
| コンテンツを書き込むためのデバイスのファイルシステム内のファイルへの絶対パス。指定したパスにファイルがすでに存在する場合、ファイルは上書きされます。 |
|
| ファイルの UTF-8 または base64 でエンコードされたコンテンツ。 |
|
|
コンテンツのエンコード方法を定義します。 |
|
|
オプション: ファイルの権限モード。先頭にゼロを付けた 8 進数 (例: |
|
|
オプション: ファイルの所有者。名前または数値 ID として指定します。デフォルト値は |
|
| オプション: ファイルのグループ。名前または数値 ID として指定します。 |
関連情報
6.4.2. CLI の Git リポジトリーからのデバイス設定の管理 リンクのコピーリンクがクリップボードにコピーされました!
Git リポジトリーでデバイス設定を作成し、適用します。
以下の手順を実行します。
手順
site-settingsという名前のRepositoryリソース用のファイル (site-settings-repo.yamlなど) を作成し、次の定義を含めます。apiVersion: flightctl.io/v1alpha1 kind: Repository metadata: name: site-settings spec: type: git url: https://github.com/<your_org>/<your_repo>.git次のコマンドを実行して
Repositoryリソースを作成します。flightctl apply -f site-settings-repo.yaml次のコマンドを実行して、リソースが正しく作成されたこと、および Red Hat Edge Manager からアクセスできることを確認します。
flightctl get repository/site-settings以下の出力例を参照してください。
NAME TYPE REPOSITORY URL ACCESSIBLE site-settings git https://github.com/<your_org>/<your_repo>.git Trueデバイス仕様を更新して、
example-siteの設定をデバイスに適用します。apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> spec: [...] config:1 - name: example-site configType: GitConfigProviderSpec gitRef: repository: site-settings targetRevision: production path: /etc/example-site2 [...]