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

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

準備

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

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

非公開リポジトリ

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

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

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

    Compute Engine VM

    Debian VM

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

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

    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 を再実行してリポジトリ ソースを更新します。

リモート Apt リポジトリにアクセスするように 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' >> /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' >> /etc/apt/sources.list.d/artifact-registry.list
    
  3. 次のコマンドを使用して、リポジトリのソースを更新します。

    sudo apt update
    

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

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

次のステップ