Configurar máquinas virtuales para instalar paquetes Debian

En esta página se describe cómo configurar máquinas virtuales para instalar paquetes Debian desde un repositorio Apt de Artifact Registry.

Antes de empezar

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

Preparar una VM para acceder a un repositorio de Apt

Repositorio privado

  1. Elige la cuenta de servicio que vas a usar para conceder acceso.

    • En el caso de las máquinas virtuales de Compute Engine, puede ser la cuenta de servicio predeterminada. Artifact Registry obtiene automáticamente las credenciales de la cuenta de servicio de la VM de Compute Engine de cualquier VM que use una cuenta de servicio.
    • En el caso de otras máquinas virtuales, crea o elige una cuenta de servicio para que actúe en nombre de tu máquina virtual. Necesitarás la ubicación del archivo de clave de la cuenta de servicio para configurar la VM. Puedes ver y crear claves para cuentas disponibles en la página Cuentas de servicio.
  2. Concede permisos de acceso al repositorio a tu cuenta de servicio.

  3. Prepara la VM para acceder al repositorio.

    VM de Compute Engine

    VM de Debian

    1. Asigna cloud-platformpermisos de acceso a la API a la VM. Para obtener información sobre cómo definir los permisos de acceso, consulta el artículo Cambiar 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 máquina virtual:

      sudo apt install apt-transport-artifact-registry
      

    VM de Ubuntu

    1. Instala las claves de firma del repositorio Apt con el siguiente 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 -
      

      Sustituye LOCATION por la ubicación regional o multirregional del repositorio.

    2. Asigna cloud-platformpermisos de acceso a la API a la VM. Para obtener información sobre cómo definir los permisos de acceso, consulta el artículo Cambiar la cuenta de servicio y los permisos de acceso de una instancia.

    3. Configura tu máquina virtual 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 máquina virtual:

      sudo apt install apt-transport-artifact-registry
      

    Otra VM

    1. Instala las claves de firma del repositorio Apt con el siguiente 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 -
      

      Sustituye LOCATION por la ubicación regional o multirregional del repositorio.

    2. Configura tu máquina virtual 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 máquina virtual:

      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, descoméntala y añade la ruta de la clave de tu cuenta de servicio.

      Entrada del archivo de configuración:

      Service-Account-JSON  "PATH_TO_SERVICE_ACCOUNT_KEY";
      

      Sustituye PATH_TO_SERVICE_ACCOUNT_KEY por la ruta al archivo JSON de la clave de tu cuenta de servicio.

Repositorio público

  1. Configura el acceso público al repositorio.

  2. Si vas a configurar una VM fuera de Google Cloud, prepara tu máquina para acceder al repositorio. Si estás configurando una máquina virtual de Compute Engine, ve al paso siguiente.

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

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

    Sustituye LOCATION por la ubicación regional o multirregional del repositorio.

  3. Actualiza Apt con el siguiente comando:

    sudo apt update
    

Configurar una VM para acceder a un repositorio 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
    

    Haz los cambios siguientes:

    • LOCATION es la ubicación regional o multirregional del repositorio.
    • REPOSITORY es el nombre del repositorio de Artifact Registry.

    El resultado debería ser similar al siguiente:

    # 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 que obtenga paquetes de tu repositorio mediante el comando echo de la salida 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-west1, usa el siguiente comando:

    echo 'deb ar+https://us-west1-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 puede conectarse al repositorio.

Si creas repositorios Apt adicionales, puedes añadirlos al archivo artifact-registry.list y, a continuación, volver a ejecutar sudo apt update para actualizar las fuentes del repositorio.

Configurar una VM para acceder a un repositorio Apt remoto

Para configurar una VM de forma que solo use un repositorio Apt remoto en lugar de un repositorio Apt estándar, sustituye el repositorio estándar por el repositorio remoto en el archivo /etc/apt/sources.list de la VM.

  1. Concede 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 máquina virtual, haz clic en SSH.

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

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

  5. Elimina la línea del repositorio estándar y sustitúyela por la siguiente:

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

    Haz los cambios siguientes:

    • LOCATION con la ubicación regional o multirregional del repositorio remoto.
    • PROJECT_ID por el ID del proyecto de la VM.
    • REMOTE_REPOSITORY_NAME con el nombre que le hayas dado al repositorio remoto.
    • UPSTREAM_REPOSITORY_NAME con el nombre del repositorio upstream de tu repositorio remoto.
    • COMPONENTS con una lista de nombres de componentes separados por espacios.

    Por ejemplo, la siguiente configuración permite que la VM obtenga paquetes del repositorio my-repo del proyecto my-project en la ubicación us-east1 mediante buster como repositorio upstream de 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 puede conectarse al repositorio.

Usar un repositorio Apt remoto como copia de seguridad

Si quieres mantener el upstream estándar como primera opción y añadir el repositorio remoto como opción alternativa, puedes mantener el upstream estándar en el archivo sources.list y añadir el repositorio remoto al final del archivo sources.list o crear una lista en la carpeta sources.list.d.

Para crear un archivo artifact-registry.list en la carpeta sources.list.d, 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

Haz los cambios siguientes:

  • LOCATION es la ubicación regional o multirregional del repositorio.
  • PROJECT_ID por el ID del proyecto de la VM.
  • REMOTE_REPOSITORY_NAME con el nombre que le hayas dado al repositorio remoto.
  • UPSTREAM_REPOSITORY_NAME con el nombre del repositorio upstream de tu repositorio remoto.
  • COMPONENTS con una lista de nombres de componentes separados por espacios.

Si crea repositorios Apt adicionales, puede añadirlos al archivo artifact-registry.list o sources.list y, a continuación, volver a ejecutar sudo apt update para actualizar las fuentes de los repositorios.

Configurar el acceso HTTP a un repositorio de Apt

Si usas herramientas de cliente antiguas que no admiten el cifrado SSL, puedes configurar el acceso público a tu repositorio Apt y acceder a él a través de HTTP. Las solicitudes enviadas a repositorios de lectura pública mediante HTTP se rechazarán si se presenta un token de autenticación con la solicitud.

  1. Configura el acceso público al repositorio.

  2. Para configurar Apt de forma que obtenga paquetes de tu repositorio mediante HTTP, ejecuta el siguiente comando:

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

    Haz los cambios siguientes:

    • LOCATION es la ubicación regional o multirregional del repositorio.
    • PROJECT_ID es el ID del proyecto del repositorio.
    • REPOSITORY es el nombre del repositorio.

    Por ejemplo, para instalar paquetes del repositorio público my-repo en el proyecto my-project y en la ubicación us-west1 mediante HTTP, usa el siguiente 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. Actualiza las fuentes de tu repositorio con el siguiente comando:

    sudo apt update
    

Ahora, Apt puede conectarse al repositorio.

Si creas repositorios Apt adicionales, puedes añadirlos al archivo artifact-registry.list y, a continuación, volver a ejecutar sudo apt update para actualizar las fuentes del repositorio.

Siguientes pasos