תשתית כקוד
תשתית כקוד (IaC) היא תהליך של ניהול והקצאת משאבי מרכז נתונים של מחשבים באמצעות קובצי הגדרות קריאים על ידי מכונה, ולא באמצעות תצורת חומרה פיזית או כלי תצורה אינטראקטיביים.[1] תשתית ה-IT המנוהלת על ידי תהליך זה כוללת הן ציוד פיזי, כגון שרתי Bare Metal, והן מכונות וירטואליות, ומשאבי תצורה נלווים. ההגדרות עשויות להיות במערכת בקרת גרסאות, במקום לתחזק את הקוד באמצעות תהליכים ידניים. הקוד בקובצי ההגדרות עשוי להשתמש בסקריפטים או בהגדרות הצהרתיות, אך IaC משתמש לעיתים קרובות יותר בגישות הצהרתיות.
סקירה כללית
תחום ה-IaC צמח כתגובה לקושי שהציבו מחשוב שירותים ומסגרות אינטרנט מהדור השני. בשנת 2006, השקת Elastic Compute Cloud של Amazon Web Services וגרסת 1.0 של Ruby on Rails חודשים ספורים קודם לכן[2] יצרו קשיי קנה מידה נרחבים בארגון, אשר בעבר חוו רק בחברות גדולות ורב-לאומיות. עם כלים חדשים שקמים לטיפול בתחום הצומח הזה, נולד רעיון ה-IaC. המחשבה על מידול תשתיות באמצעות קוד, ולאחר מכן היכולת לתכנן, ליישם ולפרוס תשתית יישומים עם שיטות עבודה מומלצות ידועות של תוכנה, קסמה הן למפתחי תוכנה והן למנהלי תשתיות IT. היכולת להתייחס לתשתית כקוד ולהשתמש באותם כלים כמו בכל פרויקט תוכנה אחר תאפשר למפתחים לפרוס יישומים במהירות.[3]
יתרונות
ניתן לחלק את הערך של IaC לשלוש קטגוריות מדידות: עלות, מהירות וסיכון. [ 17 ]
הפחתת עלויות שואפת לסייע לא רק לארגון מבחינה כלכלית, אלא גם מבחינת כוח אדם ומאמץ, כלומר על ידי הסרת הרכיב הידני, אנשים יכולים למקד מחדש את מאמציהם במשימות ארגוניות אחרות. [ 17 ] אוטומציה של תשתיות באמצעות קוד חוסכת זמן מאשר יצירת התשתיות בצורה ידנית. אוטומציה מסירה את הסיכון הכרוך בטעויות אנוש, כמו תצורה שגויה ידנית; הסרת הסיכון הזו יכולה להפחית את זמן ההשבתה ולהגביר את האמינות. תוצאות ותכונות אלו עוזרות לארגון להתקדם לקראת יישום תרבות של DevOps, עבודה משולבת של פיתוח ותפעול.[4]
סוגי גישות
ישנן בדרך כלל שתי גישות ל-IaC: הצהרתית (פונקציונלית) לעומת אימפרטיבי (פקודתי). ההבדל בין הגישה הצהרתית לגישה האימפרטיבי הוא בעיקרו של דבר מה לעומת איך. הגישה הצהרתית מתמקדת במה צריכה להיות תצורת היעד הסופית. האימפרטיבי מתמקד באופן שבו יש לשנות את התשתית כדי לעמוד בכך.[5] הגישה הצהרתית מגדירה את המצב הרצוי והמערכת מבצעת את מה שצריך לקרות כדי להשיג את המצב הרצוי. אימפרטיבי מגדיר פקודות ספציפיות שיש לבצע בסדר המתאים כדי להגיע למסקנה הרצויה.[6]
שיטות
תשתית כקוד (IaC) מאפשרת לנהל שרתים ואת התצורות שלהם באמצעות קוד. ישנן שתי דרכים לשלוח תצורות אלו לשרתים: שיטות ' push ' ו-' pull '. בשיטת 'push', המערכת השולטת בתצורה שולחת הוראות ישירות לשרת. בשיטת 'pull', השרת שולף את ההוראות שלו ממערכת הבקרה.[7]
כלים
ישנם כלים רבים הממלאים יכולות אוטומציה של תשתיות ומשתמשים ב-IaC. באופן כללי, כל framework או כלי שמבצע שינויים או מגדיר תשתית באופן הצהרתי או אימפרטיבי על ידי גישה תכנותית יכולים להיחשב IaC.[8] באופן מסורתי, כלי אוטומציה של שרתים וניהול תצורה שימשו להשגת IaC. כיום ארגונים משתמשים גם בכלי אוטומציה של תצורה רציפה או בכלי IaC עצמאים, כגון PowerShell DSC של מיקרוסופט[9] או AWS CloudFormation.[10]
תוכן קהילתי
תוכן קהילתי הוא גורם מפתח לאיכות כלי CCA בקוד פתוח. כפי שגרטנר מציינת, ערכם של כלי CCA "תלוי בתוכן ובתמיכה של קהילת המשתמשים, בדיוק כפי שהוא תלוי בבשלות המסחרית ובביצועים של כלי האוטומציה". ספקים מבוססים כמו Puppet ו־Chef יצרו קהילות משלהם. ל-Chef יש את Chef Community Repository ול-Puppet יש את PuppetForge.[11] ספקים אחרים מסתמכים על קהילות אחרות וממנפים מסגרות 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. המפתחים נהיים מעורבים יותר בהגדרת התצורה וצוותי תפעול מעורבים מוקדם יותר בתהליך הפיתוח.[12] כלים המשתמשים ב-IaC מביאים נראות למצב ולתצורת השרתים ובסופו של דבר מספקים את הנראות למשתמשים בתוך הארגון, במטרה לייעל את העבודה.[13] אוטומציה באופן כללי שואפת לקחת את הבלבול וההיבט המועד לשגיאות של תהליכים ידניים ולהפוך אותם ליעילים ופרודוקטיביים יותר. זה מאפשר יצירת תוכנה ויישומים טובים יותר עם גמישות, פחות זמן השבתה וצורת עבודה יעילה כוללת עבור החברה. IaC נועד להפחית את המורכבות שהורגת את היעילות של תצורה ידנית. אוטומציה ושיתוף פעולה נחשבים לנקודות מרכזיות ב-DevOps; כלי אוטומציה של תשתיות כלולים לעיתים קרובות כרכיבים בשרשרת כלים של DevOps.[14]
הקשר לאבטחה
דוח איומי הענן לשנת 2020 שפורסם על ידי יחידה 42 (יחידת מודיעין האיומים של ספקית אבטחת הסייבר פאלו אלטו נטוורקס)[15] זיהה כ-200,000 פגיעויות פוטנציאליות בתשתיות כתבניות קוד.[14]
ראו גם
- דוקר
- תשתית IT
- תשתית כשירות
- תִזמוּר
הערות שוליים
- ↑ Wittig, Andreas; Wittig, Michael (2016). Amazon Web Services in Action. Manning Press. p. 93. ISBN 978-1-61729-288-0.
- ↑ Bower, Joseph L.; Christensen, Clayton M. "Disruptive Technologies: Catching the Wave". Harvard Business Review.
- ↑ Fletcher, Colin; Cosgrove, Terrence (26 August 2015). Innovation Insight for Continuous Configuration Automation Tools. Gartner (Report).
- ↑ Riley, Chris (12 November 2015). "Version Your Infrastructure". DevOps.com.
- ↑ 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
- ↑ Loschwitz, Martin (14 November 2014). "Choosing between the leading open source configuration managers". Admin Network & Security. Lawrence, KS USA: Linux New Media USA LLC
- ↑ Venezia, Paul (21 November 2013). "Puppet vs. Chef vs. Ansible vs. Salt". Network World (אנ'). Network World. Retrieved 14 December 2015.
- ↑ Garner Market Trends: DevOps – Not a Market, but Tool-Centric Philosophy That supports a Continuous Delivery Value Chain (Report). Gartner. 18 February 2015.
- ↑ Chaganti, Ravikanth (5 January 2016). "DevOps, Infrastructure as Code, and PowerShell DSC: The Introduction". PowerShell Magazine. PowerShell Magazine. Retrieved 11 January 2016
- ↑ "Introducing AWS CloudFormation"
- ↑ Sturgeon, Phil (28 October 2012). "Puppet or Chef?". Archived from the original on 1 February 2016. Retrieved 29 January 2016.
- ↑ Ramos, Martin (4 בנובמבר 2015). "Continuous Integration: Infrastructure as Code in DevOps". easydynamics.com. אורכב מ-המקור ב-6 בפברואר 2016. נבדק ב-29 בינואר 2016.
{{cite web}}
: (עזרה) - ^ 14.0 14.1 Wurster, Laurie F.; Colville, Ronni J.; Height, Cameron; Tripathi, Somendra; Rastogi, Aditi. Emerging Technology Analysis: DevOps a Culture Shift, Not a Technology (Report). Gartner.
- ↑ Joao-Pierre S. Ruth, Cloud Threat Report Shows Need for Consistent DevSecOps, https://www.informationweek.com/, February 13, 2020
תשתית כקוד41715937Q24964334