Configurar VMs para instalar pacotes do Debian

Nesta página, descrevemos como configurar VMs para instalar pacotes Debian usando um repositório Apt do Artifact Registry.

Antes de começar

Se o repositório de destino do Apt não existir, crie um novo repositório padrão ou remoto. É possível criar um repositório particular ou um repositório público que não exija autenticação.

Preparar uma VM para acessar um repositório Apt

Repositório particular

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

    • Para VMs do Compute Engine, essa pode ser a conta de serviço padrão. O Artifact Registry recupera automaticamente as credenciais da conta de serviço de 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 VM. Você precisará o local do arquivo de chave da conta de serviço para configurar a VM. Você podem visualizar e criar chaves para contas existentes no Contas de serviço.
  2. Conceda permissões de acesso ao repositório à sua conta de serviço.

  3. Prepare a VM para acessar o repositório.

    VM do Compute Engine

    VM do Debian

    1. Atribua escopos de acesso da API cloud-platform à VM. Para informações sobre como definir escopos de acesso, consulte Como alterar a conta de serviço e os escopos de acesso de uma instância.

    2. Atualize o Apt usando 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 usando o 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 pelo local do repositório.

    2. Atribuir cloud-platform escopos de acesso da API à VM. Para informações sobre como definir escopos de acesso, consulte Como alterar a conta de serviço e os escopos de acesso de uma instância.

    3. Configure sua VM para acessar pacotes do Artifact Registry usando o 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 usando 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 do Apt usando o 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 pelo local do repositório.

    2. Configure sua VM para acessar pacotes do Artifact Registry usando o 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 usando o seguinte comando:

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

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

      Entrada do arquivo de configuração:

      Service-Account-JSON  "PATH_TO_SERVICE_ACCOUNT_KEY";
      

      Substituir PATH_TO_SERVICE_ACCOUNT_KEY por o caminho para o arquivo JSON da chave da conta de serviço.

Repositório público

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

  2. Se você estiver configurando uma VM fora do Google Cloud, prepare-se sua máquina para acessar o repositório. Se você está configurando VM do Compute Engine, prossiga para a próxima etapa.

    Instale a chave de verificação de assinatura pública usando o seguinte comando:

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

    Substitua LOCATION pelo local do repositório.

  3. Atualize o Apt usando o seguinte comando:

    sudo apt update
    

Configurar uma VM para acessar um repositório Apt padrão

Configure uma VM para acessar um repositório Apt:

  1. Gere o comando de configuração da VM executando o comando gcloud beta artifacts print-settings apt:

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

    Substitua:

    • LOCATION é uma região regional ou multirregional location.
    • REPOSITORY é o nome do Artifact Registry. repositório de dados.

    O resultado será assim:

    # 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 buscar pacotes do seu repositório usando o echo na saída do comando print-settings.

    Por exemplo, para instalar pacotes do repositório público my-repo no projeto my-project e no local us-central1, use o seguinte comando:

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

    sudo apt update
    

Agora o apt pode se conectar ao repositório.

Se você criar outros repositórios Apt, poderá adicioná-los ao artifact-registry.list e execute novamente sudo apt update para atualizar fontes de repositório de conteúdo.

Configurar uma VM para acessar um repositório Apt remoto

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

  1. Conceda permissões de gravação do Artifact Registry em todo o projeto ao padrão Conta de serviço do Compute Engine:

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

  3. Na linha da VM, clique em SSH.

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

  4. Abra o arquivo /etc/apt/sources.list da VM e localize o arquivo repositório que você quer substituir pelo novo repositório remoto.

  5. Exclua a linha do repositório padrão e substitua-a por esta:

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

    Substitua:

    • LOCATION com o modelo regional ou multirregional local do repositório remoto.
    • PROJECT_ID pelo ID do projeto da VM.
    • REMOTE_REPOSITORY_NAME pelo nome que você deu ao controle remoto repositório de dados.
    • UPSTREAM_REPOSITORY_NAME pelo nome do repositório upstream do controle remoto.
    • COMPONENTS por uma lista separada por espaços em branco de nomes de componentes.

    Por exemplo, o comando a seguir configura a VM para buscar pacotes do repositório my-repo no projeto my-project no local us-east1 usando buster como o repositório upstream 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 fontes do repositório com o seguinte comando:

    sudo apt update
    

    Agora o apt pode se conectar ao repositório.

Usar um repositório Apt remoto como backup

Se você quiser manter o upstream padrão como a primeira opção e adicionar o repositório remoto como alternativa, é possível manter o upstream padrão no arquivo sources.list e anexe o repositório remoto ao final do sources.list ou crie uma nova lista na pasta sources.list.d.

Para criar um novo arquivo 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:

  • LOCATION com o local regional ou multirregional do repositório remoto.
  • PROJECT_ID pelo ID do projeto da VM.
  • REMOTE_REPOSITORY_NAME pelo nome que você deu ao repositório remoto.
  • UPSTREAM_REPOSITORY_NAME pelo nome do repositório upstream do controle remoto.
  • COMPONENTS por uma lista separada por espaços em branco de nomes de componentes.

Se você criar outros repositórios do Apt, adicione-os ao arquivo artifact-registry.list ou sources.list e execute novamente o sudo apt update para atualizar as fontes do repositório.

Configurar o acesso HTTP a um repositório Apt

Se você estiver usando ferramentas de cliente mais antigas que não oferecem suporte à criptografia SSL, configure o acesso público ao seu repositório do Apt e acesse-o via HTTP. Solicitações enviadas para repositórios públicos legíveis usando HTTP serão rejeitados se uma autenticação token é apresentado com a solicitação.

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

  2. Para configurar o Apt para buscar pacotes do seu repositório usando HTTP, execute o seguinte comando:

     echo 'deb http://LOCATION-apt.pkg.dev/projects/PROJECT_ID REPOSITORY main' >> /etc/apt/sources.list.d/artifact-registry.list
    

    Substitua:

    • LOCATION pelo local do repositório.
    • PROJECT_ID pelo ID do projeto do repositório.
    • REPOSITORY pelo nome do repositório.

    Por exemplo, para instalar pacotes do repositório público my-repo no projeto my-project e no local us-central1 usando HTTP, use a seguinte comando:

    echo 'deb http://us-central1-apt.pkg.dev/projects/my-project my-repo main' >> /etc/apt/sources.list.d/artifact-registry.list
    
  3. Atualize as origens do repositório com o seguinte comando:

    sudo apt update
    

Agora o apt pode se conectar ao repositório.

Se você criar outros repositórios Apt, poderá adicioná-los ao artifact-registry.list e execute novamente sudo apt update para atualizar fontes de repositório de conteúdo.

A seguir