Configura las VMs para instalar paquetes de Debian

En esta página, se describe la configuración de VMs para instalar paquetes de Debian desde un repositorio de Apt de Artifact Registry.

Antes de comenzar

Si el repositorio de Apt de destino no existe, crea un repositorio estándar o remoto nuevo. Puedes crear un repositorio privado o público que no requiere la autenticación de varios factores.

Prepara una VM para acceder a un repositorio de Apt

Repositorio privado

  1. Elige la cuenta de servicio que usarás para otorgar acceso.

    • Para las VMs de Compute Engine, este podría ser el cuenta de servicio predeterminada. Artifact Registry recupera automáticamente las VMs de Compute Engine credenciales de cuenta de servicio para cualquier VM que use una cuenta de servicio.
    • Para otras VMs, crea o elegir una cuenta de servicio para actuar en nombre de tu VM. Necesitarás la ubicación del archivo de claves de la cuenta de servicio para configurar la VM. Tú puedes ver y crear claves para cuentas existentes en la Cuentas de servicio.
  2. Otorga permisos de acceso al repositorio a tu cuenta de servicio.

  3. Preparar la VM para acceder al repositorio

    VM de Compute Engine

    VM de Debian

    1. Asignar cloud-platform permisos de acceso a la API a la VM. Para obtener más información sobre los permisos de acceso, consulta Cambia la cuenta de servicio y los permisos de acceso de una instancia.

    2. Actualiza Apt con el siguiente comando:

      sudo apt update
      
    3. Instala el paquete apt-transport-artifact-registry en la VM:

      sudo apt install apt-transport-artifact-registry
      

    VM de Ubuntu

    1. Instala las claves de firma del repositorio de Apt con los siguientes comandos: :

      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 -
      

      Reemplaza LOCATION por la ubicación de del repositorio.

    2. Asignar cloud-platform permisos de acceso a la API a la VM. Para obtener información sobre cómo configurar permisos de acceso, consulta Cambia la cuenta de servicio y los permisos de acceso de una instancia.

    3. Configura tu VM para acceder a los paquetes de Artifact Registry con el siguiente 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. Actualiza Apt con el siguiente comando:

      sudo apt update
      
    5. Instala el paquete apt-transport-artifact-registry en la VM:

      sudo apt install apt-transport-artifact-registry
      

    Otra VM

    1. Instala las claves de firma del repositorio de Apt con los siguientes comandos: :

      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 -
      

      Reemplaza LOCATION por la ubicación de del repositorio.

    2. Configura tu VM para acceder a los paquetes de Artifact Registry con el siguiente 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. Actualiza Apt con el siguiente comando:

      sudo apt update
      
    4. Instala el paquete apt-transport-artifact-registry en la VM:

      sudo apt install apt-transport-artifact-registry
      
    5. Busca la línea #Service-Account-JSON "/path/to/creds.json"; en el archivo /etc/apt/apt.conf.d/90artifact-registry y, luego, Quita los comentarios de la línea y agrega la ruta de acceso de la clave de tu cuenta de servicio.

      Entrada del archivo de configuración:

      Service-Account-JSON  "PATH_TO_SERVICE_ACCOUNT_KEY";
      

      Reemplazar PATH_TO_SERVICE_ACCOUNT_KEY por la ruta de acceso al archivo JSON de claves de tu cuenta de servicio.

Repositorio público

  1. Configura el acceso público al repositorio.

  2. Si configuras una VM fuera de Google Cloud, prepara tu máquina para acceder al repositorio. Si quieres configurar VM de Compute Engine, continúa con el paso siguiente.

    Instala la clave de verificación de firma pública con el siguiente comando:

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

    Reemplaza LOCATION por la ubicación del repositorio.

  3. Actualiza Apt con el siguiente comando:

    sudo apt update
    

Configura una VM para acceder a un repositorio de Apt estándar

Configura una VM para acceder a un repositorio de Apt:

  1. Genera el comando de configuración de la VM ejecutando el Comando gcloud beta artifacts print-settings apt:

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

    Reemplaza lo siguiente:

    • LOCATION es una ubicación regional o multirregional.
    • REPOSITORY es el nombre de Artifact Registry. en un repositorio de confianza.

    El resultado es similar a este:

    # 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. Configura Apt para recuperar paquetes de tu repositorio con el comando echo del resultado del comando print-settings.

    Por ejemplo, para instalar paquetes del repositorio público my-repo en el proyecto my-project y en la ubicación us-central1, usa lo siguiente :

    echo 'deb ar+https://us-central1-apt.pkg.dev/projects/my-project my-repo main'
    
  3. Actualiza las fuentes de tu repositorio con el siguiente comando:

    sudo apt update
    

Ahora, Apt se puede conectar al repositorio.

Si creas repositorios Apt adicionales, puedes agregarlos al artifact-registry.list y, luego, vuelve a ejecutar sudo apt update para actualizar del repositorio de código fuente.

Configura una VM para acceder a un repositorio de Apt remoto

Configurar una VM para que use solo un repositorio de Apt remoto en lugar de un repositorio repositorio upstream de Apt, reemplaza el repositorio estándar por tu repositorio remoto en el archivo /etc/apt/sources.list de la VM.

  1. Otorga permisos de escritura de Artifact Registry en todo el proyecto a la cuenta de servicio predeterminada de Compute Engine:

     gcloud projects add-iam-policy-binding PROJECT_ID \
       --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
       --role=roles/artifactregistry.writer
    
  2. Ve a la página Instancias de VM.

  3. En la fila de tu VM, haz clic en SSH.

    Se abrirá una ventana nueva con una sesión de la terminal en la VM.

  4. Abre el archivo /etc/apt/sources.list de la VM y busca el repositorio estándar que deseas reemplazar por tu nuevo repositorio remoto.

  5. Borra la línea del repositorio estándar y reemplázala por lo siguiente:

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

    Reemplaza lo siguiente:

    • LOCATION por la configuración regional o multirregional location del repositorio remoto.
    • PROJECT_ID por el ID del proyecto de la VM
    • REMOTE_REPOSITORY_NAME por el nombre que le asignaste al control remoto en un repositorio de confianza.
    • UPSTREAM_REPOSITORY_NAME por el nombre del flujo de trabajo upstream de un repositorio para el control remoto.
    • COMPONENTS con una lista separada por espacios en blanco de los nombres de los componentes.

    Por ejemplo, lo siguiente configura la VM para que recupere paquetes del repositorio my-repo en el proyecto my-project en ubicación us-east1 con buster como repositorio upstream para los componentes main, contrib y non-free.

    deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo buster main contrib non-free
    
  6. Actualiza las fuentes de tu repositorio con el siguiente comando:

    sudo apt update
    

    Ahora, Apt se puede conectar al repositorio.

Usar un repositorio de Apt remoto como copia de seguridad

Si quieres mantener el upstream estándar como primera opción y agregar el repositorio remoto como opción de resguardo, puedes mantener el flujo ascendente al archivo sources.list o adjuntar el repositorio remoto al final de el archivo sources.list o crea una lista nueva en la carpeta sources.list.d.

Para crear un archivo artifact-registry.list nuevo en la carpeta sources.list.d, haz lo siguiente: Ejecuta el siguiente 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

Reemplaza lo siguiente:

  • LOCATION por la configuración regional o multirregional location del repositorio remoto.
  • PROJECT_ID por el ID del proyecto de la VM
  • REMOTE_REPOSITORY_NAME por el nombre que le asignaste al control remoto en un repositorio de confianza.
  • UPSTREAM_REPOSITORY_NAME por el nombre del flujo de trabajo upstream de un repositorio para el control remoto.
  • COMPONENTS con una lista separada por espacios en blanco de los nombres de los componentes.

Si creas repositorios Apt adicionales, puedes agregarlos al artifact-registry.list o sources.list y, luego, vuelve a ejecutar sudo apt update para actualizar las fuentes del repositorio.

Configura el acceso HTTP a un repositorio de Apt

Si usas herramientas de cliente antiguas que no son compatibles con la encriptación SSL, puedes configurar acceso público al repositorio de Apt y acceder a él a través de HTTP. Las solicitudes se enviaron a los repositorios legibles públicamente que usan HTTP se rechazarán si una operación de el token de acceso se presenta con la solicitud.

  1. Configura el acceso público al repositorio.

  2. Para configurar Apt para que recupere paquetes de tu repositorio con HTTP, ejecuta el siguiente comando:

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

    Reemplaza lo siguiente:

    • LOCATION por la ubicación del repositorio
    • PROJECT_ID por el ID del proyecto del repositorio
    • REPOSITORY por el nombre del repositorio

    Por ejemplo, para instalar paquetes del repositorio público my-repo en el en el proyecto my-project y en la ubicación us-central1 mediante HTTP, usa el siguiente comando:

    echo 'deb http://us-central1-apt.pkg.dev/projects/my-project my-repo main' >> /etc/apt/sources.list.d/artifact-registry.list
    
  3. Actualiza las fuentes de tu repositorio con el siguiente comando:

    sudo apt update
    

Ahora, Apt se puede conectar al repositorio.

Si creas repositorios de Apt adicionales, puedes agregarlos al archivo artifact-registry.list y, luego, volver a ejecutar sudo apt update para actualizar las fuentes del repositorio.

¿Qué sigue?