במדריך הזה תלמדו איך להפעיל שרת אינטרנט פשוט ב-Compute Engine באמצעות Terraform כדי להקצות את המשאבים.
במדריך הזה תלמדו:
- איך משתמשים ב-Terraform כדי ליצור מכונה וירטואלית ב-Google Cloud.
- איך מפעילים שרת בסיסי של Python Flask.
עלויות
במדריך הזה השתמשנו ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
תוכלו להשתמש במחשבון התמחור כדי ליצור הערכת עלויות בהתאם לשימוש החזוי.
כשתסיימו את המדריך, תוכלו להפסיק את המשך החיוב על ידי מחיקת המשאבים שיצרתם. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
לפני שתתחילו את המדריך צריך לבצע את ההכנות הבאות.
יצירת פרויקט חדש או בחירה בפרויקט קיים
-
נכנסים לדף לבחירת הפרויקט במסוף Google Cloud.
-
בוחרים פרויקט קיים או יוצרים פרויקט חדש ב-Google Cloud.
הגדרת ההרשאות
ודאו שיש לכם את ההרשאות הנדרשות ל-Compute Engine בחשבון המשתמש.
compute.instance.*
compute.firewalls.*
למידע נוסף על תפקידים והרשאות.
הפעלת ה-API
מפעילים את ה-API של Compute Engine.
הפעלת Cloud Shell
Cloud Shell היא מכונה וירטואלית ב-Compute Engine.
פרטי הכניסה לשירות שמשויכים למכונה הווירטואלית נוצרים אוטומטית, כך שלא צריך להגדיר או להוריד מַפְתח לחשבון שירות.
מאחר ש-Terraform ו-Cloud Shell משתלבים יחד, אפשר לאמת אוטומטית את Terraform באמצעות Cloud Shell כדי להתחיל לעבוד עם פחות הכנה.
איך יוצרים מכונה וירטואלית ב-Compute Engine?
בשלב הראשון קובעים את ההגדרות של המכונה הווירטואלית בקובץ תצורה של Terraform. אחר כך מריצים פקודות של Terraform כדי ליצור את המכונה הווירטואלית בפרויקט.
יצירת הספרייה
יוצרים ספרייה חדשה ב-Cloud Shell. בספרייה החדשה, יוצרים קובץ main.tf
לתצורה של Terraform. התוכן של הקובץ מפרט את כל המשאבים של Google Cloud שצריך ליצור בפרויקט.
mkdir tf-tutorial && cd tf-tutorial
nano main.tf
יצירת הרשת והתת-רשת של הענן הווירטואלי הפרטי (VPC)
בקטע הזה, יוצרים רשת ותת-רשת של ענן וירטואלי פרטי (VPC) לממשק הרשת של המכונה הווירטואלית.
הוסיפו את המשאבים הבאים של Terraform לקובץ main.tf
שיצרתם:
יצירת המשאב של מכונה וירטואלית ב-Compute Engine
בקטע הזה, יוצרים מכונה וירטואלית בודדת ב-Compute Engine עם Debian. במדריך הזה השתמשנו בסוג המכונה הקטן ביותר שזמין. אתם יכולים לשדרג למכונה מסוג גדול יותר.
הוסיפו את המשאב google_compute_instance
הבא של Terraform לקובץ main.tf
שיצרתם.
בקוד לדוגמה הגדרנו את התחום (zone) ב-Google Cloud כ-us-west1-a
. אתם יכולים לשנות אותו לתחום אחר.
הפעלת Terraform
בשלב הזה אתם יכולים להריץ את terraform init
כדי להוסיף את יישומי הפלאגין הנדרשים וליצור את הספרייה .terraform
.
terraform init
פלט:
Initializing the backend... Initializing provider plugins... ... Terraform has been successfully initialized!
אימות התצורה של Terraform
אתם יכולים גם לאמת את הקוד של Terraform שיצרתם עד עכשיו. כדי לעשות זאת, מריצים את terraform plan
ואז:
- מוודאים שהתחביר של
main.tf
נכון. - תיווצר תצוגה מקדימה של המשאבים.
terraform plan
פלט:
... Plan: 1 to add, 0 to change, 0 to destroy. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
שימוש בתצורה
כדי ליצור את המכונה הווירטואלית, מריצים את terraform apply
.
terraform apply
כשתופיע בקשה, כותבים yes
.
תישלח מ-Terraform בקשה ל-Google Cloud APIs להגדרת המכונה הווירטואלית החדשה. תוכלו לראות את המכונה החדשה בדף של המכונות הווירטואליות.
הפעלת שרת אינטרנט ב-Google Cloud
בפעולות הבאות ניצור אפליקציית אינטרנט, נפרוס אותה במכונה הווירטואלית וניצור כלל בחומת האש כדי לאשר בקשות לקוח לאפליקציית האינטרנט.
הוספת כלל בהתאמה אישית לחומת האש של SSH
הכלל default-allow-ssh
בחומת האש ברשת default
מאפשר להשתמש ב-SSH כדי להתחבר למכונה הווירטואלית. אם אתם מעדיפים להשתמש בכלל משלכם למכונה הווירטואלית, תוכלו להוסיף את המשאב הבא בסוף הקובץ main.tf
:
כדי ליצור את הכלל בחומת האש, מריצים את terraform apply
.
התחברות למכונה הווירטואלית באמצעות SSH
עכשיו מחברים את המכונה הווירטואלית ל-SSH כדי לאמת שכל ההגדרות נכונות.
נכנסים לדף של המכונות הווירטואליות.
מוצאים את המכונה הווירטואלית בשם
flask-vm
.לוחצים על SSH בעמודה Connect.
ייפתח חלון טרמינל של SSH בתוך הדפדפן למכונה הווירטואלית שפועלת.
למידע נוסף, קראו את המאמר איך מתחברים למכונות וירטואליות.
יצירת אפליקציית Flask
במדריך הזה אנחנו יוצרים אפליקציה של Python Flask, כדי שיהיה קובץ אחד שמתאר את שרת האינטרנט ובודק את נקודות הקצה (endpoints).
בחלון הטרמינל של SSH בתוך הדפדפן, יוצרים קובץ בשם
app.py
.nano app.py
מוסיפים את הטקסט הבא לקובץ
app.py
:from flask import Flask app = Flask(__name__) @app.route('/') def hello_cloud(): return 'Hello Cloud!' app.run(host='0.0.0.0')
מריצים את
app.py
:python3 app.py
כברירת מחדל, התנועה מ-Flask היא ב-
localhost:5000
.פותחים חיבור שני של SSH:
- נכנסים לדף של המכונות הווירטואליות.
- מוצאים את המכונה הווירטואלית בשם
flask-vm
ולוחצים על SSH.
בחיבור השני של SSH, מריצים את
curl
כדי לאשר שמוחזר הפתיח שהוגדר ב-app.py
.curl http://0.0.0.0:5000
הפלט מהפקודה הזו הוא
Hello Cloud
.
פתיחת היציאה 5000 במכונה הווירטואלית
כדי להתחבר לשרת האינטרנט מהמחשב המקומי, היציאה 5000 צריכה להיות פתוחה במכונה הווירטואלית. ב-Google Cloud אפשר לפתוח יציאות לתנועה באמצעות כללים בחומת האש.
צריך להוסיף את המשאב google_compute_firewall
הבא של Terraform בסוף הקובץ main.tf
.
כדי ליצור את הכלל בחומת האש, מריצים את terraform apply
ב-Cloud Shell.
הוספת משתנה פלט לכתובת ה-URL של שרת האינטרנט
כדי ליצור את כתובת ה-URL של שרת האינטרנט, מוסיפים משתנה פלט של Terraform בסוף
main.tf
:// A variable for extracting the external IP address of the VM output "Web-server-URL" { value = join("",["http://",google_compute_instance.default.network_interface.0.access_config.0.nat_ip,":5000"]) }
מריצים את
terraform apply
.terraform apply
כשתופיע בקשה, כותבים
yes
. כתובת ה-IP החיצונית של המכונה הווירטואלית והיציאה 5000 יודפסו על ידי Terraform במסך, באופן הבא:Web-server-URL = "http://IP_ADDRESS:5000"
אפשר להריץ את
terraform output
בכל שלב כדי לחזור לפלט הזה:terraform output
לוחצים על כתובת ה-URL מהשלב הקודם. ההודעה "Hello Cloud!" תופיע.
זה סימן שהשרת פועל.
פתרון בעיות
אם אחד מה-API שצריך לפעול לא פועל, תופיע הודעת שגיאה ב-Terraform. הודעת השגיאה תכלול קישור להפעלת ה-API. אחרי הפעלת ה-API אפשר יהיה להריץ מחדש את
terraform apply
.אם לא מצליחים להתחבר למכונה הווירטואלית באמצעות SSH:
- מוודאים שנוסף כלל לחומת האש של SSH.
- מוודאים שהמכונה הווירטואלית כוללת את הארגומנט
tags = ["ssh"]
.
הסרת המשאבים
כשתסיימו את המדריך תוכלו למחוק את כל מה שיצרתם, כדי שלא תחויבו.
תוכלו להריץ את הפקודה terraform destroy
כדי להסיר את כל המשאבים שהוגדרו בקובץ התצורה של Terraform:
terraform destroy
כדי לאפשר ל-Terraform למחוק את המשאבים, כותבים yes
.