מהי תשתית כקוד?

הושלם

תתבקש להעריך אם תשתית כקוד עשויה להיות גישה חשובה להקצאת משאבים בחברה שלך. אתה סוקר את האפשרויות הזמינות לפריסה, כולל:

  • פורטל Azure
  • Azure CLI
  • Azure PowerShell
  • תבניות של Azure Resource Manager (JSON ו- Bicep)

אתה מחפש אפשרות חוזרת, ועלך להחליט באיזו טכנולוגיה להשתמש כדי לפרוס את תשתית Azure שלך.

ביחידה זו תלמדו כיצד ומדוע תשתית כקוד יכולה לעזור לכם לפרוס את תשתית Azure באופן אוטומטי וניתן להפעלה חוזרת.

פקודות ממשק משתמש של Azure משמשות להמחשה של מושגים. קבל מידע נוסף על השימוש בפקודות לפריסת משאבים במודולים אחרים של נתיב הלמידה של Bicep.

הגדרת תשתית כקוד

החברה שלך תעצב צעצועים חדשים להפצה לשוק, ורוב הצעצועים החדשים דורשים הרכבה מסוימת לאחר הרכישה. צוות העיצוב של החברה יוצר מדריכי הדרכה שייכללו בכל מכשיר. כל ידני מספק פרטים על האופן שבו יש להרכיב כראוי את ה פרטי המשחק.

ניתן לחשוב על תשתית כקוד כמדריך ההוראות עבור התשתית שלך. המדריך מפרט את תצורת הסיום של המשאבים שלך ואת אופן לגשת למצב תצורה זה.

תשתית כקוד היא תהליך של הפיכת הקצאת התשתית לאוטומטית. הוא משתמש בשפת קידוד תיאורית ובמערכת ניהול גירסאות הדומה למה המשמש עבור קוד מקור. בעת יצירת יישום, קוד המקור שלך יוצר את אותה תוצאה בכל פעם שאתה מבצע קומפילציה. באופן דומה, פריסות תשתית כקוד הן אוטומטיות, עקביות וניתן להפעלה חוזרת. תשתית כקוד יכולה להפוך את פריסות משאבי התשתית שלך לאוטומטיות, כגון רשתות וירטואליות, מחשבים וירטואליים, אפליקציות ואחסון.

דיאגרמה המציגה את התשתית כתהליך קוד באמצעות מאגר קוד מקור עם תבנית הפריסה של משאבי Azure.

אם אתה מחזר את מדריך ההוראות עבור ה אנדי החדש, קיימות כמה דרכים לכתוב את מדריך ההוראות. אפשרות אחת היא להוסיף פירוט לכל שלב בתהליך ה- Build. אפשרות נוספת היא להציג תצוגה מופוצצת של החלקים והרכיבים הדרושים כדי להרכיב את השובך. בהמשך יחידה זו, תלמד על ההבדלים בין קוד הכרחי לקוד הצהרתי וכיצד הם קשורים למדריכי ההוראות של החברה שלך.

מדוע כדאי להשתמש בתשתית כקוד?

אימוץ תשתית כגישה לקוד מציע יתרונות רבים להקצאת משאבים. באמצעות תשתית כקוד, באפשרותך:

  • הגבר את הביטחון בפריסות שלך.
  • נהל בסביבות מרובות.
  • הבן טוב יותר את משאבי הענן שלך.

הגבר את הביטחון

אחד היתרונות של שימוש בתשתית כקוד הוא רמת הביטחון שאתה משיג בפריסות שלך מתוך שיפורים בעקביות ובאבטחה.

  • שילוב עם תהליכים: אם הארגון שלך כבר משתמש בשיטות פיתוח תוכנה סטנדרטיות, באפשרותך לאמץ תהליכים אלה עבור פריסות התשתית שלך. לדוגמה, ביקורות עמיתים יכולות לעזור בזיהוי בעיות בתצורות שעשויות להיות קשה לזיהוי בעת ביצוע שינויים ידניים.

  • עקביות: אימוץ תשתית כגישה לקוד עוזרת לצוות שלך לעקוב אחר תהליכים מבוססי-היטב לפריסת תשתית. על-ידי ביצוע תהליכים אלה, האחריות תזז מקבוצה קטנה של אנשים לתהליך האוטומציה ולתהליכי הכלים שלך. תשתית כקוד מסייעת בהפחתת שגיאת אנוש בהקצאת משאבים ומבטיחה פריסות עקביות.

  • סריקה אוטומטית: באפשרותך לסרוק תצורות של תשתית כקוד באמצעות כלי אוטומטי שעלולים לבדוק אם קיימים שגיאות בקוד. כלי אוטומטי יכול גם לסקור שינויים מוצעים כדי להבטיח שנוהלי האבטחה והביצועים בוצעו.

  • ניהול סודי: פתרונות רבים דורשים סודות, כגון מחרוזות חיבור, מפתחות הצפנה, סודות לקוח ואישורים. ב- Azure, Azure Key Vault הוא השירות המשמש לאחסון מאובטח של סודות אלה. כלים רבים של תשתית כקוד יכולים לשלב עם Key Vault כדי לגשת לסודות אלה בצורה מאובטחת בפריסה.

  • בקרת גישה: בפריסות של תשתית כקוד, יש לך אפשרות להשתמש בזהויות מנוהלות או בחשבונות שירות כדי להפוך הקצאת משאבים לאוטומטית. תהליך זה מבטיח שרק זהויות אלה יוכלו לשנות את משאבי הענן שלך. הוא גם מסייע במניעת תצורות שגויות שנפרסו לייצור. במידת הצורך, באפשרותך לעקוף תהליך זה באמצעות חשבון גישה לשעת חירום (נקרא לעתים קרובות חשבון שבור חשבון זכוכית) או באמצעות התכונה ניהול זהות הרשאות של מזהה Entra של Microsoft.

  • למנוע סחף תצורה: Idempotence הוא מונח המשויך לעתים קרובות לתשתית כקוד. כאשר פעולה היא idempotent, פירוש הדבר שהיא מספקת את אותה תוצאה בכל פעם שאתה מפעיל אותה. אם אתה בוחר כלי שמשתמש בפעולות idempotent, באפשרותך להימנע מהסחף של תצורה.

כדוגמה ל- idempotence, שקול את הפקודה הבאה של Azure CLI. הפקודה יוצרת קבוצת משאבים של Azure storage-resource-group באזור מזרח ארה"ב.

az group create \
  --name storage-resource-group \
  --location eastus

אם אתה מפעיל פקודה זו פעם נוספת, תקבל בדיוק את אותו פלט מכיוון שפקודה זו של ממשק שורת הפקודה Azure תוכננה להיות idempotent. אינך מקבל שגיאה או קבוצת משאבים כפולה.

כאשר אתה משתמש בתשתית כקוד, באפשרותך לפרוס מחדש את הסביבה שלך בכל מהדורה של הפתרון שלך. מהדורות אלה עשויות לשלב שינויי תצורה קטנים או אפילו עדכונים משמעותיים. תהליך זה מסייע במניעת סחף תצורה. אם בוצע שינוי בטעות במשאב, ניתן לתקן אותו על-ידי חלוקה מחדש של התצורה. על-ידי ביצוע גישה זו, אתה תועד את הסביבה שלך באמצעות קוד.

ניהול בסביבות מרובות

ארגונים רבים שומרים על סביבת יישומים מרובה. ייתכן שלמפתחים בחברה שלך למפתחים יש גירסאות מרובות של קוד אפליקציה בשלבים במאגר להפצה לסביבות שונות. הסביבות עשויות לכלול פיתוח, בדיקות וייצור. ארגונים מסוימים מנהלים סביבת ייצור מרובה עבור יישומים המופצים ברחבי העולם. ארגונים אחרים, כגון ספקי תוכנה עצמאיים (ISVs), שומרים על סביבת דיירים מרובה עבור הלקוחות שלהם.

להלן כמה מהדרכים מרכזיות שבהן תשתית כקוד יכולה לעזור לך לנהל את הסביבות שלך:

  • להקצות סביבת עבודה: אחד היתרונות העיקריים של מיחשוב ענן הוא היכולת לשנות את קנה המידה. תשתית כקוד יכולה לעזור לך להתאים את קנה המידה למופעים מרובים של היישום שלך. מופעים אלה יכולים לעזור בזמנים של עומס מוגבר, או לפרוס אותם עבור משתמשים באזורים אחרים בעולם. זריזות זו יכולה גם להיות מועילה בעת בדיקת האפליקציה שלך, כגון במהלך בדיקות חדירה, בדיקת עומס ובדיקות באגים. באמצעות בסיס קוד מוגדר היטב, באפשרותך להקצות באופן דינאמי את הסביבות החדשות האלה באופן עקבי.

  • שאינן שכפול: ארגונים בעייתיים נפוצים הם הה בידיעה בין סביבת ייצור וסביבות שאינן שכפול. בעת הקצאת משאבים באופן ידני בסביבות נפרדות, ייתכן שתצורות הקצה אינן תואמות. דוגמה לכך היא בעת פריסת תכונה חדשה בסביבה שאינה שכפול השונה מסביבת הייצור. ייתכן שהתכונה החדשה אינה פועלת כצפוי בסביבת הייצור עקב ההבדלים בין שתי הסביבות. שימוש בתשתית כקוד יכול לסייע בצמצום בעיות אלה. באפשרותך להשתמש באותם קבצי תצורה עבור כל סביבה, אך לספק פרמטרי קלט שונים כדי ליצור ייחודיות.

  • שחזור: במצבים מסוימים, תשתית כקוד יכולה לשמש כחלק מתוכנית שחזור מאסונות של הארגון. לדוגמה, ייתכן שיהיה עליך ליצור מחדש את הסביבה שלך באזור אחר עקב הוצאה מהשירות. על-ידי שימוש בתשתית כקוד, באפשרותך להקצות מופע חדש במהירות לגיבוי בעת כשל במקום לפרוס ולקבע מחדש את התצורה של הכל באופן ידני.

הבן טוב יותר את משאבי הענן שלך

תשתית כקוד יכולה לעזור לך להבין טוב יותר את מצב משאבי הענן שלך:

  • ביקורת: השינויים שתצורות התשתית-כקוד שלך נשלטות על-ידי גירסה כפי שקוד המקור של היישום נשלט. מתבצע מעקב אחר שינויים אלה בכלי שלך, כמו עם היסטוריית הגירסאות של Git. נתיב ביקורת זה פירושו שתוכל לסקור את הפרטים של כל שינוי, מי ביצע את השינוי ומתי בוצע השינוי.

  • תיעוד: באפשרותך להשתמש בתצורות רבות של תשתית כקוד כדי להוסיף מטה-נתונים, כגון הערות, המתארות את מטרת הקוד בתצורה שלך. אם הארגון שלך כבר פועל בהתאם לתהליך תיעוד קוד, שקול לאמץ הליכים אלה באמצעות קוד התשתית שלך.

  • מערכת מאוחדת: פעמים רבות, כאשר מפתח עובד על תכונה חדשה, עליו לבצע שינויים בקוד היישום ובקוד התשתית. כאשר אתה משתמש במערכת משותפת, הארגון שלך יכול להבין טוב יותר את הקשר בין היישומים שלך לתשתית שלך.

  • הבנה טובה יותר של תשתית ענן: בעת שימוש בפורטל Azure להקצאת משאבים, רבים מהתהליכים מתפשטים מהתצוגה. תשתית כקוד יכולה לעזור לספק הבנה טובה יותר של אופן הפעולה של Azure וכיצד לפתור בעיות שעלולות להתעורר. לדוגמה, בעת יצירת מחשב וירטואלי באמצעות פורטל Azure, חלק מהמשאבים שנוצרו מופשטים מהתצוגה. דיסקים מנוהלים וכרטיסי ממשק רשת נפרסים מאחורי הקלעים. בעת פריסת אותו מחשב וירטואלי באמצעות תשתית כקוד, יש לך שליטה מלאה על כל המשאבים שנוצרים.

קוד הכרחי ומוצהר

באפשרותך לכתוב מדריך הוראות להרכבת פריטים חדשים בדרכים שונות. בעת הפיכת הפריסה של שירותים ותשתית לאוטומטית, באפשרותך לבצע שתי גישות: הכרחיות והצהרתיות.

  • עם ההוויה, עליך לבצע רצף של פקודות בסדר מסוים כדי להגיע לתצורות סיום. תהליך זה מגדיר את מה שהקוד צריך לבצע, ומגדיר כיצד להשלים את המשימה. הגישה התחזותית היא כמו מדריך הוראות שלב אחר שלב.

  • עם קוד הצהרתי, עליך לציין את תצורת הסיום בלבד. הקוד אינו מגדיר כיצד להשלים את המשימה. הגישה המוצהרת היא כמו מדריך ההוראות לתצוגה מופוצצת.

כאשר אתה בוחר בין שימוש בגישה הכרחית לבין גישה הצהרתית להקצאת משאבים, קח בחשבון את הכלים שייתכן שכבר נמצאים בשימוש בארגון שלך. בנוסף, קח בחשבון איזו גישה עשויה להתאים לכישורים שלך.

קוד הכרחי

ב- Azure, גישה של קוד הכרחי מושגת באופן תוכניתי באמצעות שפת Scripting כגון Bash או Azure PowerShell. קבצי ה- Script עשויים לבצע סידרה של שלבים כדי ליצור, לשנות ואף להסיר את המשאבים שלך.

דוגמה זו מציגה שתי פקודות CLI של Azure יוצרות קבוצת משאבים וחשבון אחסון.

#!/usr/bin/env bash
az group create \
  --name storage-resource-group \
  --location eastus

az storage account create \
  --name mystorageaccount \
  --resource-group storage-resource-group \
  --location eastus \
  --sku Standard_LRS \
  --kind StorageV2 \
  --access-tier Hot \
  --https-only true

הפקודה הראשונה יוצרת קבוצת משאבים בשם storage-resource-group באזור מזרח ארה"ב. הפקודה השניה יוצרת חשבון אחסון בשם mystorageaccount בקבוצת המשאבים storage-resource-group שנוצרה בפקודה הראשונה. הפקודה השניה גם מגדירה מאפיינים מסוימים עבור חשבון האחסון, כולל סוג חשבון האחסון ורמה הגישה שלו.

באפשרותך להשתמש בגישה הכרחית כדי להפוך הקצאת משאבים לאוטומטית באופן מלא, אך לגישה יש כמה חסרונות. ככל שהארכיטקטורה שלך מתבגרת, קבצי Script יכולים להיות מורכבים לניהול. ניתן לעדכן או לבטל את השימוש בפקודות, דבר הדורש ביקורות של קבצי Script קיימים.

קוד הצהרתי

ב- Azure, מתבצעת גישה לקוד הצהרתי באמצעות תבניות. סוגים רבים של תבניות זמינים לשימוש, כולל:

  • JSON
  • Bicep
  • Ansible, מאת RedHat
  • Terraform, מאת HashiCorp

הערה

מודול זה מתמקד בשימוש בתבניות Bicep.

עיין בדוגמה הבאה של תבנית Bicep שמגדירה חשבון אחסון. התצורה של חשבון האחסון תואמת לדוגמת ממשק המשתמש של Azure.

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: 'mystorageaccount'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
    supportsHttpsTrafficOnly: true
  }
}

המקטע משאבים מגדיר את תצורת חשבון האחסון. מקטע זה מכיל את השם, המיקום והמאפיינים של חשבון האחסון, כולל ה- SKU שלו ואת סוג החשבון.

ייתכן שתבחין שתבנית Bicep אינה מציינת כיצד לפרוס את חשבון האחסון. הוא מציין רק איך צריך להיראות חשבון האחסון. השלבים בפועל הבוצעו מאחורי הקלעים כדי ליצור חשבון אחסון זה או כדי לעדכן אותו כך שיתאים למפרט נותרים כדי ש- Azure יחליט.