Table of Contents
אוטומציה של תשתית עם Azure ARM תבניות
ניהול תשתיות ענן התפתח ממדריך, קליק-צנטרי מתן הוראה כדי להבהיר, אוטומציה המונעת קוד. Azure Resource Manager (ARM) תבניות לעמוד במרכז השינוי הזה, המאפשר למפתחים וצוותי IT להגדיר, לפרוס, לנהל את משאבי Azure עם דיוק חוזר. על ידי הבעת המצב הרצוי של פתרון במסמך JSON מובנה, ARMs מבטלת את יכולת הנשימה ואת הסיכון הטבוע בתצורה של שיטות הפעלה מתקדמות.
מה הם תבניות Azure ARM?
תבנית Azure ARM היא קובץ של JavaScript Object Notation (JSON) המכריז על מערך של משאבי Azure – כגון מכונות וירטואליות, רשתות וירטואליות, חשבונות אחסון, מסדי נתונים ושירותי יישומים שלהם – והתצורה שלהם.התבנית מתארת את התוצאה של Azure:0 מההחלים של משאבי אנוש 1 נדרשים, FLT:2howFLT 3 הם מתייחסים אחד לשני, ו-F:4 אשר יוצר את התכונות הרצויות, אם הם צריכים להתאים את ה- Azure או את המשאבים של Azure, אם הם צריכים להתאים את ה-APT5, אם הם צריכים, אם הם צריכים להתאים את ה-A.
תבניות ARM הן תוצאה:0 (DempotentearFLT:1): פריסת אותה תבנית מספר פעמים מייצרת את אותה תוצאה, כל עוד הפרמטרים נשארים ללא שינוי.נכס זה חיוני לתשתיות קוד (IaC) זרימת עבודה מכיוון שהוא מאפשר לצוותים לבצע פריסות מחדש ללא שינוי בתכונות צד בלתי מאוחסנות.
כל תבנית מוקצה לקבוצת משאבים או מנויים, והיא יכולה להתייחס לתבניות אחרות - ארכיטקטורות מודולריות, אדריכלות מקבילה. בין אם אתה מספק סביבת מבחן אחת או רשת ייצור רב-אזורית, תבניות ARM מספקות מנגנון עקבי, ביקורתי לניהול טביעת הרגל של Azure שלך.
היתרונות של שימוש בתבניות ARM
ארגונים אשר מאמצים תבניות ARM חווים מספר הטבות למדידה לשיפור היעילות התפעולית והממשל.
יציבות סביבות
הוראות באופן בלתי נמנע מציגות סחף – באופן אור שונה תצורה בין התפתחות, עוקץ וייצור. ARM תבניות לאכוף מקור יחיד של אמת. כאשר אתה מפיץ את אותה תבנית עם פרמטרים ספציפיים לסביבה, אתה מבטיח כי תצורה של משאבים הבסיסית היא זהה.
אוטומציה ל-Steam/CD Pipelines
תבניות ARM משתלבות בצורה חלקה עם Azure DevOps, GitHub Actions, ג'נקינס וכלי צינורות אחרים.פריסה יכולה להיות מופעלת באופן אוטומטי על קוד מבצעים, רעננות המבוססות על לוח הזמנים, או אישורים ידניים.אוטומציה זו מאיצה את מחזורי מחזורי התפעול של צוותים מביצוע משימה חוזרת. בשילוב עם בדיקות תשתיות ואימות, צינורות אוטומטיים לחלוטין הופכים לעמוד השדרה של הענן הנדסי מודרני.
בקרת גרסאות וביקורת
מכיוון שתבניות ARM הן קבצי JSON פשוטים, הן מתאימות באופן טבעי לזרימות עבודה מבוססות Git.כל שינוי בהגדרה תשתיות הוא במעקב, ומאפשרות לצוותים לבחון היסטוריה, להשוות שינויים, ולגלגל חזרה למצב ידוע-טוב בשילוב עם Azure Activity Logs, באפשרותך לקבוע איזו גירסה תבנית שימשה כדי ליצור או לשנות משאב, תמיכה בדרישות ביקורת.
מהירות ושקיפות
תבניות ARM ממינוף מנוע התזמורת הילידים של Azure כדי לפרוס משאבים במקביל שבו אישורים התלויות. יישום רב-שכב מורכב שייקח שעות כדי להגדיר באופן ידני ניתן לספק בתוך דקות. יתר על כן, אותו תבנית ניתן לפרמטר כדי לפרוס מחסניות זהות לאזורים מרובים בו זמנית, המאפשרת התרחבות גיאוגרפית מהירה או תרחישים התאוששות אסון.
בקרת עלויות וממשל
על ידי הגדרת גדלים משאבים, SKUs, ותגים בתוך התבנית, ארגונים לאכוף מדיניות תגים להאכיל למרכזי עלות, מטענים, וכללי אוטומציה.
אנטומיה של תבנית ARM
הבנת המבנה של תבנית ARM היא הצעד הראשון לשימוש יעיל.קובץ JSON מאורגן למספר חלקים, כל אחד מהם משחק תפקיד ספציפי.
Sema ו- Content Version
כל תבנית מתחילה עם נכס (FLT:0) המזהה את גרסת שפת התבנית, ונכס של ההרחבה של ה-FLT:1 המסייע לשמור על הגרסה הפנימית. Azure Resource Manager משתמש בשקתת כדי לאמת את מבנה התבנית.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
...
}
TERMS
סעיף LT:3 מגדיר קלטות שניתן לספק בזמן הפריסה.זה הופך תבניות ניתן לשנות על פני סביבות. פרמטרים נפוצים כוללים אישורים מנהליים, מיקום, שמות משאבים, ו- SKU בחירה. ערכי Default ניתן לספק כדי לפשט פריסות.
משתנים
משתנים משמשים לפשט ביטויי תבנית, להפחית את החזרה, וערכים מותניים התלויים בפרמטרים או במשתנים אחרים.לדוגמה, אתה יכול לחדד שם לפנים עם שם הסביבה כדי ליצור מזהה משאבים ייחודי.
משאבים
הליבה של התבנית היא מערך ה-FLT:4 .כל אובייקט משאבים מפרט את ספק המשאבים, סוג, גירסה API, שם, מיקום, תכונות, ותלויות. Azure Resource Manager משתמש ב-FLT:5 נכסים כדי לפתור סדר - מקורות תלויים אחרים אינם פרוסים עד לסיום תנאי מוקדם שלהם.
בחוץ
פריטים מחזירים ערכים לאחר הפריסה, כגון שם התחום המוסמך המלא של אפליקציה אינטרנטית שנוצרה או מחרוזת החיבור של מסד נתונים. תפוקה זו יכולה להיות נצרכת על ידי צינורות עוקבים או לעבור לתבניות מקושרות לשימוש כפרמטרים.
כיצד למקם תבנית ARM
ניתן להשיג את עומק תבניות ARM באמצעות מספר ממשקים, כל אחד מתאים לזרימות עבודה שונות. להלן הם השיטות הנפוצות ביותר, יחד עם צעדים רבי-מעשיים לכל אחד.
שימוש ב- Azure Portal
עבור פריסות חד פעמיות או מטרות למידה, פורטל Azure מספק "Deploy תבנית מותאם אישית" להב.You יכול להדביק את JSON ישירות או לטעון אותו מקובץ.הפורטל אז זה ממריץ אותך למלא ערכי פרמטר ולהציג סיכום אימות לפני פריסה.
שימוש ב- Azure CLI
Azure Command-Line Interface (CLI) מציע את הפקודה 6 עבור פריסות של קבוצת משאבים.
az deployment group create \
--resource-group myResourceGroup \
--template-file azuredeploy.json \
--parameters @parameters.json
CLI מאשר את ה-תבנית syntax ופרמטרים לפני תחילת הפריסה, והוא זורם קדימה אל הטרמינל. Azure CLI הוא בשימוש נרחב בתסריטי CI /CD כי זה יכול לרוץ על לינוקס, macOS וסוכני Windows.
שימוש ב- Azure SDK
משתמשים ב-Plat יכולים לפרוס עם ה-FLT:8 , החוויה דומה ל- CLI, עם היתרון הנוסף של טיפול בשגיאה מובנה-in-bit והיכולת לשלב עם Azure Automation.
שימוש ב- API REST
עבור בקרת מקסימלית או כלי מותאם אישית, כל ניתוח פריסה ניתן להשתמש באמצעות מנהל משאבי Azure REST API.זהו המנגנון הבסיסי כי הפורטל, CLI, ו- PDF השימוש, אך חשיפתו מאפשרת למפתחים להטמיע פריסות לתוך צינורות שאינם Microsoft.
המונחים:
ללא קשר לכלי, תהליך הפריסה עוקב אחר דפוס עקבי:
- (ב) [ה]:0 [ד]פפין או לרכוש את תבנית ARM של ההרחבה 1] – או לכתוב מאפס, יצוא מקבוצת משאבים קיימת, או להשתמש בתבנית מהירה של ספריית Azure (ראה:2אזור: תבניות QuickstartratedsFLT 3).
- (FLT:0)Prepare הפרמטריםFLT:1 - ליצור קובץ פרמטרים נפרדים JSON או להעביר ערכים פרמטרים באמצעות טיעונים מקוונים פיקודית.
- (ב) ויקרא (ב) ויקרא כ"ד): "ה' (ה')" (ב"ה)" (ב"ה)" (ב)"ה')" (ב"ה)"ה')" (ב"ה')"ה')"ה', "ה'ולפני הפריסה בפועל.
- (ב) [ה]:0] לנסח את הפריסה של ה-FLT:1 (הגיש את התבנית והפרמטרים למנהל משאבי Azure.Optionally, להגדיר את מצב הפריסה ל-FLT:11 (ה ברירת המחדל) או ל-FLT:12, אשר מחק משאבים בקבוצת המשאבים שאינם מוגדרים בתבנית.
- (FLT:0)Monitor ו-Esert (FLT) 1 - לבדוק את מעמד הפריסה בפורטל, Azure CLI, או יומני צינורות.קבעו כי כל המשאבים נוצרים עם התצורה המיועדת וכי קישוריות עובדת.
שיטות טובות ביותר לתבנית ARM
כתיבת תבניות ARM יעילה דורש יותר מאשר רק ידע של סינטקס.הפרקטיקות הבאות הוכחו בסביבות הייצור ומומלץ על ידי צוותי ההנדסה של Azure.
החלפה עם תבניות מקושרות
תבניות מונוליטיות גדולות, גדולות, הופכות לקשה על שמירה והפעלה מחדש. לשבור את התשתית שלך לרכיבים לוגיים - עבודה, compute, אחסון, יישום - והתייחסות אליהם באמצעות תבניות מקושרות. גישה זו מאפשרת לצוותים שונים להחזיק ולגרסה שלהם באופן עצמאי תוך כדי עדיין הצבת סביבה מלאה. השתמש בנכס FLT:13 כדי להצביע ל-URL של תבנית הילד, ולהעביר פרמטרים הדרושים.
תמיד לספק ערכי הגנה
פרמטרים שיכולים לחזור בבטחה לחדלות סבירות צריכים לכלול פריסת סימולציות זו עבור מפתחים אשר לא יודעים כל SKU או מיקום, להימנע מ ברירת מחדל עבור ערכים רגישים כמו סיסמאות - במקום זאת להשתמש ב- Key Vault הפניות עם סוג FLT:15.
שימוש ב Expressions and Functions
(ב) ,ב[[18]], [[1924]], [[1924]]]], [[1924]]]], [[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]]]]]]]]]]]], [[1924]]]] ו[[1924]], [[1924]], [[1924]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]]]], [[1924]], [[1924]], [[[[1924]],
יישום בקרת גישה מבוססת-תפקיד (RBAC) בתבנית
אל תחכו עד לאחר הפריסה כדי להקצות הרשאות.כולל ⁇ ישירות בתבנית ARM שלך באמצעות סוג משאב של LT:21.זה מבטיח כי כל סביבה מקבלת את ההרשאה הנכונה מהרגע שנוצר, צמצום חלון הפגיעות ואת ראש של תצורה שלאחר דיסיפומנטציה.
עקבו אחרי What-If
לפני הפעלת פריסה שיכולה לשנות את המשאבים הקיימים, להשתמש במבצע "מה אם" (FLT:22 או FLT:23) זה יוצר תצוגה מקדימה של השינויים התבנית תעשה - ההרחבות, שינויים, ומחיקה - מבלי ליישם אותם. אימות הפלט הזה עם הצוות שלך כדי לתפוס שינויים הרסניים לא מאומתים.
שימוש ב-Creitly
(הופנה מהדף "החלים" (ב) על כל משאב בתבנית שלך כדי לתמוך במעקב עלות, אוטומציה וניהול משאבים (הופנה מהדף Define a Standard system of tags (למשל, FLT:24, FLT:25, 25,FLT:26, ו-FLT:27) ולהשתמש ב-FLT:28 פרמטרים כדי להעביר אותם ברמת המשאבים, אך ניתן לירושה במפורש בתוך התבנית מספקת שליטה מטושטשת יותר.
תבניות ב- Source control
השתמש בתבניות ARM כקוד יישום. לשמור אותם ב- Git repository עם אותו ענף, ביקורת קוד ותקני בדיקה המשמשים לתוכנה.ארח את התבניות במיקום נגיש לציבור (כגון GitHub repo או Azure Storage נפיחות) אם אתה מתכנן להשתמש בתבניות מקושרות, כי מנהל המשאבים של Azure חייב להיות מסוגל להוריד את הקבצים הנלווים במהלך פריסה.
סקרינריו
ברגע שאתה נוח עם פריסות בסיסיות, לשקול את הדפוסים מתקדמים אלה כדי לשפר עוד יותר את האוטומציה והגמישות.
שימוש ב- Azure Policy with ARM
מדיניות Azure יכולה לאכוף את חוקי הציות על פני מנויים.כאשר פריסה עם תבניות ARM, מדיניות עשויה להכחיש או ביקורת הגדרות משאבים מסוימות.עיצוב התבניות שלך להיות מדיניות-מודעות - לדוגמה, על ידי פרמטר משאבים SKUs כדי להתאים ערכים מורשים המוגדרים במדיניות.סינרגיה זו מונעת פריסות כושלות עקב הפרות מדיניות ולהבטיח שכל פריסה עומדת בדרישות הממשל.
עקבו אחרי Azure DevOps Pipelines
צינור CI /CD שלם לתשתיות ניתן לבנות באמצעות Azure Pipelines.שלב הצינור יכלול בדרך כלל:
- לתפוס את התבנית האחרונה של בקרת מקור
- אימוני linting and אימות
- ⁇ הההתנדבות לסביבה של פיתוח באמצעות המשימה של FLT:29
- ביצוע בדיקות עשן או בדיקות אינטגרציה נגד המשאבים הפרוסים
- קידום אותה תבנית לטיפוח וייצור לאחר אישור
קבצי פרמטר ספציפיים לסביבה בענפים נפרדים או קבוצות משתנה כדי לשמור על התבנית עצמה סביבה-agnostic. Azure Key Vault ניתן לשלב כדי לשחזר סודות באופן מאובטח במהלך הריצה.
שילוב הרחבות Custom Script
בעוד תבניות ARM מכסה משאבים מתן משאבים, לעתים קרובות צריך לבצע תסריטים תצורה בתוך VM לאחר שהוא נוצר.ה-FLT:30 משאבים, במיוחד את הסיומת Custom Script, מאפשר לך להטמיע פיקסלים או ל-Block Scripts בתוך התבנית או להפנות אותם באמצעות כתובות.תבנית זו משמשת להתקנת תוכנה, הצטרפות לתחומים, או התאמת כללי חומת אש - כל חלק של פריסה בודדת, חסימת.
מינוף של איכות הסביבה כולה עם טביעות כחולות
Azure Blueprints מרחיבה את הרעיון של תבניות ARM על ידי מדיניות מבוללת, משימות תפקיד וקבוצות משאבים לתוך חפץ יחיד, חוזר על עצמו עבור פריסות בקנה מידה ארגוני - כגון יצירת מנוי חדש עם בסיס ניהול סטנדרטי - לוחות כחולים מספקים אבסטרקציה ברמה גבוהה יותר הכוללת תבניות ARM כמו מרכיב אחד.זה שימושי במיוחד בעת ביצוע פרויקטים חדשים או עסקים יחידות.
מלכודות נפוצות וכיצד להימנע מהם
אפילו מהנדסים מנוסים נכנסים לבעיות עם תבניות ARM, להיות מודע נקודות כאב נפוצות אלה יכול לחסוך שעות של פתרון בעיות.
- (ב) ויקרא י"ד: ויקרא י"ד: "וַיָּבְהָעָם אֱלֹהִים" (שם כ"ד, כ"ד)
- (FLT:0 גירסאות API נכונות של APIFLT:1 גורמות לכישלונות פריסה או תכונות חסרות.פין את גרסת ה- API להודעה מסוימת שבדקת, ועדכן אותה רק לאחר שבדקת הערות.
- (ב) ⁇ :0) תלויות מעגליות (FLT:1) בין משאבים: תבניות ARM תומכים רק בתלויים קדימה; אין באפשרותך להיות תלוי ב- B ו- B, תלוי ב-A.Refactor your Resources to break theמחזור.
- (ב) עיין:0) , ראה מגבלות משאבים (FLT:1 ), כגון מכסות מנויים או זמינות ספציפית לאזור SKU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- (ב) [ה]ההתכנויות של פריסה (ה-FLT:0) [ההההפצה] של ⁇ [ה] ב[[1924]], ב[[1924]],]], ב[[1924]],]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]
מסקנה
תבניות Azure ARM הן כלי בסיסי לכל מי שמנהל תשתיות ענן ב- Microsoft Azure. הן מאפשרות פריסות עקביות, אוטומטיות וביקורתיות שיכולות להגיע ממכונה וירטואלית אחת לרשת יישומים גלובלית, רב-שכבתית.על ידי שליטה במבנה, שיטות פריסה ותבניות מתקדמות - כגון תבניות מקושרות, שילוב CI/CD, ותוספות מותאמות אישית - צוותים יכולים להשיג רמה של יעילות מבצעית שהוראות לא יכולות להתאים לעולם.
המסע לתשתיות מלאות - כמו קוד לא קורה בין לילה.התחל קטן: לייצא קבוצת משאבים קיימת כתבנית, פרמטר ערכיה, ובצע אותו כדי לשלוט במקור. בהדרגה להרחיב את ספריית המודולים הניתנים לחזרה, לשלב אימות ומה ניתוח אם לתוך הצינור שלך, ולאמץ מדיניות הבהרתית לצד התבניות שלך.עם כל ההצתה, פריסות שלך יהפכו מהר יותר, אמין יותר, וקל יותר לשלוט.
לקריאה נוספת, לחקור את התבניות הרשמיות של FLT:0 (ARM Patternss) איורים של תבנית ריצוף (FLT) 1:1 ואת ה-FLT:2אזור Quickstart תבניות repositoryFLT 3, המכיל מאות דוגמאות קהילתיות-המוגדרות.אוטומציה אינה רק על הימנעות מעבודה ידנית - היא על בניית בסיס לחדשנות שיכולה לעמוד בקצב של דרישות של תוכנה מודרנית.