Os repositórios Apt do Artifact Registry permitem controlar quais versões de pacotes do Debian suas máquinas virtuais (VMs) instalam. É possível configurar instâncias do Compute Engine ou VMs externas para instalar pacotes de repositórios particulares ou públicos.
Antes de começar
Se o repositório Apt de destino não existir, crie um 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
Escolha a conta de serviço que você vai usar para conceder acesso.
- Para VMs do Compute Engine, pode ser a conta de serviço padrão. O Artifact Registry recupera 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 VM. Você vai precisar do local do arquivo de chave da conta de serviço para configurar a VM. É possível visualizar e criar chaves para contas atuais na página Contas de serviço.
Conceda permissões de acesso ao repositório à sua conta de serviço.
Prepare a VM para acessar o repositório.
VM do Compute Engine
VM do Debian
Atribua escopos de acesso à 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.Atualize o Apt usando o seguinte comando:
sudo apt updateInstale o pacote
apt-transport-artifact-registryna VM:sudo apt install apt-transport-artifact-registry
VM do Ubuntu
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 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.gpgSubstitua
LOCATIONpelo local regional ou multirregional do repositório.Atribua escopos de acesso à 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.Configure a VM para acessar os 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.listAtualize o Apt usando o seguinte comando:
sudo apt updateInstale o pacote
apt-transport-artifact-registryna VM:sudo apt install apt-transport-artifact-registry
Outra VM
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 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.gpgSubstitua
LOCATIONpelo local regional ou multirregional do repositório.Configure a VM para acessar os 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.listAtualize o Apt usando o seguinte comando:
sudo apt updateInstale o pacote
apt-transport-artifact-registryna VM:sudo apt install apt-transport-artifact-registryEncontre a linha
#Service-Account-JSON "/path/to/creds.json";no arquivo/etc/apt/apt.conf.d/90artifact-registry, remova a marca de comentário da linha e adicione o caminho da chave da conta de serviço.Entrada do arquivo de configuração:
Service-Account-JSON "PATH_TO_SERVICE_ACCOUNT_KEY";
Substitua
PATH_TO_SERVICE_ACCOUNT_KEYpelo caminho para o arquivo JSON da chave da conta de serviço.
Repositório público
Configure o acesso público ao repositório.
Se você estiver configurando uma VM fora do Google Cloud, prepare sua máquina para acessar o repositório. Se você estiver configurando uma VM do Compute Engine, prossiga para a próxima etapa.
Instale a chave pública de verificação de assinatura usando o seguinte comando:
curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/artifact-registry.gpgSubstitua
LOCATIONpelo local regional ou multirregional do repositório.Atualize o Apt usando o seguinte comando:
sudo apt update
Configurar uma VM para acessar um repositório padrão do Apt
Configure uma VM para acessar um repositório do Apt:
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=LOCATIONSubstitua:
-
LOCATIONé o local regional ou multirregional do repositório. REPOSITORYé o nome do repositório do Artifact Registry.
O resultado será o 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 [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
-
Configure o Apt para buscar pacotes do repositório usando o comando
echoda saída do comandoprint-settings.Por exemplo, para instalar pacotes do repositório público
my-repono projetomy-projecte no localus-west1, use o seguinte comando:echo 'deb ar+https://us-west1-apt.pkg.dev/projects/my-project my-repo main'
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 do Apt, poderá adicioná-los ao arquivo
artifact-registry.list e executar novamente sudo apt update para atualizar
as origens do repositório.
Configurar uma VM para acessar um repositório remoto do Apt
Para configurar uma VM para usar apenas um repositório remoto do Apt em vez de um repositório upstream padrão do Apt, substitua o repositório padrão pelo repositório remoto no arquivo /etc/apt/sources.list da VM.
Conceda permissões de gravação do Artifact Registry em todo o projeto para a conta de serviço padrão do Compute Engine:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.writerAcesse a página Instâncias de VMs.
Na linha com sua VM, clique em SSH.
Uma nova janela é aberta com uma sessão de terminal na VM.
Abra o arquivo
/etc/apt/sources.listda VM e localize o repositório padrão que você quer substituir pelo novo repositório remoto.Exclua 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 COMPONENTSSubstitua:
LOCATIONpelo local regional ou multirregional do repositório remoto.PROJECT_IDpelo ID do projeto da VM.REMOTE_REPOSITORY_NAMEpelo nome que você deu ao repositório remoto.UPSTREAM_REPOSITORY_NAMEpelo nome do repositório upstream do seu controle remoto.COMPONENTSpor 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-repono projetomy-projectno localus-east1usandostablecomo o repositório upstream para os componentesmain,contribenon-free.deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo stable main contrib non-freeAtualize as origens do repositório com o seguinte comando:
sudo apt updateAgora o Apt pode se conectar ao repositório.
Usar um repositório remoto do Apt como backup
Se você quiser manter o upstream padrão como a primeira opção e adicionar o
repositório remoto como uma opção de substituição, mantenha o upstream padrão no
arquivo sources.list e anexe o repositório remoto ao final do
arquivo 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é o local regional ou multirregional do repositório. PROJECT_IDpelo ID do projeto da VM.REMOTE_REPOSITORY_NAMEpelo nome que você deu ao repositório remoto.UPSTREAM_REPOSITORY_NAMEpelo nome do repositório upstream do seu remoto.COMPONENTSpor uma lista de nomes de componentes separados por espaços em branco.
Se você criar outros repositórios do Apt, poderá adicioná-los ao arquivo
artifact-registry.list ou sources.list e executar novamente 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 são compatíveis com a criptografia SSL, configure o acesso público ao repositório do Apt e acesse-o via HTTP. As solicitações enviadas para repositórios públicos legíveis usando HTTP serão rejeitadas se um token de autenticação for apresentado com a solicitação.
Configure o acesso público ao repositório.
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' | sudo tee -a /etc/apt/sources.list.d/artifact-registry.listSubstitua:
-
LOCATIONé o local 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-repono projetomy-projecte no localus-west1usando 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
-
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 do Apt, poderá adicioná-los ao arquivo
artifact-registry.list e executar novamente sudo apt update para atualizar
as origens do repositório.