Solucionar problemas de registro de Ubuntu Pro


En ocasiones, Compute Engine no registra automáticamente las licencias de Ubuntu Pro de pago por uso. En este documento se describe cómo resolver los problemas que pueden surgir al registrar instancias de máquina virtual (VM) de Compute Engine que ejecutan licencias de Ubuntu Pro de pago por uso.

Comprobar el estado del registro

Para comprobar si tu licencia está registrada, conéctate a la VM y ejecuta el siguiente comando:

sudo ua status

Si el registro se ha realizado correctamente, verás un resultado similar al siguiente y no tendrás que hacer nada más:

SERVICE          ENTITLED  STATUS    DESCRIPTION
cc-eal           yes       disabled  Common Criteria EAL2 Provisioning Packages
cis              yes       disabled  Security compliance and audit tools
esm-apps         yes       enabled   Expanded Security Maintenance for Applications
esm-infra        yes       enabled   Expanded Security Maintenance for Infrastructure
fips             yes       disabled  NIST-certified core packages
fips-updates     yes       disabled  NIST-certified core packages with priority security updates
livepatch        yes       enabled   Canonical Livepatch service

Si el registro falla y Ubuntu Pro no se registra, verás un mensaje similar al siguiente:

This machine is not attached to an Ubuntu Pro subscription.

Registrar una licencia manualmente

Si Compute Engine no ha podido registrar automáticamente tu licencia de Ubuntu Pro, puedes registrarla manualmente ejecutando el siguiente comando:

sudo pro auto-attach

El resultado debería ser similar al siguiente:

  • Registro correcto:

    This machine is already attached to PROJECT_ID
    To use a different subscription first run: sudo pro detach.
    
  • Fallo de registro:

    Internal Server Error
    

Solucionar problemas de registro de licencias

Si no has podido registrar manualmente una licencia de Ubuntu Pro, resuelve el problema haciendo lo siguiente:

  1. Para comprobar el número de discos conectados a la VM, verifica que la VM puede acceder al servidor de metadatos ejecutando el siguiente comando:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"
    

    La salida es similar a la siguiente, que muestra el número de discos conectados a la VM:

    0/
    1/
    2/
    

    Si el resultado no muestra el número de discos conectados a la VM, consulta el artículo Solucionar problemas de acceso al servidor de metadatos.

  2. Para comprobar que el agente invitado de Google se está ejecutando, ejecuta el siguiente comando:

    systemctl status google-guest-agent.service
    

    El resultado debería ser similar al siguiente:

    ● google-guest-agent.service - Google Compute Engine Guest Agent
    Loaded: loaded (/lib/systemd/system/google-guest-agent.service; enabled;
    vendor preset: enabled)
    Active: active (running) since Thu 2023-04-20 16:35:11 PDT; 2h 12min ago
    Main PID: 4582 (google_guest_ag)
    Tasks: 10 (limit: 9525)
    

    Si el agente invitado no está instalado o ha fallado, instala o vuelve a instalar el entorno de invitado.

  3. Verifica que una cuenta de servicio esté asociada a la VM ejecutando el siguiente comando desde tu estación de trabajo local:

    gcloud compute instances describe VM_NAME \
       --zone ZONE --format="table(serviceAccounts.email)"
    

    Haz los cambios siguientes:

    • VM_NAME: el nombre de la VM
    • ZONE: la zona en la que se encuentra la VM

    El resultado debería ser similar al siguiente:

    EMAIL: ['XXXXXXXX-compute@developer.gserviceaccount.com']
    

    Anota el correo de la cuenta de servicio.

  4. Comprueba si la cuenta de servicio está habilitada ejecutando la siguiente consulta:

    gcloud logging read --freshness=90d "SERVICE_ACCOUNT_EMAIL protoPayload.methodName=google.iam.admin.v1.DisableServiceAccount"
    

    Sustituye SERVICE_ACCOUNT_EMAIL por la dirección de correo asociada a la cuenta de servicio de la VM.

    El resultado debería ser similar al siguiente:

    insertId: 1ne5thkf13sxec
    logName: projects/testproject/logs/cloudaudit.googleapis.com%2Factivity
    protoPayload:
     '@type': type.googleapis.com/google.cloud.audit.AuditLog
    authenticationInfo:
    principalEmail: principalemail@google.com
    principalSubject: user:pricipalemail@google.com
    authorizationInfo:
     granted: true
    permission: iam.serviceAccounts.disable
    resource: projects/-/serviceAccounts/XXXXXXXXXXXXXX
    resourceAttributes:
      name: projects/-/serviceAccounts/XXXXXXXXXXXXXXXX
    methodName: google.iam.admin.v1.DisableServiceAccount
    request:
    '@type': type.googleapis.com/google.iam.admin.v1.DisableServiceAccountRequest
    name: projects/testproject/serviceAccounts/-compute@developer.gserviceaccount.com
    requestMetadata:
     destinationAttributes: {}
     requestAttributes:
       auth: {}
       time: '2024-01-25T21:37:55.748811275Z'
    resourceName: projects/-/serviceAccounts/XXXXXXXXXX
    response:
     '@type': type.googleapis.com/google.protobuf.Empty
     serviceName: iam.googleapis.com
     status: {}
    receiveTimestamp: '2024-01-25T21:37:56.409675900Z'
    resource:
    labels:
     email_id: -compute@developer.gserviceaccount.com
     project_id: testproject
     unique_id: 'XXXXXXXXXXXXXXXX'
    type: service_account
    severity: NOTICE
    timestamp: '2024-01-25T21:37:55.721215307Z'
    

    Si la cuenta de servicio no está habilitada, vuelve a habilitarla.

Una vez que hayas vuelto a habilitar la cuenta de servicio, intenta registrar la licencia siguiendo las instrucciones de la sección Registrar una licencia manualmente de este documento.