Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
מקור: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraform
דוגמא זו מכילה קוד לבניית קונפיגורציית Terraform עבור תשתית בקנה מידה קטן, שבה לא נעשה שימוש בתלות חיצונית.
מושלם להתחלה ולשיכתוב בהמשך
מושלם עבור מודולי משאבים קטנים
מתאים למודולי תשתית קטנים וליניאריים
טוב למספר קטן של משאבים (פחות מ- 20-30)
קובץ מצב יחיד עבור כל המשאבים יכול להאט את תהליך העבודה עם Terraform אם מספר המשאבים גדל
(שקול להשתמש בארגומנט - יעד (target-)
להגבלת מספר המשאבים)
Source: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/medium-terraform
This example contains code as an example of structuring Terraform configurations for a medium-size infrastructure which uses:
2 AWS accounts
2 separate environments (prod
and stage
which share nothing). Each environment lives in a separate AWS account
Each environment uses a different version of the off-the-shelf infrastructure module (alb
) sourced from Terraform Registry
Each environment uses the same version of an internal module modules/network
since it is sourced from a local directory.
Perfect for projects where infrastructure is logically separated (separate AWS accounts)
Good when there is no is need to modify resources shared between AWS accounts (one environment = one AWS account = one state file)
Good when there is no need in the orchestration of changes between the environments
Good when infrastructure resources are different per environment on purpose and can't be generalized (eg, some resources are absent in one environment or in some regions)
As the project grows, it will be harder to keep these environments up-to-date with each other. Consider using infrastructure modules (off-the-shelf or internal) for repeatable tasks.
מסמך זה הוא ניסיון לתאר באופן שיטתי שיטות עבודה מומלצות כאשר משתמשים ב Terraform ולספק המלצות לבעיות הכי שכיחות שחויים משתמשי Terraform.
Terraform הוא פרויטק חדש למדי (כמו רוב הכלים בחלל ה DevOps) שהחל ב2014.
Terraform הוא כלי רב עוצמה (אם לא העוצמתי ביותר שיש בשוק כרגע) ואחד הכלים המשומשים ביותר המאפשר ניוהל של תשתיות כקוד. זה מאפשר למתפחים לעשות הרבה דברים ולא מגביל אותם בצורה שתהיה קשה לתחזוק,תמיכה ואינטגרציה.
ייתכן שחלק מהמידע המתואר בספר זה לא נראה כמו שיטות העבודה הכי טובות. אני יודע זאת, וכדי לעזור לקוראים להפריד בין שיטות עבודה מבוססות ומהן דעות אישיות על עשיית דברים, אני לפעמים משמתש ברמזים כדי לספק הקשר ואייקונים כדי לציין את רמת המוכנות בכל תת-סעיף הקשור לשיטות העבודה המומלצות.
הספר התחיל במדריד בשנת 2018, זמין בחינם בכתובת https://www.terraform-best-practices.com/.
כמה שנים לאחר מכן, הוא עודכן עם שיטות עבודה מומלצות יותר אשר זמינות עם Terraform גרסה 1.0. בסופו של דבר, הספר אמור להכיל את רוב שיטות העבודה המומלצות והבלתי מעורערות עבור משמתשי Terraform.
Please contact me if you want to become a sponsor.
צרו איתי קשר אם אתם מעוניים לעזור בתרגום הספר לספות שונות.
אני תמיד רוצה לקבל משוב ולעדכן את הספר ככל שהקהילה גדלה, מתבגרת ורעיונות חדשים מיושמים ומאומתים לאורך זמן
אם אתם מעוניינים בנושאים ספציפיים, אנא פתחו סוגייה, או סמנו נושא שאתם רוצים שאכסה אותו. אם אתה מרגיש שיש לך תוכן לתרום, כתוב טיוטה ושלח pull request (אל תדאג/י לגבי כתיבת טקסט טוב בשלב זה!)
ספר זה מתוחזק על ידי Anton Babenko ובעזרת תורמים ומתרגמנים שונים.
This work is licensed under Apache 2 License. See LICENSE for full details.
The authors and contributors to this content cannot guarantee the validity of the information found here. Please make sure that you understand that the information provided here is being provided freely, and that no kind of agreement or contract is created between you and any persons associated with this content or project. The authors and contributors do not assume and hereby disclaim any liability to any party for any loss, damage, or disruption caused by errors or omissions in the information contained in, associated with, or linked from this content, whether such errors or omissions result from negligence, accident, or any other cause.
Copyright © 2018-2023 Anton Babenko.
אין סיבה שלא לעקוב לפחות אחרי המוסכמות האלו :)
היזהרו בעת מתן השמות למשאבי הענן עצמם, לעיתים קרובות יש מגבלות בשמות מותרים. יש משאבים לדוגמא שלא יכולים להכיל מקפים, חלקם מחוייבים בקונבציות אחרות. המוסכמות בספר זה מתייחסות למתן שמות לאובייקטי Terraform בלבד.
השתמש ב- _ (מקף תחתון) במקום - (מקף) בכל מקום (בשמות משאבים, בשמות מקורות נתונים, בשמות משתנים, בפלט וכו').
עדיף להשתמש באותיות קטנות ובמספרים (למרות ש- UTF-8 נתמך).
אל תחזורו על סוג המשאב בשם המשאב (לא באופן חלקי או מלא):
שם משאב צריך להיקרא this
אם אין שם תיאורי וכללי זמין, לחלופין, אם מודול המשאב יוצר משאב יחיד מסוג זה (לדוגמה, במודול AWS VPC קיים משאב יחיד מסוג aws_nat_gateway
ומשאבים מרובים של aws_route_table
, לכן ל aws_nat_gateway
להיקרא בשם this
ו- aws_route_table
לכלול שמות תיאוריים יותר - כגון private
, public
, database
).
השתמשו תמיד בשמות עצם (יחיד) עבור שמות.
השתמש ב -
בתוך ערכי ארגומנטים ובמקומות שבהם הערך ייחשף לבני אדם (לדוגמה, בתוך שם DNS של RDS).
הארגומנטיים count
/ for_each
מומלץ שיבואו כארגומנטים ראשונים בתוך משאבים ויופרדו בשורה חדשה משאר ההגדרות.
האגומנט tags
מומלץ שיבוא אחרון, מיד אחרי lifecycles
ושיפורד בשורה ריקה בין שאר המשאבים
בעת שימוש בתנאים ב- argumentcount
/ for_each
עדיף להשתמש בערכים בוליאניים במקום להשתמש length
או בביטויים אחרים.
count
/ for_each