פתרון בעיות ברישום ל-Ubuntu Pro

לפעמים, מערכת Compute Engine לא מצליחה לרשום באופן אוטומטי רישיונות של Ubuntu Pro בתשלום לפי שימוש. במאמר הזה מוסבר איך לפתור בעיות שעלולות להתרחש במהלך רישום של מכונות וירטואליות (VM) של Compute Engine שמופעלות ברישיונות של Ubuntu Pro בתשלום לפי שימוש (PAYG).

בדוק את סטטוס הרישום

כדי לבדוק אם הרישיון רשום, מתחברים למכונה הווירטואלית ומריצים את הפקודה הבאה:

sudo ua status

אם ההרשמה הצליחה, הפלט ייראה כך ולא יידרשו פעולות נוספות:

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

אם הרישום נכשל ו-Ubuntu Pro לא רשום, מוצגת הודעה דומה להודעה הבאה:

This machine is not attached to an Ubuntu Pro subscription.

רישום ידני של רישיון

אם Compute Engine לא הצליח לרשום אוטומטית את רישיון Ubuntu Pro, אפשר לרשום את הרישיון באופן ידני על ידי הפעלת הפקודה הבאה:

sudo pro auto-attach

הפלט אמור להיראות כך:

  • ההרשמה בוצעה בהצלחה:

    This machine is already attached to PROJECT_ID
    To use a different subscription first run: sudo pro detach.
    
  • ההרשמה נכשלה:

    Internal Server Error
    

פתרון בעיות ברישום רישיונות

אם לא הצלחתם לרשום ידנית רישיון של Ubuntu Pro, כדי לפתור את הבעיה צריך:

  1. מריצים את הפקודה הבאה כדי לוודא שמכונת ה-VM יכולה להגיע לשרת המטא-נתונים ולבדוק את מספר הדיסקים שמצורפים למכונת ה-VM:

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

    הפלט אמור להיראות כך, עם מספר הדיסקים שמצורפים למכונה הווירטואלית:

    0/
    1/
    2/
    

    אם בפלט לא מופיע מספר הדיסקים שמחוברים למכונה הווירטואלית, כדאי לעיין במאמר פתרון בעיות בגישה לשרת המטא-נתונים.

  2. מריצים את הפקודה הבאה כדי לוודא שהסוכן האורח של Google פועל:

    systemctl status google-guest-agent.service
    

    הפלט אמור להיראות כך:

    ● 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)
    

    אם סוכן האורח לא מותקן או שההתקנה שלו נכשלה, צריך להתקין או להתקין מחדש את סביבת האורח.

  3. כדי לוודא שחשבון שירות מצורף למכונה הווירטואלית, מריצים את הפקודה הבאה מתחנת העבודה המקומית:

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

    מחליפים את מה שכתוב בשדות הבאים:

    • VM_NAME: השם של ה-VM
    • ZONE: האזור שבו נמצאת המכונה הווירטואלית

    הפלט אמור להיראות כך:

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

    רושמים את כתובת האימייל של חשבון השירות.

  4. כדי לבדוק אם חשבון השירות מופעל, מריצים את השאילתה הבאה:

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

    מחליפים את SERVICE_ACCOUNT_EMAIL בכתובת האימייל שמשויכת לחשבון השירות של המכונה הווירטואלית.

    הפלט אמור להיראות כך:

    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'
    

    אם חשבון השירות לא מופעל, מפעילים אותו מחדש.

אחרי שמפעילים מחדש את חשבון השירות, מנסים לרשום את הרישיון לפי ההוראות שבקטע רישום רישיון באופן ידני במסמך הזה.