הסופר בחר ב־קרן הקוד הפתוח והחופשי לקבל תרומה כחלק מתוכנית כתיבה בעבור תרומות.
הקדמה
כאשר מספר אנשים עובדים על הפרויקט של Terraform ממקומות שונים בו זמנית, חשוב לטפל בקוד התשתית ובמצב הפרויקט בצורה נכונה כדי למנוע שגיאות של התעלמות. הפתרון הוא לאחסן את המצב מרחוק במקום מקומי. מערכת מרוחקת זמינה לכל חברי הצוות שלך, ואפשר להנעיל את המצב במהלך העבודה שלהם.
אחת מהגורמים המרוחקים האלה הוא pg
, שמאחסן את המצב במסד נתונים של PostgreSQL. במהלך המדריך הזה, תשתמש בו עם מסד נתונים ניהולי של DigitalOcean כדי לוודא זמינות של הנתונים.
Terraform תומך גם בהצעה הרשמית והמנוהלת של הענן על ידי Hashicorp בשם Terraform Cloud—יישום פרופריאטי שמסנכרן את עבודת הצוות שלך במקום אחד ומציע ממשק משתמש להגדרה ולניהול.
במדריך זה, תיצור ארגון ב-Terraform Cloud אליו תחבר את הפרויקט שלך. לאחר מכן, תשתמש בארגון שלך כדי להגדיר סביבות עבודה ומשאבים. תאחסן את המצב שלך בענן המנוהל כך שיהיה תמיד זמין. תגדיר גם את ה-pg
backend עם מסד נתונים PostgreSQL שניהם מנוהלים.
דרישות מוקדמות
- A DigitalOcean Personal Access Token, which you can create via the DigitalOcean Control Panel. You can find instructions in the DigitalOcean product documents, How to Create a Personal Access Token.
- Terraform מותקן במכשיר המקומי שלך. השלמת שלב 1 של מדריך איך להשתמש ב-Terraform עם DigitalOcean.
- אם ברצונך להשתמש ב-
pg
backend, תצטרך מסד נתונים קבוצתי שניתן לגשת אליו שנוצר ונגיש. למידע נוסף, יש לבקר ב-מדריך להתחלה מהירה. ניתן להשתמש במסד נתונים נפרד עבור מדריך זה. - אם ברצונך להשתמש בענן המנוהל של Hashicorp, תצטרך חשבון עם Terraform Cloud. ניתן ליצור חשבון ב-דף ההרשמה שלהם.
הערה: ביצענו בדיקות מפורשות של המדריך הזה באמצעות Terraform 1.1.3
.
אחסון המצב במסד נתונים מנוהל של PostgreSQL
במקטע זה, תגדיר פרויקט שמפעיל Droplet ומאחסן את המצב במסד נתונים מנוהל של DigitalOcean באמצעות ספק ה־pg
. ספק זה תומך ב-נעילת מצב, כך שהמצב לא יידרס על ידי שני או יותר שינויים המתרחשים בו זמן.
התחל על ידי יצירת ספרייה בשם terraform-team-pg
בה תאחסן את הפרויקט:
נווט אליה:
תגדיר תחילה את ספק השירות ותעביר את מחרוזת החיבור למסד הנתונים ולמודול digitalocean
. צור ופתח את provider.tf
לעריכה:
הוסף את השורות הבאות:
כאן אתה דורש את ספק ה־digitalocean
ומגדיר את ה־pg
backend, שמקבל מחרוזת חיבור. לאחר מכן, אתה מגדיר את המשתנה do_token
ומעביר אותו למופע של ספק digitalocean
.
זכור להחליף your_db_connection_string
עם מחרוזת החיבור שלך למסד הנתונים הניהולי מ לוח הבקרה של DigitalOcean, אותו תוכל למצוא על ידי לחיצה על פעולות, בחירה ב פרטי החיבור, ובחירה ב מחרוזת החיבור מתוך התפריט הנפתח. לאחר מכן שמור וסגור את הקובץ
אזהרה: כדי להמשיך, ב הגדרות של מסד הנתונים שלך, ודא כי יש לך את כתובת ה-IP של המכונה ממנה אתה מפעיל את Terraform על רשימת האישורים.
הפעל את הפרויקט על ידי הרצת:
הפלט יהיה דומה לזה:
OutputInitializing the backend...
Successfully configured the backend "pg"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding digitalocean/digitalocean versions matching "~> 2.0"...
- Installing digitalocean/digitalocean v2.16.0...
- Installed digitalocean/digitalocean v2.16.0 (signed by a HashiCorp partner, key ID F82037E524B9C0E8)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.
Terraform has been successfully initialized!
...
Terraform הצליח לאתחל את הbackend, המשמעות שהוא חובר למסד הנתונים.
בשלב הבא, הגדר את ה-Droplet בקובץ בשם droplets.tf
. צור ופתח אותו לעריכה על ידי הרצת:
הוסף את השורות הבאות:
קוד זה יפעיל Droplet בשם web-1
באזור fra1
, הרצת Ubuntu 20.04 על 1GB RAM וליבת מעבד אחת. זו ההגדרה הנדרשת, לכן שמור וסגור את הקובץ.
תצטרך את ה-token שלך של DigitalOcean במשתנה סביבתי. צור אחד, החלף את your_do_token
ב-token שלך:
כדי לבדוק שהחיבור למסד הנתונים עובד, נסה לתכנן את התצורה:
הפלט יהיה דומה לזה:
Terraform דיווח על חוסר שגיאות ותכנן את הפעולות כרגיל. התחבר בהצלחה למסד הנתונים של PostgreSQL ושמר את המצב שלו. מספר אנשים יכולים כעת לעבוד על זה בו זמנית עם הפרויקט שומר על הסנכרון.
שמירת המצב ב- Terraform Cloud
בשלב זה, תיצור פרויקט המפעיל Droplet ומשתמש ב- Terraform Cloud כשרת הרקע שלו עם ספק ה- cloud
. זה כולל את יצירת הארגון וה- מרחב עבודה ב-Terraform Cloud, כתיבת קוד התשתית ותכנונו.
יצירת ארגון
Terraform Cloud מאפשרת לך לקבוע מספר ארגונים, שבהם ממוקמים המרחבים והמודולים שלך. ארגונות בתוכנית השלמה יכולים להכיל מספר קבוצות עם תכונות בקרת גישה, בעוד שהתוכנית החינמית שתשתמש בה מספקת רק קבוצה אחת לכל ארגון. באפשרותך להזמין חברי צוות להצטרף לארגון.
כדי להתחיל, עבור אל Terraform Cloud והתחבר. אם עדיין לא יצרת ארגון, זה יבקש ממך לעשות זאת.
הזן שם ארגון שאתה מעדיף וזכור שהוא חייב להיות ייחודי בקרב כל השמות ב- Terraform Cloud. תקבל שגיאה אם השם כבר קיים. כתובת האימייל כבר תמולא בכתובת החשבון שלך. כאשר אתה מסיים, לחץ על הלחצן ליצירת ארגון כדי להמשיך.
יבקש ממך לבחור את סוג הסביבה העבודה.
מאחר שתתממש עם Terraform Cloud באמצעות שורת הפקודה, לחץ על האפשרות תהליך עבודה מופעל על ידי CLI . לאחר מכן, הזן שם לסביבת העבודה שלך והשאר את התיאור ריק.
הקלד שם סביבת עבודה לבחירתך (נקראתו sammy
), לאחר מכן לחץ על ליצירת סביבת עבודה כדי לסיים את תהליך יצירת הארגון. כעת יפנך לדף הגדרות סביבת עבודה.
עכשיו יצרת סביבת עבודה שלך, שהיא חלק מהארגון שלך. מאחר שרק יצרת אותה, הסביבה שלך לא מכילה קוד תשתית. בחלק המרכזי של ממשק המשתמש, Terraform Cloud נותן לך הוראות התחלה לחיבור לסביבה זו.
לפני התחברות אליה, יהיה עליך להגדיר את גרסת Terraform שהענן ישתמש בה כדי לבצע את הפקודות שלך. כדי להגדיר את זה, לחץ על הרשימה הנפתחת הגדרות ליד סקירה ובחר כללי מהרשימה. כאשר הדף נפתח, נווט לרשימת הנפתחת גרסת Terraform ובחר 1.1.3
(למדריך זה).
אז, לחץ על כפתור שמור הגדרות כדי לשמור את השינויים.
כדי להתחבר לפרויקט שלך לארגון ולמרחב העבודה שלך, תצטרך תחילה להתחבר באמצעות שורת הפקודה. לפני שתריץ את הפקודה, נווט לעמוד tokens כדי ליצור אסימון גישה חדש עבור השרת שלך, שיספק גישה לחשבונך. תקבל הזמנה ליצור אסימון API.
התיאור המוגדר כברירת מחדל הוא בסדר, אז לחץ על צור אסימון API כדי ליצור אותו.
לחץ על ערך האסימון, או על האייקון אחריו, כדי להעתיק את האסימון API. תשתמש באסימון זה כדי להתחבר את הפרויקט שלך לחשבון ה- Terraform Cloud שלך.
בשורת הפקודה, הפעל את הפקודה הבאה כדי להתחבר:
תקבל את הפלט הבא:
OutputTerraform will request an API token for app.terraform.io using your browser.
If login is successful, Terraform will store the token in plain text in
the following file for use by subsequent commands:
/home/sammy/.terraform.d/credentials.tfrc.json
Do you want to proceed?
Only 'yes' will be accepted to confirm.
...
טרהפורם מזהיר אותך כי האסימון יאוחסן מקומית. הזן yes
כאשר הוא מבקש:
Output---------------------------------------------------------------------------------
Open the following URL to access the tokens page for app.terraform.io:
https://app.terraform.io/app/settings/tokens?source=terraform-login
---------------------------------------------------------------------------------
Generate a token using your browser, and copy-paste it into this prompt.
Terraform will store the token in plain text in the following file
for use by subsequent commands:
/home/sammy/.terraform.d/credentials.tfrc.json
Token for app.terraform.io:
Enter a value:
הדבק את האסימון שהעתקת ואשר אותו עם ENTER
. טרהפורם תציג הודעת הצלחה:
Output...
-
----- -
--------- --
--------- - -----
--------- ------ -------
------- --------- ----------
---- ---------- ----------
-- ---------- ----------
Welcome to Terraform Cloud! - ---------- -------
--- ----- ---
Documentation: terraform.io/docs/cloud -------- -
----------
----------
---------
-----
-
New to TFC? Follow these steps to instantly apply an example configuration:
$ git clone https://github.com/hashicorp/tfc-getting-started.git
$ cd tfc-getting-started
$ scripts/setup.sh
הגדרת את ההתקנה המקומית שלך של טרהפורם כך שתוכל לגשת אל חשבון ה- Terraform Cloud שלך. עכשיו תיצור פרויקט שמיישם Droplet ותגדיר אותו להשתמש ב- Terraform Cloud לאחסון המצב שלו.
הגדרת הפרויקט
ראשית, צור ספרייה בשם terraform-team-cloud
שם תאחסן את הפרויקט:
נווט אליה:
כדי להגדיר את הפרויקט שלך, תצטרך ל־:
- להגדיר ולהגדיר את ספק ה־
cloud
, אשר מתממש עם Terraform Cloud. - לדרוש מספק ה־
digitalocean
כדי להיות מסוגל להפעיל משאבי DigitalOcean. - להגדיר ולאתחל משתנים שתשתמש בהם.
תאחסן את תצורת דרישות הספק והמודול בקובץ בשם provider.tf
. צור ופתח אותו לעריכה על ידי הרצת:
הוסף את השורות הבאות:
כאן, תציין ראשית את גרסת ה־Terraform שלך. לאחר מכן, תציין את ספק ה־digitalocean
כפי שנדרש ותגדיר את ה־backend ל־cloud
. עבור ה־organization
וה־workspaces.name
, החלף את הערכים שמודגשים בשמות שציינת.
באשף, תגדיר משתנה בשם do_token
, אותו תעביר לספק ה־digitalocean
שנוצר לאחריו. כעת הגדרת את הפרויקט שלך כך שיתחבר לארגון שלך, לכן שמור וסגור את הקובץ.
אתחל את הפרויקט שלך באמצעות הפקודה הבאה:
הפלט יהיה דומה לזה:
OutputInitializing Terraform Cloud...
Initializing provider plugins...
- Finding digitalocean/digitalocean versions matching "~> 2.0"...
- Installing digitalocean/digitalocean v2.18.0...
- Installed digitalocean/digitalocean v2.18.0 (signed by a HashiCorp partner, key ID F82037E524B9C0E8)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.
Terraform Cloud has been successfully initialized!
...
מכיוון שההגדרה של ה-Droplet זהה לפרויקט הקודם, תוכל להעתיק אותה על ידי הרצת:
סופסוף, תגדיר את ערכי המשתנים. ספק ה-cloud
לא תומך במעבר ערכים למשתנים דרך שורת הפקודה, לכן תצטרך להעביר אותם באמצעות קבצי משתנים או להגדיר אותם ב-Terraform Cloud. Terraform קורא ערכי משתנים מקבצים ששמם מסתיים ב-.auto.tfvars. צור ופתח קובץ בשם vars.auto.tfvars
לעריכה, בו תגדיר את המשתנה do_token
:
הוסף את השורה הבאה, והחליף את your_do_token
באקראי ה-API של DigitalOcean שלך:
כאשר סיימת, שמור וסגור את הקובץ. Terraform תקרא אוטומטית את הקובץ הזה בעת תכנון פעולות.
הפרויקט שלך כעת הושלם והוגדר להשתמש ב-Terraform Cloud כגורם האחורי שלו. עכשיו תתכנן ותיישם את ה-Droplet ותבדוק כיצד זה משקף באפליקציה הענן.
יישום ההגדרה
ב-שלב 1 של המדריך הזה, תיכננת פרויקט באמצעות הפקודה terraform plan
. מאחר שיש לפרויקט ב-Terraform Cloud את אותם משאבים מוגדרים, תוכל לדלג על התכנון וליישם אותו ישירות ל-Terraform Cloud.
תיישם את הפרויקט על ידי הרצת הפקודה הבאה לעדכון:
תשימו לב שהפלט שונה כאשר אתה משתמש ב־local
כמנוע הגבה:
כאשר משתמשים ב־cloud
כמנוע הגבה, טרהפורם אינה מתכננת או מחילה תצורה מהמכונה המקומית. במקום זאת, היא מעבירה את המשימות האלו ל־Terraform Cloud, ורק משדרת את הפלט אל מסך המחשב בזמן אמת.
הזן yes
כאשר תתבקש. טרהפורם תסיים בקרוב את יישום התצורה, ותוכל לנווט אל רוחב הפועל באתר אינטרנט של Terraform Cloud כדי לגלות שהוחילה פעולה חדשה.
באפשרותך כעת להשמיד את המשאבים שהוטמעו על ידי הרצת הפקודה הבאה:
במקטע זה, חיברת את הפרויקט שלך ל־Terraform Cloud, מה שהופך את מצב הפרויקט שלך לנגיש לצוות במקום מרכזי. זה מאפשר למצב להיות משותף ומסונכרן עבור כל מי שיש לו גישה לפרויקט, מה שמביא לחווית עבודה יותר חלקה.
מסקנה
במדריך זה, השתמשת בשני מנועי גבה שונים: Terraform Cloud, שהוא הצעה לניהול עננים של Hashicorp עבור Terraform; ו־pg
, שמאפשר לך לאחסן את מצב הפרויקט במסד נתונים של PostgreSQL. השתמשת במסד נתונים מנוהל מאתר DigitalOcean, שבאפשרותך להגדיר ולהשתמש בו עם Terraform בתוך דקות.
למידע נוסף על תכונות של Terraform Cloud, בקרו ב-מסמכים רשמיים.
המדריך הזה הוא חלק מסדרת המדריכים כיצד לנהל תשתיות עם Terraform. הסדרה מכסה מספר נושאים של Terraform, מהתקנת Terraform לראשונה ועד לניהול פרויקטים מורכבים.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-terraform-within-your-team