RPM パッケージをインストールするように VM を構成する

このページでは、Artifact Registry Yum リポジトリから RPM パッケージをインストールするように VM を構成することを説明します。Artifact Registry Yum リポジトリは、yum クライアントと dnf クライアントをサポートしています。

準備

ターゲット Yum リポジトリが存在しない場合は、新しいリポジトリを作成します。認証を必要としない非公開リポジトリまたは公開リポジトリを作成できます。

Yum リポジトリにアクセスする VM を準備する

Yum リポジトリにアクセスする VM を準備するには、yumdnf のいずれかのクライアント ツールを使用します。

非公開リポジトリ

  1. アクセス権の付与に使用するサービス アカウントを選択します。

    • Compute Engine VM の場合、これはデフォルトのサービス アカウントである場合があります。Artifact Registry は、サービス アカウントを使用して VM の Compute Engine VM サービス アカウントの認証情報を自動的に取得します。
    • その他の VM の場合は、VM に代わって動作するサービス アカウントを作成または選択します。VM を構成するには、サービス アカウント キー ファイルのロケーションが必要です。既存のアカウントの鍵は、[サービス アカウント] ページで表示、作成できます。
  2. サービス アカウントにリポジトリへのアクセス権限を付与します

  3. VM がリポジトリにアクセスできるように準備します。

    Compute Engine VM

    1. cloud-platform API アクセス スコープを VM に割り当てます。アクセス スコープの設定については、インスタンスのサービス アカウントとアクセス スコープを変更するをご覧ください。

    2. 次のコマンドを使用してパッケージ キャッシュを更新します。

      sudo yum makecache
      
    3. 次のコマンドを使用して、VM に Artifact Registry プラグインをインストールします。

      sudo yum install FORMAT-plugin-artifact-registry
      

      以下を置き換えます。

      • FORMAT は、次のいずれかに置き換えます。
        • yum(オペレーティング システムが Enterprise Linux 7 以降の場合)
        • dnf(オペレーティング システムが Enterprise Linux 8 以降の場合)

    その他の VM

    1. 次のコマンドを使用して、RPM 署名鍵をインストールします。

      sudo rpm --import https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
      
    2. 次の内容のファイルを /etc/yum.repos.d/artifact-registry-plugin.repo という名前で作成します。

      [ar-plugin]
      name=Artifact Registry Plugin
      baseurl=https://packages.cloud.google.com/yum/repos/FORMAT-plugin-artifact-registry-DISTRO-stable
      enabled=1
      gpgcheck=1
      

      以下を置き換えます。

      • FORMAT は、次のいずれかに置き換えます。
        • yum(オペレーティング システムが Enterprise Linux 7 以降の場合)
        • dnf(オペレーティング システムが Enterprise Linux 8 以降の場合)
      • DISTRO は、elX 形式の Red Hat Enterprise Linux メジャー リリースで、X は、リリース バージョンです。有効な DISTRO 値の例は el7 および el8 です。
    3. 次のコマンドを使用して Yum を更新します。

      sudo yum makecache
      
    4. 次のコマンドを使用して、VM に Artifact Registry プラグインをインストールします。

      yum install FORMAT-plugin-artifact-registry
      

      FORMAT を次のいずれかに置き換えます。

      • yum(オペレーティング システムが Enterprise Linux 7 以降の場合)
      • dnf(オペレーティング システムが Enterprise Linux 8 以降の場合)
    5. artifact-registry.conf ファイルの中の #service_account_json = "/path/to/creds.json" 行を見つけて、その行をコメント化解除し、サービス アカウント キーのパスを追加します。

      • Enterprise Linux 7 以前のオペレーティング システムの場合、構成ファイルのパスは /etc/yum/pluginconf.d/artifact-registry.conf です。
      • Enterprise Linux 8 以降のオペレーティング システムの場合、構成ファイルのパスは /etc/dnf/plugins/artifact-registry.conf です。

      構成ファイルのエントリ:

      service_account_json = "PATH_TO_SERVICE_ACCOUNT_KEY"
      

      PATH_TO_SERVICE_ACCOUNT_KEY は、サービス アカウント キー JSON ファイルのパスで置き換えます。

パブリック レポジトリ

  1. リポジトリへの公開アクセスを構成します。

標準の Yum リポジトリにアクセスするように VM を構成する

Yum リポジトリにアクセスするように VM を構成するには、yumdnf のいずれかのクライアント ツールを使用します。

  1. VM 構成コマンドを生成するには、gcloud beta artifacts print-settings yum コマンドを実行します。

    gcloud beta artifacts print-settings yum \
        --repository=REPOSITORY \
        --location=LOCATION
    

    次のように置き換えます。

    • LOCATION は、リージョンまたはマルチリージョンのロケーションです。
    • REPOSITORY は Artifact Registry リポジトリの名前です。

    出力は次のようになります。

    # To configure your package manager with this repository:
    
    # Update Yum:
    sudo yum makecache
    
    # Install the Yum credential helper:
    sudo yum install yum-plugin-artifact-registry
    
    # Configure your VM to access Artifact Registry packages using the following
    # command:
    
    sudo tee -a /etc/yum.repos.d/artifact-registry.repo << EOL
    [REPOSITORY]
    name=REPOSITORY
    baseurl=https://LOCATION-yum.pkg.dev/projects/PROJECT/REPOSITORY
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOL
    
    # Update Yum:
    sudo yum makecache
    
  2. print-settings コマンドの出力から tee コマンドを使用して、リポジトリからパッケージを取得するように yum クライアント ツールを構成します。

    たとえば、プロジェクト my-project とロケーション us-central1 に公開 my-repo からパッケージをインストールするには、次のコマンドを使用します。

    sudo tee -a /etc/yum.repos.d/artifact-registry.repo << EOL
    [my-repo]
    name=My Repository
    baseurl=https://us-central1-yum.pkg.dev/projects/my-project/my-repo
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOL
    
  3. 次のコマンドを使用して、リポジトリ ソースを更新します。

    sudo yum makecache
    

Yum がリポジトリに接続できるようになりました。

追加の Yum リポジトリを作成する場合は、/etc/yum.repos.d/ ごとに .repo ファイルを作成します。sudo yum update を再実行してリポジトリ ソースを更新します。

リモートの Yum リポジトリにアクセスするように VM を構成する

標準のアップストリーム Yum リポジトリの代わりにリモート Yum リポジトリのみを使用するように VM を構成するには、VM のリポジトリ リストの標準リポジトリをリモート リポジトリに置き換えます。

標準のリポジトリが個別のリポジトリ ファイル(.repo)ではなく構成ファイルで定義されている場合は、構成ファイル内のエントリを削除してリモートに置き換えるか、新しいリポジトリ ファイルを /etc/yum.repos.d/ ディレクトリに定義できます。

  1. [VM インスタンス] ページに移動します。

  2. VM がある行で [SSH] をクリックします。VM のターミナル セッションで新しいウィンドウが開きます。

  3. VM の /etc/yum.repos.d/ フォルダを開き、標準のアップストリーム リポジトリを含む適切なリポジトリ ファイル(.repo)を見つけます。これはベース リポジトリと呼ばれることもあります。ベース リポジトリは、Yum リポジトリ名に [base] または [baseos] が含まれていることで識別できます。

  4. ベース リポジトリを完全に置き換えるには、[base] 以下のデフォルト設定を削除します。

  5. [base] の下に以下を追加します。

    [base]
    name=YUM_REPOSITORY_NAME
    baseurl=https://LOCATION-yum.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME
    enabled=1
    gpgcheck=1
    

    以下を置き換えます。

  • YUM_REPOSITORY_NAME は、リモートの Yum リポジトリの 1 語の一意のリポジトリ ID に置き換えます。この名前は、構成を削除した場合はアップストリーム リポジトリ名と一致させることができ、リモート リポジトリとして識別する別の名前を指定することもできます。
  • REPOSITORY_NAME は、人が読めるリポジトリ名に置き換えます。
    • LOCATION は、リモート リポジトリのリージョンまたはマルチリージョンのロケーションに置き換えます。
  • PROJECT_ID は、VM のプロジェクト ID に置き換えます。
  • REMOTE_REPOSITORY_NAME は、リモート リポジトリに付けた名前に置き換えます。

リモートの Yum リポジトリをバックアップとして使用する

標準アップストリームを第一の選択肢として保持し、リモート リポジトリをいざというときの代替案として追加する場合は、標準アップストリームをリポジトリ ファイルに保持し、新しいリポジトリ ファイルを /etc/yum.repos.d フォルダに作成できます。

/etc/yum.repos.d フォルダに新しいリポジトリ ファイルを作成するには、次のコマンドを実行します。

sudo tee -a /etc/yum.repos.d/artifact-registry.repo << EOF
[YUM_REPOSITORY_NAME]
name=REPOSITORY_NAME
baseurl=https://LOCATION-yum.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME
enabled=1
gpgcheck=1
EOF

以下を置き換えます。

  • YUM_REPOSITORY_NAME は、リモートの Yum リポジトリの 1 語の一意のリポジトリ ID に置き換えます。
  • REPOSITORY_NAME は、人が読めるリポジトリ名に置き換えます。
    • LOCATION は、リモート リポジトリのリージョンまたはマルチリージョンのロケーションに置き換えます。
  • PROJECT_ID は、VM のプロジェクト ID に置き換えます。
  • REMOTE_REPOSITORY_NAME は、リモート リポジトリに付けた名前に置き換えます。

たとえば、次のコマンドは、Yum がリポジトリ my-repo をインストールする際に、プロジェクト my-project とロケーション us-east1 でリポジトリ my-repo をフェッチするように VM を構成します。

sudo tee -a /etc/yum.repos.d/artifact-registry.repo << EOF
[my-repo]
name=My Repository
baseurl=https://us-east1-yum.pkg.dev/remote/my-project/my-repo
enabled=1
gpgcheck=1
EOF

次のステップ