Red Hat Training

A Red Hat training course is available for RHEL 8

11.8. RHEL Image Builder を使用した GCP へのイメージのアップロード

RHEL Image Builderを使用すると、gce イメージをビルドし、ユーザーまたは GCP サービスアカウントの認証情報を指定して、gce イメージを GCP 環境に直接アップロードできます。

11.8.1. CLI を使用した gce イメージの GCP へのアップロード

gce イメージを GCP にアップロードするための認証情報を含む設定ファイルをセットアップする手順に従います。

警告

イメージが起動しなくなるため、gce イメージを GCP に手動でインポートすることはできません。アップロードするには、gcloud または RHEL Image Builder を使用する必要があります。

前提条件

  • イメージを GCP にアップロードするための有効な Google アカウントと認証情報がある。認証情報は、ユーザーアカウントまたはサービスアカウントから取得できます。認証情報に関連付けられたアカウントには、少なくとも次の IAM ロールが割り当てられている必要があります。

    • roles/storage.admin - ストレージオブジェクトの作成と削除
    • roles/compute.storageAdmin - 仮想マシンイメージの Compute Engine へのインポート
  • 既存の GCP バケットがあります。

手順

  1. テキストエディターを使用して、次の内容で gcp-config.toml 設定ファイルを作成します。

    provider = "gcp"
    
    [settings]
    bucket = "GCP_BUCKET"
    region = "GCP_STORAGE_REGION"
    object = "OBJECT_KEY"
    credentials = "GCP_CREDENTIALS"
    • GCP_BUCKET は既存のバケットを指します。アップロード中のイメージの中間ストレージオブジェクトを格納するために使用されます。
    • GCP_STORAGE_REGION は、通常の Google ストレージリージョンであると同時に、デュアルリージョンまたはマルチリージョンでもあります。
    • OBJECT_KEY は、中間ストレージオブジェクトの名前です。アップロード前に存在してはならず、アップロードプロセスが完了すると削除されます。オブジェクト名が .tar.gz で終わらない場合、拡張子がオブジェクト名に自動的に追加されます。
    • GCP_CREDENTIALS は、GCP からダウンロードされた認証情報 JSON ファイルの Base64 エンコードスキームです。認証情報によって、GCP がイメージをアップロードするプロジェクトが決まります。

      注記

      GCP での認証に別のメカニズムを使用する場合、gcp-config.toml ファイルでの GCP_CREDENTIALS の指定は任意です。他の認証方法については、Authenticating with GCP を参照してください。

  2. GCP からダウンロードした JSON ファイルから GCP_CREDENTIALS を取得します。

    $ sudo base64 -w 0 cee-gcp-nasa-476a1fa485b7.json
  3. 追加のイメージ名とクラウドプロバイダープロファイルを使用して Compose を作成します。

    $ sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.toml

    イメージビルド、アップロード、およびクラウド登録プロセスは、完了に最大 10 分かかる場合があります。

検証

  • イメージのステータスが FINISHED であることを確認します。

    $ sudo composer-cli compose status

11.8.2. RHEL Image Builder によるさまざまな GCP 認証情報の認証順序の並べ替え

RHEL Image Builder でいくつかの異なる種類の認証情報を使用して、GCP で認証できます。複数の認証情報セットを使用して GCP で認証するように RHEL Image Builder が設定されている場合、次の優先順位で認証情報が使用されます。

  1. 設定ファイルで composer-cli コマンドで指定された認証情報。
  2. osbuild-composer ワーカー設定で設定された認証情報。
  3. 次の方法で認証方法を自動的に見つけようとする、Google GCP SDK ライブラリーからの Application Default Credentials

    1. GOOGLE_APPLICATION_CREDENTIALS 環境変数が設定されている場合、Application Default Credentials は、変数が指すファイルから認証情報を読み込んで使用しようとします。
    2. Application Default Credentials は、コードを実行しているリソースに関連付けられたサービスアカウントを使用して認証を試みます。たとえば、Google Compute Engine 仮想マシンです。

      注記

      イメージをアップロードする GCP プロジェクトを決定するには、GCP 認証情報を使用する必要があります。したがって、すべてのイメージを同じ GCP プロジェクトにアップロードする場合を除き、composer-cli コマンドを使用して gcp-config.toml 設定ファイルに認証情報を指定する必要があります。

11.8.2.1. composer-cli コマンドで GCP 認証情報を指定する

アップロードターゲット設定の gcp-config.toml ファイルで、GCP 認証情報を指定できます。時間を節約するために、Google アカウント認証情報の JSON ファイルの Base64 エンコードスキームを使用します。

手順

  1. GOOGLE_APPLICATION_CREDENTIALS 環境変数に保存されているパスを使用して、Google アカウント認証情報ファイルのエンコードされたコンテンツを取得するには、次のコマンドを実行します。

    $ base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"
  2. アップロードターゲット設定の gcp-config.toml ファイルで、認証情報を設定します。

    provider = "gcp"
    
    [settings]
    provider = "gcp"
    
    [settings]
    ...
    credentials = "GCP_CREDENTIALS"

11.8.2.2. osbuild-composer ワーカー設定で認証情報を指定する

すべてのイメージビルドでグローバルに GCP に使用される GCP 認証認証情報を設定できます。このようにして、イメージを同じ GCP プロジェクトにインポートする場合、GCP へのすべてのイメージのアップロードに同じ認証情報を使用できます。

手順

  • /etc/osbuild-worker/osbuild-worker.toml ワーカー設定で、次の認証情報の値を設定します。

    [gcp]
    credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"