במדריך הזה מוסבר איך להתחיל להשתמש ב-Terraform באמצעות שימוש ב-Terraform ליצירת שרת אינטרנט בסיסי ב-Compute Engine.
במדריך הזה תלמדו:
- איך משתמשים ב-Terraform כדי ליצור מכונה וירטואלית ב- Google Cloud.
- איך מפעילים שרת בסיסי של Python Flask.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אפשר להשתמש במחשבון התמחור.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
לפני שתתחילו את המדריך צריך לבצע את ההכנות הבאות.
יצירת פרויקט חדש או בחירה בפרויקט קיים
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
הגדרת ההרשאות
ודאו שיש לכם את ההרשאות הנדרשות ל-Compute Engine בחשבון המשתמש.
compute.instances.*compute.firewalls.*
למידע נוסף על תפקידים והרשאות.
הפעלת ה-API
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
הפעלת Cloud Shell
Cloud Shell היא מכונה וירטואלית ב-Compute Engine.
פרטי הכניסה לשירות שמשויכים למכונה הווירטואלית נוצרים אוטומטית, כך שלא צריך להגדיר או להוריד מַפְתח לחשבון שירות.
מאחר ש-Terraform ו-Cloud Shell משתלבים יחד, אפשר לאמת אוטומטית את Terraform באמצעות Cloud Shell כדי להתחיל לעבוד עם פחות הכנה.
איך יוצרים מכונה וירטואלית ב-Compute Engine?
בשלב הראשון קובעים את ההגדרות של המכונה הווירטואלית בקובץ תצורה של Terraform. אחר כך מריצים פקודות של Terraform כדי ליצור את המכונה הווירטואלית בפרויקט.
יצירת הספרייה
יוצרים ספרייה חדשה. בספרייה החדשה, יוצרים קובץ main.tf לתצורה של Terraform. התוכן של הקובץ מפרט את כל Google Cloud המשאבים שצריך ליצור בפרויקט.
ב-Cloud Shell:
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.
המאמרים הבאים
- איך מייצאים את המשאבים לפורמט של Terraform Google Cloud