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

Artifact Registry Apt リポジトリに接続するように仮想マシン(VM)インスタンスを構成すると、標準の Apt ツールを使用して Debian パッケージをインストールして更新できます。Compute Engine VM の認証とリポジトリ ソースを設定して、プライベート リポジトリまたはパブリック リポジトリからパッケージを pull できます。

始める前に

ターゲット 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. 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 gpg --dearmor -o /etc/apt/trusted.gpg.d/artifact-registry.gpg && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/google-cloud-sdk.gpg
      

      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 gpg --dearmor -o /etc/apt/trusted.gpg.d/artifact-registry.gpg && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/google-cloud-sdk.gpg
      

      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 gpg --dearmor -o /etc/apt/trusted.gpg.d/artifact-registry.gpg
    

    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 [signed-by=/etc/apt/trusted.gpg.d/artifact-registry.gpg] 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-west1 に公開リポジトリ my-repo からパッケージをインストールするには、次のコマンドを使用します。

    echo 'deb ar+https://us-west1-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 から、コンポーネント main、contrib、non-free のアップストリーム リポジトリとして stable を使用してパッケージを取得するように VM を構成します。

    deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo stable 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-west1 に公開リポジトリ my-repo からパッケージをインストールするには、次のコマンドを使用します。

    echo 'deb http://us-west1-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 を再実行してリポジトリ ソースを更新します。

次のステップ