Configure VMs para instalar pacotes Debian

Esta página descreve a configuração de VMs para instalar pacotes Debian a partir de um repositório Apt do Artifact Registry.

Antes de começar

Se o repositório Apt de destino não existir, crie um repositório padrão ou remoto. Pode criar um repositório privado ou um repositório público que não exija autenticação.

Prepare uma VM para aceder a um repositório Apt

Repositório privado

  1. Escolha a conta de serviço que vai usar para conceder acesso.

    • Para VMs do Compute Engine, pode ser a conta de serviço predefinida. O Artifact Registry obtém automaticamente as credenciais da conta de serviço da VM do Compute Engine para qualquer VM que use uma conta de serviço.
    • Para outras VMs, crie ou escolha uma conta de serviço para agir em nome da sua VM. Precisa da localização do ficheiro de chave da conta de serviço para configurar a VM. Pode ver e criar chaves para contas existentes na página Contas de serviço.
  2. Conceda autorizações de acesso ao repositório à sua conta de serviço.

  3. Prepare a VM para aceder ao repositório.

    VM do Compute Engine

    VM do Debian

    1. Atribua cloud-platform âmbitos de acesso à API à VM. Para ver informações sobre a definição de âmbitos de acesso, consulte o artigo Alterar a conta de serviço e os âmbitos de acesso de uma instância.

    2. Atualize o Apt com o seguinte comando:

      sudo apt update
      
    3. Instale o pacote apt-transport-artifact-registry na VM:

      sudo apt install apt-transport-artifact-registry
      

    VM do Ubuntu

    1. Instale as chaves de assinatura do repositório Apt através do seguinte comando:

      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 -
      

      Substitua LOCATION pela localização regional ou multirregional do repositório.

    2. Atribua cloud-platform âmbitos de acesso à API à VM. Para ver informações sobre a definição de âmbitos de acesso, consulte o artigo Alterar a conta de serviço e os âmbitos de acesso de uma instância.

    3. Configure a sua VM para aceder a pacotes do Artifact Registry através do seguinte comando:

      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. Atualize o Apt com o seguinte comando:

      sudo apt update
      
    5. Instale o pacote apt-transport-artifact-registry na VM:

      sudo apt install apt-transport-artifact-registry
      

    Outra VM

    1. Instale as chaves de assinatura do repositório Apt através do seguinte comando:

      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 -
      

      Substitua LOCATION pela localização regional ou multirregional do repositório.

    2. Configure a sua VM para aceder a pacotes do Artifact Registry através do seguinte comando:

      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. Atualize o Apt com o seguinte comando:

      sudo apt update
      
    4. Instale o pacote apt-transport-artifact-registry na VM:

      sudo apt install apt-transport-artifact-registry
      
    5. Encontre a linha #Service-Account-JSON "/path/to/creds.json"; no ficheiro /etc/apt/apt.conf.d/90artifact-registry e, de seguida, remova o comentário da linha e adicione o caminho da chave da conta de serviço.

      Entrada do ficheiro de configuração:

      Service-Account-JSON  "PATH_TO_SERVICE_ACCOUNT_KEY";
      

      Substitua PATH_TO_SERVICE_ACCOUNT_KEY pelo caminho para o ficheiro JSON da chave da conta de serviço.

Repositório público

  1. Configure o acesso público ao repositório.

  2. Se estiver a configurar uma VM fora do Google Cloud, prepare o seu computador para aceder ao repositório. Se estiver a configurar uma VM do Compute Engine, avance para o passo seguinte.

    Instale a chave de validação de assinatura pública através do seguinte comando:

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

    Substitua LOCATION pela localização regional ou multirregional do repositório.

  3. Atualize o Apt com o seguinte comando:

    sudo apt update
    

Configure uma VM para aceder a um repositório Apt padrão

Configure uma VM para aceder a um repositório Apt:

  1. Execute o comando gcloud beta artifacts print-settings apt para gerar o comando de configuração da VM:

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

    Substitua o seguinte:

    • LOCATION é a localização regional ou multirregional do repositório.
    • REPOSITORY é o nome do repositório do Artifact Registry.

    O resultado é semelhante ao seguinte:

    # 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. Configure o Apt para obter pacotes do seu repositório através do comando echo a partir do resultado do comando print-settings.

    Por exemplo, para instalar pacotes do repositório público my-repo no projeto my-project e na localização us-west1, use o seguinte comando:

    echo 'deb ar+https://us-west1-apt.pkg.dev/projects/my-project my-repo main'
    
  3. Atualize as origens do repositório com o seguinte comando:

    sudo apt update
    

O Apt já pode estabelecer ligação ao repositório.

Se criar repositórios Apt adicionais, pode adicioná-los ao ficheiro artifact-registry.list e, em seguida, executar novamente sudo apt update para atualizar as origens dos repositórios.

Configure uma VM para aceder a um repositório Apt remoto

Para configurar uma VM para usar apenas um repositório Apt remoto em vez de um repositório Apt upstream padrão, substitua o repositório padrão pelo seu repositório remoto no ficheiro /etc/apt/sources.list da VM.

  1. Conceda autorizações de escrita do Artifact Registry ao nível do projeto à conta de serviço do Compute Engine predefinida:

     gcloud projects add-iam-policy-binding PROJECT_ID \
       --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
       --role=roles/artifactregistry.writer
    
  2. Aceda à página de instâncias de VM.

  3. Na linha com a sua VM, clique em SSH.

    É aberta uma nova janela com uma sessão de terminal na VM.

  4. Abra o ficheiro /etc/apt/sources.list da VM e localize o repositório padrão que quer substituir pelo novo repositório remoto.

  5. Elimine a linha do repositório padrão e substitua-a pelo seguinte:

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

    Substitua o seguinte:

    • LOCATION com a localização regional ou multirregional do repositório remoto.
    • PROJECT_ID com o ID do projeto da VM.
    • REMOTE_REPOSITORY_NAME com o nome que atribuiu ao seu repositório remoto.
    • UPSTREAM_REPOSITORY_NAME com o nome do repositório a montante do seu repositório remoto.
    • COMPONENTS com uma lista de nomes de componentes separados por espaços em branco.

    Por exemplo, a seguinte configuração configura a VM para obter pacotes do repositório my-repo no projeto my-project na localização us-east1 usando buster como o repositório a montante para os componentes main, contrib e non-free.

    deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo buster main contrib non-free
    
  6. Atualize as origens do repositório com o seguinte comando:

    sudo apt update
    

    O Apt já pode estabelecer ligação ao repositório.

Use um repositório Apt remoto como alternativa

Se quiser manter o upstream padrão como a primeira opção e adicionar o repositório remoto como uma opção alternativa, pode manter o upstream padrão no ficheiro sources.list e anexar o repositório remoto ao final do ficheiro sources.list ou criar uma nova lista na pasta sources.list.d.

Para criar um novo ficheiro artifact-registry.list na pasta sources.list.d, execute o seguinte comando:

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

Substitua o seguinte:

  • LOCATION é a localização regional ou multirregional do repositório.
  • PROJECT_ID com o ID do projeto da VM.
  • REMOTE_REPOSITORY_NAME com o nome que deu ao seu repositório remoto.
  • UPSTREAM_REPOSITORY_NAME com o nome do repositório a montante para o seu comando.
  • COMPONENTS com uma lista de nomes de componentes separados por espaços em branco.

Se criar repositórios Apt adicionais, pode adicioná-los ao ficheiro artifact-registry.list ou sources.list e, em seguida, executar novamente sudo apt update para atualizar as origens do repositório.

Configure o acesso HTTP a um repositório Apt

Se usar ferramentas de cliente mais antigas que não suportam a encriptação SSL, pode configurar o acesso público ao seu repositório Apt e aceder ao mesmo através de HTTP. Os pedidos enviados para repositórios legíveis publicamente através de HTTP são rejeitados se for apresentado um token de autenticação com o pedido.

  1. Configure o acesso público ao repositório.

  2. Para configurar o Apt para obter pacotes do seu repositório através de HTTP, execute o seguinte comando:

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

    Substitua o seguinte:

    • LOCATION é a localização regional ou multirregional do repositório.
    • PROJECT_ID é o ID do projeto do repositório.
    • REPOSITORY é o nome do repositório.

    Por exemplo, para instalar pacotes do repositório público my-repo no projeto my-project e na localização us-west1 através de HTTP, use o seguinte comando:

    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. Atualize as origens do repositório com o seguinte comando:

    sudo apt update
    

O Apt já pode estabelecer ligação ao repositório.

Se criar repositórios Apt adicionais, pode adicioná-los ao ficheiro artifact-registry.list e, em seguida, executar novamente sudo apt update para atualizar as origens dos repositórios.

O que se segue?