יצירת מודול פריסה של Terraform למכונה הווירטואלית

במאמר הזה נסביר איך ליצור מכונה וירטואלית (VM) ומודול פריסה של Terraform למכונה הווירטואלית.

יצירת תמונה של מכונה וירטואלית עם רישיון

  1. כדי לוודא שמכונת ה-VM לפיתוח לא מושפעת, יוצרים עותק של הדיסק שבו נעשה שימוש במכונת ה-VM על ידי הרצת הפקודה הבאה ב-gcloud:
    gcloud compute disks create CLONE_DISK \ --description="cloned disk" \ --source-disk=projects/PROJECT/zones/ZONE/disks/SOURCE_VM_DISK
  2. יוצרים שיבוט של המכונה הווירטואלית. מידע נוסף זמין במאמר יצירת מכונה וירטואלית שדומה למכונה וירטואלית קיימת.
  3. בקטע אפשרויות מתקדמות, מצרפים את הדיסק המשוכפל.
  4. יוצרים את המכונה הווירטואלית.
  5. מוודאים שהשרת פועל במכונה הווירטואלית הזו. סקריפט לטעינה בזמן ההפעלה מוודא שהמכונה הווירטואלית פועלת.
  6. עוצרים ומסירים את שירות המחבר ב-Docker.
  7. מסירים את ספריית הבית וכל קובץ אחר שלא נדרש להפעלת השרת. אותו דיסק ישמש ליצירת תמונת ה-VM ויהיה נגיש ללקוחות בהמשך. במכונה הווירטואלית הזו צריכות להיות רק ספריות שנדרשות להפעלת השירות.
  8. עורכים את המכונה הווירטואלית ובוחרים את כלל המחיקה Keep disk.
  9. מחיקת מכונה וירטואלית.
  10. כדי ליצור את התמונה ברישיון, צריך לקבל את הרישיון מפורטל המפיקים. נכנסים לפורטל של מפיקים.
  11. יוצרים מוצר חדש של מכונה וירטואלית. עוברים לקטע Deployment Package ומעתיקים את רישיון ה-VM.
  12. כדי ליצור את תמונת ה-VM עם הרישיון, מריצים את הפקודה הבאה:
  13. gcloud compute images create VM_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/ZONE/disks/SOURCE_VM_DISK \
     --licenses LICENSE \
     --description VM_IMAGE_DESCRIPTION

    מידע נוסף זמין במאמר יצירת מכונה וירטואלית.

יצירת מודול פריסה של Terraform

‫Marketplace מספק את הכלי Autogen ליצירת מודולי Terraform לפריסה של תמונת מכונה וירטואלית ב-Marketplace.

הכלי הזה משתמש בהגדרת פרוטו של Autogen כדי ליצור את הפריסה. מידע נוסף זמין בדוגמה להגדרה.

  1. מוסיפים את פרטי הפתרון:
  2. solutionInfo:
      name: 
      packagedSoftwareGroups:
        - type: SOFTWARE_GROUP_OS
          components:
            - name: Ubuntu
              version: 16.04 LTS
        - components:
            - name: Apache
              version: 2.4.23
  3. לגבי מחברים, יוצרים מודול עם מכונה וירטואלית. מזינים את שם הפרויקט, את שם תמונת מכונת ה-VM ותוויות לתמונה בפרויקט הציבורי.
  4. משתמשים ב-n2d-standard-2 כסוג מכונה ברירת המחדל, עם מעבד מינימלי של 2 וזיכרון RAM של 8GB. הסוג N2d-standard הוא אופטימלי לשרתי אינטרנט עם תנועה בינונית. אפשר להגדיר את המכונה הווירטואלית כברירת מחדל עם 2 ליבות. אם הלקוחות צופים נפח תנועה גבוה יותר, אפשר לשנות את ההגדרה הזו במהלך יצירת המכונה הווירטואלית מ-Marketplace. מידע על התמחור של סוגי מכונות שונים זמין במאמר מחירון של מכונות VM.
        machineType:
          # Check http://cloud.google.com/compute/docs/machine-types for all available types
          defaultMachineType:
            gceMachineType: n2d-standard-2
          # Minimum CPU and memory constraints for the machine type to run your solution properly
          minimum:
            cpu: 2
            ramGb: 8
  5. משתמשים ב-pd-standard כסוג ברירת המחדל של הדיסק.
        bootDisk:
          diskType:
            defaultType: pd-standard
  6. מוסיפים את סקריפט לטעינה בזמן ההפעלה לקובץ התצורה של יצירת הקוד האוטומטית. ממירים את סקריפט לטעינה בזמן ההפעלה למחרוזת ומוסיפים אותו ל-bashScriptContent.
    gceStartupScript:
       bashScriptContent: 
  7. מגדירים את השדות להזנת קלט שיילקחו כקלט מהלקוחות במהלך יצירת המכונה הווירטואלית.
        deployInput:
          sections:
            # The place int he Deployment Manager config that this section will appear. More details in deployment_package_autogen_spec.proto
            - placement: CUSTOM_TOP
              name: CONNECTOR_SETTINGS
              title: Connectors settings
              description: Connectors settings
              tooltip: Setting with which connector VM will be running
              # List of input fields that this section has
              fields:
                - required: false
                  name: TEST_DATA
                  title: Test Data
                  description: Test data
                  tooltip: random data for testing
                  string_box: {}
                - required: false
                  name: PORT
                  title: Port to run service
                  tooltip: Port to run connector service
                  string_box: {}
                - required: false
                  name: LOG_LEVEL
                  title: Log level
                  description: Log level for the web service. Allowed values are DEBUG, INFO, WARNING, ERROR. Default is INFO
                  string_box: {}

    משאירים את המיקום כ-CUSTOM_TOP ואת השם כ-CONNECTOR_SETTINGS.

    מגדירים את השדה ואת סוג הקלט שנדרש בו. בדוגמה הזו, השדות Test Data ו-Port to run service מופיעים אצל הלקוחות של המחבר של Marketplace.

  8. מגדירים את פריטי המטא-נתונים של Compute Engine. כשמגדירים את המטא-נתונים של המכונה הווירטואלית. ממפים את השם של שדה להזנת קלט למפתח המטא-נתונים.
        gce_metadata_items:
          - key: CONNECTOR_ENV_PORT
            value_from_deploy_input_field: PORT
          - key: CONNECTOR_ENV_TEST_DATA
            value_from_deploy_input_field: TEST_DATA
    - key: CONNECTOR_ENV_LOG_LEVEL
            value_from_deploy_input_field: LOG_LEVEL
  9. מוסיפים את פרטי השלבים שיוצגו ללקוחות אחרי הפריסה.
        postDeploy:
          # List of suggested action items for users, after deployment is successful
          actionItems:
            - heading: Create the Private service attachment
              description: Now the connector service is running on the VM, please create the PSC service attachment to create the connection. Follow https://cloud.google.com/integration-connectors/docs/configure-psc for the detailed guide.
            - heading: Create the connection
              description: After creating the connectors endpoint attachment, use the endpoint attachment to create a connection to the partner connector.
  10. כדי להגדיר את יצירת הקוד האוטומטית, מריצים את הפקודה הבאה:
    alias autogen='docker run \
      --rm \
      --workdir /mounted \
      --mount type=bind,source="$(pwd)",target=/mounted \
      --user $(id -u):$(id -g) \
      gcr.io/cloud-Marketplace-tools/dm/autogen'
    
    autogen --help
  11. כדי ליצור את מודול Terraform, מריצים את הפקודה הבאה:
    mkdir solution_folder
    
    autogen \
      --input_type YAML \
      --single_input example-config/solution.yaml \
      --output_type PACKAGE \
      --output solution_folder

    התיקייה solution_folder מכילה את מודול Terraform. המודול הזה ישמש לפרסום מוצרים ב-Marketplace.

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