יצירת מודול פריסה של Terraform למכונה הווירטואלית
במאמר הזה נסביר איך ליצור מכונה וירטואלית (VM) ומודול פריסה של Terraform למכונה הווירטואלית.
יצירת תמונה של מכונה וירטואלית עם רישיון
- כדי לוודא שמכונת ה-VM לפיתוח לא מושפעת, יוצרים עותק של הדיסק שבו נעשה שימוש במכונת ה-VM על ידי הרצת הפקודה הבאה ב-gcloud:
gcloud compute disks create CLONE_DISK \ --description="cloned disk" \ --source-disk=projects/PROJECT/zones/ZONE/disks/SOURCE_VM_DISK
- יוצרים שיבוט של המכונה הווירטואלית. מידע נוסף זמין במאמר יצירת מכונה וירטואלית שדומה למכונה וירטואלית קיימת.
- בקטע אפשרויות מתקדמות, מצרפים את הדיסק המשוכפל.
- יוצרים את המכונה הווירטואלית.
- מוודאים שהשרת פועל במכונה הווירטואלית הזו. סקריפט לטעינה בזמן ההפעלה מוודא שהמכונה הווירטואלית פועלת.
- עוצרים ומסירים את שירות המחבר ב-Docker.
- מסירים את ספריית הבית וכל קובץ אחר שלא נדרש להפעלת השרת. אותו דיסק ישמש ליצירת תמונת ה-VM ויהיה נגיש ללקוחות בהמשך. במכונה הווירטואלית הזו צריכות להיות רק ספריות שנדרשות להפעלת השירות.
- עורכים את המכונה הווירטואלית ובוחרים את כלל המחיקה Keep disk.
- מחיקת מכונה וירטואלית.
- כדי ליצור את התמונה ברישיון, צריך לקבל את הרישיון מפורטל המפיקים. נכנסים לפורטל של מפיקים.
- יוצרים מוצר חדש של מכונה וירטואלית. עוברים לקטע Deployment Package ומעתיקים את רישיון ה-VM.
- כדי ליצור את תמונת ה-VM עם הרישיון, מריצים את הפקודה הבאה:
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 כדי ליצור את הפריסה. מידע נוסף זמין בדוגמה להגדרה.
- מוסיפים את פרטי הפתרון:
- לגבי מחברים, יוצרים מודול עם מכונה וירטואלית. מזינים את שם הפרויקט, את שם תמונת מכונת ה-VM ותוויות לתמונה בפרויקט הציבורי.
- משתמשים ב-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
- משתמשים ב-pd-standard כסוג ברירת המחדל של הדיסק.
bootDisk: diskType: defaultType: pd-standard
- מוסיפים את סקריפט לטעינה בזמן ההפעלה לקובץ התצורה של יצירת הקוד האוטומטית. ממירים את סקריפט לטעינה בזמן ההפעלה למחרוזת ומוסיפים אותו ל-bashScriptContent.
gceStartupScript: bashScriptContent:
- מגדירים את השדות להזנת קלט שיילקחו כקלט מהלקוחות במהלך יצירת המכונה הווירטואלית.
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.
- מגדירים את פריטי המטא-נתונים של 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
- מוסיפים את פרטי השלבים שיוצגו ללקוחות אחרי הפריסה.
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.
- כדי להגדיר את יצירת הקוד האוטומטית, מריצים את הפקודה הבאה:
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
- כדי ליצור את מודול Terraform, מריצים את הפקודה הבאה:
mkdir solution_folder autogen \ --input_type YAML \ --single_input example-config/solution.yaml \ --output_type PACKAGE \ --output solution_folder
התיקייה solution_folder מכילה את מודול Terraform. המודול הזה ישמש לפרסום מוצרים ב-Marketplace.
solutionInfo: name:packagedSoftwareGroups: - type: SOFTWARE_GROUP_OS components: - name: Ubuntu version: 16.04 LTS - components: - name: Apache version: 2.4.23