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

このページでは、Artifact Registry Apt リポジトリから Debian パッケージをインストールするように VM を構成する方法について説明します。

準備

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

Apt リポジトリにアクセスするために VM を準備する

非公開リポジトリ

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

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

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

    Compute Engine VM

    Debian VM

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

    2. 次のコマンドを使用して Apt を更新します。

      sudo apt update
      
    3. VM に apt-transport-artifact-registry パッケージをインストールします。

      sudo apt install apt-transport-artifact-registry
      

    Ubuntu VM

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

      curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      

      LOCATION は、リポジトリの場所に置き換えます。

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

    3. 次のコマンドを使用して、Artifact Registry パッケージにアクセスするように VM を構成します。

      echo 'deb http://packages.cloud.google.com/apt apt-transport-artifact-registry-stable main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
      
    4. 次のコマンドを使用して Apt を更新します。

      sudo apt update
      
    5. VM に apt-transport-artifact-registry パッケージをインストールします。

      sudo apt install apt-transport-artifact-registry
      

    その他の VM

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

      curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      

      LOCATION は、リポジトリの場所に置き換えます。

    2. 次のコマンドを使用して、Artifact Registry パッケージにアクセスするように VM を構成します。

      echo 'deb http://packages.cloud.google.com/apt apt-transport-artifact-registry-stable main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
      
    3. 次のコマンドを使用して Apt を更新します。

      sudo apt update
      
    4. VM に apt-transport-artifact-registry パッケージをインストールします。

      sudo apt install apt-transport-artifact-registry
      
    5. /etc/apt/apt.conf.d/90artifact-registry ファイル内の #Service-Account-JSON "/path/to/creds.json"; 行を見つけて、その行をコメント化解除し、サービス アカウント キーのパスを追加します。

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

      Service-Account-JSON  "PATH_TO_SERVICE_ACCOUNT_KEY";
      

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

パブリック レポジトリ

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

  2. Google Cloud の外部で VM を構成する場合は、リポジトリにアクセスできるようにマシンを準備します。Compute Engine VM を構成する場合は、次のステップに進みます。

    次のコマンドを使用して、公開署名検証鍵をインストールします。

    curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    

    LOCATION は、リポジトリの場所に置き換えます。

  3. 次のコマンドを使用して Apt を更新します。

    sudo apt update
    

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

Apt リポジトリにアクセスするように VM を構成する

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

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

    以下を置き換えます。

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

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

    # To configure your package manager with this repository:
    
    # Update Apt:
    sudo apt update
    
    # Install the Apt credential helper:
    sudo apt install apt-transport-artifact-registry
    
    # Configure your VM to access Artifact Registry packages using the following
    # command:
    
    echo "deb ar+https://LOCATION-apt.pkg.dev/projects/PROJECT REPOSITORY main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    
    # Update Apt:
    sudo apt update
    
  2. print-settings コマンドの出力から echo コマンドを使用して、リポジトリからパッケージを取得するように Apt を構成します。

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

    echo 'deb ar+https://us-central1-apt.pkg.dev/projects/my-project my-repo main'
    
  3. 次のコマンドを使用して、リポジトリのソースを更新します。

    sudo apt update
    

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

追加の Apt リポジトリを作成する場合は、それらを artifact-registry.list ファイルに追加し、sudo apt update を再実行してリポジトリ ソースを更新します。

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

標準のアップストリーム Apt リポジトリではなくリモート Apt リポジトリのみを使用するように VM を構成するには、VM の /etc/apt/sources.list ファイルで標準リポジトリをリモート リポジトリに置き換えます。

  1. デフォルトの Compute Engine サービス アカウントにプロジェクト全体の Artifact Registry 書き込み権限を付与します。

     gcloud projects add-iam-policy-binding PROJECT_ID \
       --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
       --role=roles/artifactregistry.writer
    
  2. [VM インスタンス] ページに移動します。

  3. VM がある行で [SSH] をクリックします。

    VM のターミナル セッションで新しいウィンドウが開きます。

  4. VM の /etc/apt/sources.list ファイルを開き、新しいリモート リポジトリに置き換える標準リポジトリを探します。

  5. 標準のリポジトリ行を削除し、以下のように置き換えます。

    deb ar+https://LOCATION-apt.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME UPSTREAM_REPOSITORY_NAME COMPONENTS
    

    以下を置き換えます。

    • LOCATION は、リモート リポジトリのリージョンまたはマルチリージョンのロケーションに置き換えます。
    • PROJECT_ID は、VM のプロジェクト ID に置き換えます。
    • REMOTE_REPOSITORY_NAME は、リモート リポジトリに付けた名前に置き換えます。
    • UPSTREAM_REPOSITORY_NAME は、リモートのアップストリーム リポジトリの名前に置き換えます。
    • COMPONENTS は、コンポーネント名を空白文字で区切ったリストに置き換えます。

    たとえば、次の例では、ロケーション us-east1 にあるプロジェクト my-project のリポジトリ my-repo から、コンポーネント maincontribnon-free のアップストリーム リポジトリとして buster を使用してパッケージを取得するように VM を構成します。

    deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo buster main contrib non-free
    
  6. 次のコマンドを使用して、リポジトリのソースを更新します。

    sudo apt update
    

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

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

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

sources.list.d フォルダに新しい artifact-registry.list ファイルを作成するには、次のコマンドを実行します。

echo 'deb ar+https://LOCATION-apt.pkg.dev/remote/PROJECT_ID/REMOTE_REPOSITORY_NAME UPSTREAM_REPOSITORY_NAME COMPONENTS' | sudo tee -a  /etc/apt/sources.list.d/artifact-registry.list

以下を置き換えます。

  • LOCATION は、リモート リポジトリのリージョンまたはマルチリージョンのロケーションに置き換えます。
  • PROJECT_ID は、VM のプロジェクト ID に置き換えます。
  • REMOTE_REPOSITORY_NAME は、リモート リポジトリに付けた名前に置き換えます。
  • UPSTREAM_REPOSITORY_NAME は、リモートのアップストリーム リポジトリの名前に置き換えます。
  • COMPONENTS は、コンポーネント名を空白文字で区切ったリストに置き換えます。

追加の Apt リポジトリを作成する場合は、それらを artifact-registry.list ファイルまたは sources.list ファイルに追加し、sudo apt update を再実行してリポジトリ ソースを更新します。

Apt リポジトリへの HTTP アクセスを構成する

SSL 暗号化をサポートしていない古いクライアント ツールを使用している場合は、Apt リポジトリへの公開アクセスを構成し、HTTP 経由でアクセスできます。HTTP を使用して公開読み取りリポジトリに送信されたリクエストは、リクエストに認証トークンが提示されている場合、拒否されます。

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

  2. HTTP を使用してリポジトリからパッケージを取得するように Apt を構成するには、次のコマンドを実行します。

     echo 'deb http://LOCATION-apt.pkg.dev/projects/PROJECT_ID \
     REPOSITORY main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    

    以下を置き換えます。

    • LOCATION は、リポジトリの場所に置き換えます。
    • PROJECT_ID は、リポジトリのプロジェクト ID に置き換えます。
    • REPOSITORY は、リポジトリ名に置き換えます。

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

    echo 'deb http://us-central1-apt.pkg.dev/projects/my-project my-repo main' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    
  3. 次のコマンドを使用して、リポジトリのソースを更新します。

    sudo apt update
    

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

追加の Apt リポジトリを作成する場合は、それらを artifact-registry.list ファイルに追加し、sudo apt update を再実行してリポジトリ ソースを更新します。

次のステップ