הגדרת מכונות וירטואליות להתקנת חבילות Debian

הגדרת מכונות וירטואליות (VM) לחיבור למאגר Apt ב-Artifact Registry מאפשרת לכם להתקין ולעדכן חבילות Debian באמצעות כלי Apt רגילים. אתם יכולים להגדיר אימות ומקורות מאגרים למכונות וירטואליות ב-Compute Engine כדי למשוך חבילות ממאגרים פרטיים או ציבוריים.

לפני שמתחילים

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

הכנת מכונה וירטואלית לגישה למאגר Apt

מאגר פרטי

  1. בוחרים את חשבון השירות שבו רוצים להשתמש כדי להעניק גישה.

    • במכונות וירטואליות של Compute Engine, זה יכול להיות חשבון השירות שמוגדר כברירת מחדל. ‫Artifact Registry מאחזר באופן אוטומטי את פרטי הכניסה לחשבון של חשבון השירות של מכונת VM ב-Compute Engine לכל מכונה וירטואלית שמשתמשת בחשבון שירות.
    • לגבי מכונות וירטואליות אחרות, יוצרים או בוחרים חשבון שירות שיפעל בשם המכונה הווירטואלית. כדי להגדיר את המכונה הווירטואלית, תצטרכו את המיקום של קובץ המפתח של חשבון השירות. בדף חשבונות שירות אפשר לראות את המפתחות של חשבונות קיימים וליצור מפתחות חדשים.
  2. נותנים הרשאות גישה למאגר לחשבון השירות.

  3. מכינים את המכונה הווירטואלית (VM) לגישה למאגר.

    מכונה וירטואלית ב-Compute Engine

    מכונה וירטואלית של Debian

    1. מקצים cloud-platform היקפי גישה ל-API למכונה הווירטואלית. מידע על הגדרת היקפי גישה זמין במאמר שינוי חשבון השירות והיקפי הגישה של מופע.

    2. מעדכנים את Apt באמצעות הפקודה הבאה:

      sudo apt update
      
    3. מתקינים את חבילת apt-transport-artifact-registry במכונה הווירטואלית:

      sudo apt install apt-transport-artifact-registry
      

    מכונה וירטואלית של Ubuntu

    1. מתקינים את מפתחות החתימה של מאגר Apt באמצעות הפקודה הבאה:

      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.gpg
      

      ‫ מחליפים את LOCATION במיקום האזורי או במספר אזורים של המאגר.

    2. מקצים cloud-platform היקפי גישה ל-API למכונה הווירטואלית. מידע על הגדרת היקפי גישה זמין במאמר שינוי חשבון השירות והיקפי הגישה של מופע.

    3. מגדירים את ה-VM כך שיוכל לגשת לחבילות Artifact Registry באמצעות הפקודה הבאה:

      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. מעדכנים את Apt באמצעות הפקודה הבאה:

      sudo apt update
      
    5. מתקינים את חבילת apt-transport-artifact-registry במכונה הווירטואלית:

      sudo apt install apt-transport-artifact-registry
      

    מכונה וירטואלית אחרת

    1. מתקינים את מפתחות החתימה של מאגר Apt באמצעות הפקודה הבאה:

      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.gpg
      

      ‫ מחליפים את LOCATION במיקום האזורי או במספר אזורים של המאגר.

    2. מגדירים את ה-VM כך שיוכל לגשת לחבילות Artifact Registry באמצעות הפקודה הבאה:

      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. מעדכנים את Apt באמצעות הפקודה הבאה:

      sudo apt update
      
    4. מתקינים את חבילת apt-transport-artifact-registry במכונה הווירטואלית:

      sudo apt install apt-transport-artifact-registry
      
    5. מחפשים את השורה #Service-Account-JSON "/path/to/creds.json"; בקובץ /etc/apt/apt.conf.d/90artifact-registry, מבטלים את ההערה בשורה ומוסיפים את הנתיב של המפתח של חשבון השירות.

      רשומה בקובץ התצורה:

      Service-Account-JSON  "PATH_TO_SERVICE_ACCOUNT_KEY";
      

      מחליפים את PATH_TO_SERVICE_ACCOUNT_KEY בנתיב של קובץ ה-JSON של מפתח חשבון השירות.

מאגר ציבורי

  1. הגדרת גישה ציבורית למאגר.

  2. אם אתם מגדירים מכונה וירטואלית מחוץ ל- Google Cloud, אתם צריכים להכין את המחשב לגישה למאגר. אם אתם מגדירים מכונה וירטואלית ב-Compute Engine, עוברים לשלב הבא.

    מתקינים את המפתח הציבורי לאימות החתימה באמצעות הפקודה הבאה:

    curl https://LOCATION-apt.pkg.dev/doc/repo-signing-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/artifact-registry.gpg
    

    ‫ מחליפים את LOCATION במיקום האזורי או במספר אזורים של המאגר.

  3. מעדכנים את Apt באמצעות הפקודה הבאה:

    sudo apt update
    

הגדרת גישה של מכונה וירטואלית למאגר Apt רגיל

הגדרת מכונה וירטואלית לגישה למאגר Apt:

  1. מריצים את הפקודה gcloud beta artifacts print-settings apt כדי ליצור את פקודת ההגדרה של המכונה הווירטואלית:

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

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

    • ‫ ‫LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. ‫
    • ‫REPOSITORY הוא שם המאגר של Artifact Registry.

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

    # 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
    
  2. מגדירים את Apt לאחזר חבילות מהמאגר באמצעות הפקודה echo מהפלט של הפקודה print-settings.

    לדוגמה, כדי להתקין חבילות מהמאגר הציבורי my-repo בפרויקט my-project ובמיקום us-west1, משתמשים בפקודה הבאה:

    echo 'deb ar+https://us-west1-apt.pkg.dev/projects/my-project my-repo main'
    
  3. מעדכנים את מקורות המאגר באמצעות הפקודה הבאה:

    sudo apt update
    

עכשיו אפשר לחבר את Apt למאגר.

אם יוצרים עוד מאגרי Apt, אפשר להוסיף אותם לקובץ artifact-registry.list ואז להריץ מחדש את הפקודה sudo apt update כדי לעדכן את מקורות המאגר.

הגדרת מכונה וירטואלית לגישה למאגר Apt מרוחק

כדי להגדיר מכונה וירטואלית כך שתשתמש רק במאגר Apt מרוחק במקום במאגר Apt רגיל במעלה הזרם, מחליפים את המאגר הרגיל במאגר המרוחק בקובץ /etc/apt/sources.list של המכונה הוירטואלית.

  1. נותנים הרשאות כתיבה ב-Artifact Registry ברמת הפרויקט לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine:

     gcloud projects add-iam-policy-binding PROJECT_ID \
       --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
       --role=roles/artifactregistry.writer
    
  2. נכנסים לדף של המכונות הווירטואליות.

  3. בשורה עם המכונה הווירטואלית, לוחצים על SSH.

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

  4. פותחים את הקובץ /etc/apt/sources.list של המכונה הווירטואלית ומאתרים את המאגר הרגיל שרוצים להחליף במאגר המרוחק החדש.

  5. מוחקים את השורה של המאגר הרגיל ומחליפים אותה בשורה הבאה:

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

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

    • ‫LOCATION עם המיקום האזורי או המיקום במספר אזורים של המאגר המרוחק.
    • ‫PROJECT_ID במזהה הפרויקט של מכונת ה-VM.
    • REMOTE_REPOSITORY_NAME בשם שנתתם למאגר המרוחק.
    • ‫UPSTREAM_REPOSITORY_NAME בשם של מאגר המקור של השלט הרחוק.
    • ‫COMPONENTS עם רשימה של שמות רכיבים שמופרדים ברווחים.

    לדוגמה, ההגדרה הבאה קובעת שהמכונה הווירטואלית תאחזר חבילות מהמאגר my-repo בפרויקט my-project במיקום us-east1 באמצעות stable כמאגר במעלה הזרם לרכיבים main,‏ contrib ו-non-free.

    deb ar+https://us-east1-apt.pkg.dev/remote/my-project/my-repo stable main contrib non-free
    
  6. מעדכנים את מקורות המאגר באמצעות הפקודה הבאה:

    sudo apt update
    

    עכשיו אפשר לחבר את Apt למאגר.

שימוש במאגר Apt מרוחק כגיבוי

אם רוצים להשאיר את ה-upstream הרגיל כאפשרות הראשונה ולהוסיף את המאגר המרוחק כאפשרות חלופית, אפשר להשאיר את ה-upstream הרגיל בקובץ sources.list, ולהוסיף את המאגר המרוחק לסוף הקובץ sources.list, או ליצור רשימה חדשה בתיקייה sources.list.d.

כדי ליצור קובץ artifact-registry.list חדש בתיקייה sources.list.d, מריצים את הפקודה הבאה:

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

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

  • ‫ ‫LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. ‫
  • ‫PROJECT_ID במזהה הפרויקט של מכונת ה-VM.
  • REMOTE_REPOSITORY_NAME בשם שנתתם למאגר המרוחק.
  • ‫UPSTREAM_REPOSITORY_NAME בשם המאגר במעלה הזרם של השלט הרחוק.
  • ‫COMPONENTS ברשימה מופרדת ברווחים של שמות רכיבים.

אם יוצרים מאגרי Apt נוספים, אפשר להוסיף אותם לקובץ artifact-registry.list או sources.list ואז להריץ מחדש את הפקודה sudo apt update כדי לעדכן את מקורות המאגר.

הגדרת גישת HTTP למאגר Apt

אם משתמשים בכלי לקוח ישנים שלא תומכים בהצפנת SSL, אפשר להגדיר גישה ציבורית למאגר Apt ולגשת אליו באמצעות HTTP. בקשות שנשלחות למאגרי מידע ציבוריים לקריאה באמצעות HTTP יידחו אם יוצג אסימון אימות עם הבקשה.

  1. הגדרת גישה ציבורית למאגר.

  2. כדי להגדיר את Apt לאחזר חבילות מהמאגר באמצעות HTTP, מריצים את הפקודה הבאה:

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

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

    • ‫ ‫LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. ‫
    • ‫PROJECT_ID הוא מזהה הפרויקט של המאגר.
    • ‫REPOSITORY הוא שם המאגר.

    לדוגמה, כדי להתקין חבילות מהמאגר הציבורי my-repo בפרויקט my-project ובמיקום us-west1 באמצעות HTTP, משתמשים בפקודה הבאה:

    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. מעדכנים את מקורות המאגר באמצעות הפקודה הבאה:

    sudo apt update
    

עכשיו אפשר לחבר את Apt למאגר.

אם יוצרים עוד מאגרי Apt, אפשר להוסיף אותם לקובץ artifact-registry.list ואז להריץ מחדש את הפקודה sudo apt update כדי לעדכן את מקורות המאגר.

המאמרים הבאים