תשתית כקוד

תשתית כקוד (IaC) היא תהליך של ניהול והקצאת משאבי מרכז נתונים של מחשבים באמצעות קובצי הגדרות קריאים על ידי מכונה, ולא באמצעות תצורת חומרה פיזית או כלי תצורה אינטראקטיביים.Wittig, Andreas; Wittig, Michael (2016). Amazon Web Services in Action. Manning Press. p. 93. . תשתית ה-IT המנוהלת על ידי תהליך זה כוללת הן ציוד פיזי, כגון שרתי Bare Metal, והן מכונות וירטואליות, ומשאבי תצורה נלווים. ההגדרות עשויות להיות במערכת בקרת גרסאות, במקום לתחזק את הקוד באמצעות תהליכים ידניים. הקוד בקובצי ההגדרות עשוי להשתמש בסקריפטים או בהגדרות הצהרתיות, אך IaC משתמש לעיתים קרובות יותר בגישות הצהרתיות.

 סקירה כללית 
תחום ה-IaC צמח כתגובה לקושי שהציבו מחשוב שירותים ומסגרות אינטרנט מהדור השני. בשנת 2006, השקת Elastic Compute Cloud של Amazon Web Services וגרסת 1.0 של Ruby on Rails חודשים ספורים קודם לכן יצרו קשיי קנה מידה נרחבים בארגון, אשר בעבר חוו רק בחברות גדולות ורב-לאומיות. עם כלים חדשים שקמים לטיפול בתחום הצומח הזה, נולד רעיון ה-IaC. המחשבה על מידול תשתיות באמצעות קוד, ולאחר מכן היכולת לתכנן, ליישם ולפרוס תשתית יישומים עם שיטות עבודה מומלצות ידועות של תוכנה, קסמה הן למפתחי תוכנה והן למנהלי תשתיות IT. היכולת להתייחס לתשתית כקוד ולהשתמש באותם כלים כמו בכל פרויקט תוכנה אחר תאפשר למפתחים לפרוס יישומים במהירות.Fletcher, Colin; Cosgrove, Terrence (26 August 2015). Innovation Insight for Continuous Configuration Automation Tools. Gartner (Report).

 יתרונות 
ניתן לחלק את הערך של IaC לשלוש קטגוריות מדידות: עלות, מהירות וסיכון. [ 17 ]

הפחתת עלויות שואפת לסייע לא רק לארגון מבחינה כלכלית, אלא גם מבחינת כוח אדם ומאמץ, כלומר על ידי הסרת הרכיב הידני, אנשים יכולים למקד מחדש את מאמציהם במשימות ארגוניות אחרות. [ 17 ] אוטומציה של תשתיות באמצעות קוד חוסכת זמן מאשר יצירת התשתיות בצורה ידנית. אוטומציה מסירה את הסיכון הכרוך בטעויות אנוש, כמו תצורה שגויה ידנית; הסרת הסיכון הזו יכולה להפחית את זמן ההשבתה ולהגביר את האמינות. תוצאות ותכונות אלו עוזרות לארגון להתקדם לקראת יישום תרבות של DevOps, עבודה משולבת של פיתוח ותפעול.Riley, Chris (12 November 2015). "Version Your Infrastructure". DevOps.com.

 סוגי גישות 
ישנן בדרך כלל שתי גישות ל-IaC: הצהרתית (פונקציונלית) לעומת אימפרטיבי (פקודתי). ההבדל בין הגישה הצהרתית לגישה האימפרטיבי הוא בעיקרו של דבר מה לעומת איך. הגישה הצהרתית מתמקדת במה צריכה להיות תצורת היעד הסופית. האימפרטיבי מתמקד באופן שבו יש לשנות את התשתית כדי לעמוד בכך.Phillips, Andrew (14 May 2015). "Moving from Infrastructure Automation to True DevOps". DevOps.com הגישה הצהרתית מגדירה את המצב הרצוי והמערכת מבצעת את מה שצריך לקרות כדי להשיג את המצב הרצוי. אימפרטיבי מגדיר פקודות ספציפיות שיש לבצע בסדר המתאים כדי להגיע למסקנה הרצויה."Declarative v. Imperative Models for Configuration Management: Which Is Really Better?". Scriptrock.com. Archived from the original on 31 March 2015. Retrieved 14 December 2015

 שיטות 
תשתית כקוד (IaC) מאפשרת לנהל שרתים ואת התצורות שלהם באמצעות קוד. ישנן שתי דרכים לשלוח תצורות אלו לשרתים: שיטות ' push ' ו-' pull '. בשיטת 'push', המערכת השולטת בתצורה שולחת הוראות ישירות לשרת. בשיטת 'pull', השרת שולף את ההוראות שלו ממערכת הבקרה.Loschwitz, Martin (14 November 2014). "Choosing between the leading open source configuration managers". Admin Network & Security. Lawrence, KS USA: Linux New Media USA LLC

 כלים 
ישנם כלים רבים הממלאים יכולות אוטומציה של תשתיות ומשתמשים ב-IaC. באופן כללי, כל framework או כלי שמבצע שינויים או מגדיר תשתית באופן הצהרתי או אימפרטיבי על ידי גישה תכנותית יכולים להיחשב IaC.Venezia, Paul (21 November 2013). "Puppet vs. Chef vs. Ansible vs. Salt". Network World . Network World. Retrieved 14 December 2015. באופן מסורתי, כלי אוטומציה של שרתים וניהול תצורה שימשו להשגת IaC. כיום ארגונים משתמשים גם בכלי אוטומציה של תצורה רציפה או בכלי IaC עצמאים, כגון PowerShell DSC של מיקרוסופטGarner Market Trends: DevOps – Not a Market, but Tool-Centric Philosophy That supports a Continuous Delivery Value Chain (Report). Gartner. 18 February 2015. או AWS CloudFormation.Chaganti, Ravikanth (5 January 2016). "DevOps, Infrastructure as Code, and PowerShell DSC: The Introduction". PowerShell Magazine. PowerShell Magazine. Retrieved 11 January 2016

 תוכן קהילתי 
תוכן קהילתי הוא גורם מפתח לאיכות כלי CCA בקוד פתוח. כפי שגרטנר מציינת, ערכם של כלי CCA "תלוי בתוכן ובתמיכה של קהילת המשתמשים, בדיוק כפי שהוא תלוי בבשלות המסחרית ובביצועים של כלי האוטומציה". ספקים מבוססים כמו Puppet ו־Chef יצרו קהילות משלהם. ל-Chef יש את Chef Community Repository ול-Puppet יש את PuppetForge."Introducing AWS CloudFormation" ספקים אחרים מסתמכים על קהילות אחרות וממנפים מסגרות IaC אחרות כמו PowerShell DSC. מערכות חזותיות ומונחות עצמים אלו פועלות היטב עבור מפתחים, אך הן שימושיות במיוחד עבור DevOps ותפעול מונעי ייצור שמעריכים מודלים על פני סקריפטים לתוכן. ככל שהתחום ממשיך להתפתח ולהשתנות, התוכן מבוסס הקהילה יהפוך לחשוב יותר ויותר לאופן שבו משתמשים בכלי IaC.
כלי פורסם על ידי שיטה גישה נכתב ב הערות CFEngine Northern.tech (1993) Pull הצהרתי C - Puppet Puppet (2005) Push and Pull הצהרתי ואימפרטיבי C++ ו־Clojure מאז גרסה 4.0, Ruby - Chef Chef (2009) Pull הצהרתי ואימפרטיבי Ruby - SaltStack SaltStack (2011) Push and Pull הצהרתי ואימפרטיבי פייתון - Ansible/Ansible Tower Red Hat (2012) Push and Pull הצהרתי ואימפרטיבי פייתון - Terraform HashiCorp  Push הצהרתי ואימפרטיבי Go - Otter Inedo (2015) Push הצהרתי ואימפרטיבי - מוכוון Windows Pulumi Pulumi (2018) Push הצהרתי ואימפרטיבי Go - Open Tofu קרן לינוקס ותורמים (2023) Push הצהרתי ואימפרטיבי Go Terraform fork
כלים נוספים כוללים גם: AWS CloudFormation, cdist, StackStorm, Juju ו-Step CI.

 מערכות יחסים 
 קשר ל-DevOps 
IaC יכול להיות מאפיין מפתח המאפשר שיטות עבודה מומלצות ב־DevOps. המפתחים נהיים מעורבים יותר בהגדרת התצורה וצוותי תפעול מעורבים מוקדם יותר בתהליך הפיתוח.Sturgeon, Phil (28 October 2012). "Puppet or Chef?". Archived from the original on 1 February 2016. Retrieved 29 January 2016. כלים המשתמשים ב-IaC מביאים נראות למצב ולתצורת השרתים ובסופו של דבר מספקים את הנראות למשתמשים בתוך הארגון, במטרה לייעל את העבודה. אוטומציה באופן כללי שואפת לקחת את הבלבול וההיבט המועד לשגיאות של תהליכים ידניים ולהפוך אותם ליעילים ופרודוקטיביים יותר. זה מאפשר יצירת תוכנה ויישומים טובים יותר עם גמישות, פחות זמן השבתה וצורת עבודה יעילה כוללת עבור החברה. IaC נועד להפחית את המורכבות שהורגת את היעילות של תצורה ידנית. אוטומציה ושיתוף פעולה נחשבים לנקודות מרכזיות ב-DevOps; כלי אוטומציה של תשתיות כלולים לעיתים קרובות כרכיבים בשרשרת כלים של DevOps.Wurster, Laurie F.; Colville, Ronni J.; Height, Cameron; Tripathi, Somendra; Rastogi, Aditi. Emerging Technology Analysis: DevOps a Culture Shift, Not a Technology (Report). Gartner.

 הקשר לאבטחה 
דוח איומי הענן לשנת 2020 שפורסם על ידי יחידה 42 (יחידת מודיעין האיומים של ספקית אבטחת הסייבר פאלו אלטו נטוורקס) זיהה כ-200,000 פגיעויות פוטנציאליות בתשתיות כתבניות קוד.

 ראו גם
 דוקר
 תשתית IT
 תשתית כשירות
 תִזמוּר

 הערות שוליים

קטגוריה:מחשוב ענן
קטגוריה:הנדסת מערכות