Avishay Saban
Cloud Solutions Architect
עידן הברזל מול עידן הענן, תשתית כקוד בעידן החדש

במאמר זה אסביר את הרעיון מאחורי תשתית כקוד (Infrastructure As Code) ואת השימוש ב Terraform ככלי מרכזי להבדיל מכלי אורקסטרציה הנפוצים Ansible/Chef/Puppet. הכלי שנדבר עליו היום Terraform מהווה יתרון עצום למינוף היכולות המודרניות של תשתיות הענן לטובת יישומים עצמאיים שרוכבים על תשתיות חכמות, למי שזה נשמע קצת כמו סינית – הנה מעט יותר מידע מקדים.

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

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

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

החדשות הטובות הן שהחדשנות לא עוצרת הודות למהפכת ה DevOps והגישה החדשה. היכולת  לאמץ  את גישת "תשתית כקוד" Infrastructure-as-Code  אשר מביאה עמה כללי אצבע, עקרונות ושיטות התנהגות בעולם החדש. שינוי מאוד חשוב בדרך שבה אנו מגדרים ובונים תשתיות חומרה וירטואליות, אשר בא לפשט ולהקל על פרסית התשתית בצורה חדשנית.

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

  • האפשרות לתכנן ולהפוך כל תשתית ה"ענן שלי" בצורה אוטומטית אשר כוללת תהליך ה-Deployment בצורה מהירה ואמינה יותר לעומת התהליך הידני.
  • להציג את מצב "הסביבה שלי" בצורה ברורה כאשר הקוד כתוב ומתועד בקובץ אחד וזאת במקום להיכנס למוחו של איש הסיסטם בארגון.
  • שמירת הקוד במערכת ניהול גרסאות כמו GIT, משמע שמירת היסטוריית השינויים במערכת באמצעות commit logs אשר עוזרת לעקוב ולעשות debugging לבעיות אם וכאשר יש צורך לעשות Rollback .
  • היכולת לעבור על הקוד לפני כל שינוי משמעותי עוד בשלבי הסביבה והוצאתו אל הפועל.
  • Refactoring – שימוש חוזר והיכולת לתעד את הסביבה. כמו כן, הפשטות להעתיק סביבות קיימות והקלות למנף ולהתרחב בתשתית הענן שלי מול ספקית הענן.

IAC – נותן אלטרנטיבה טובה אשר מאפשרות למכונות לעשות את מה שהם יודעים הכי טוב (אוטומציה) ולמפתחים לעשות מה שהם יודעים הכי טוב (פיתוח).

תכירו נעים מאוד, Terraform.

אחרי שדיברנו על הרעיון העומד מאחורי Infrastructure as code, אציג בפניכם כלי שנקרא Terraform.

ובכן Terraform הוא כלי שנועד לספק כמה מטרות:

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

ישנם מספר דרכים ליצור אוטומציה בקוד החל מ- Shell script עד לכלי אוטומציה כמו Chef/Puppet/Ansible ושאר ירקות. לTerraform ישנו לא מעט יתרונות, כדלקמן:

  • Orchestration vs Configuration Management

ובכן יתרונותיו של Terraform ביחס לאחרים הוא יותר Orchestration מאשר Configuration management כלים כמו Chef/Puppet/Ansible ואחרים, אלה נועדו להתקין תוכנות ולנהל אותם על השרת המותקן המרוחק.

כלי כמו Terraform נועד ליצור אובייקטים תשתיתיים בענן כמו Compute instance, Load balancer DNS, Storage. כמו כן, כלי זה השאיר את יתר ההגדרות לכלים אחרים.

חשוב לציין שהכלים Chef/Puppet/Ansible יכולים ליצור את מה ש- Terraform יכול. אך הפוקוס של Terraform הוא Dedicated בענן לניהול ומינוף של תשתיות הסביבה.

  • Procedural vs Declarative

Chef ו Ansible Puppet מעודדים לכתוב את הקוד בצורה פרוצדורלית (step-by-step) אשר מחולקת לתכניות רבות (פונקציות) שבה פרוצדורה אחת יכולה לקרוא לאחרת על מנת לבצע פעולה שבה היא מתמחה.

עם Terraform הקוד מתבצע בצורת דקלרטיבית (הצהרתי) משמע כתיבת הקוד כתובה באמצעות תיאור לוגיקה מבלי להגדיר את בקרת הזרימה שלה. (דגש על מה הקוד מבצע ולא על איך).

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

ה-Terraform במקרה הנ"ל אחראי לבצע את כל הלוגיקה מאחורי הקלעים מול הAPI של תשתית הענן, ברגע שהקוד רץ כל שינוי בלוגיקת הקוד יתאים את עצמו למצב החדש שנוצר ללא תלות, זאת אומרת רק החלקים שישתנו ולא כל הקוד עצמו.

  • Client/Server Architecture vs Client-Only Architecture

Chef, Puppet ואחרים עובדים בשיטת לקוח\שרת by default. הלקוח אשר משתמש ב- Web UI או CLI Tool נשמרות כState ונשלחות אל השרת. בניגוד לAnsible  וTerraform שעובדים בשיטת לקוח בלבד, Ansible עובד בחיבור ישיר דרך SSH. וTerrafrom עובד באמצעות הAPI של הCloud provider כדי ליצור תשתית סביבה ואין כל מכניזם של אימות מעבר למה שאנו עושים בסביבת הענן ולא חיבור ישיר עם השרת.  עם כך אני מוצא זאת כאפשרות הטובה ביותר במונחים של קלות שימוש, אבטחה, ותחזוקה.

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

  • The Terraform Book
  • דוקומנטציה מלאה מבית היוצר HashiCorp נמצא כאן
  • מאמר מצוין בבלוג של Scott's Weblog היכרות ראשונה עם Terraform.

Terraform and Oracle Bare Metal Cloud Services

שילוב של ניהול ה Bare Metal מול Terraform טוב מדי מכדי להיות אמיתי.

לקוחות הענן של אורקל מקבלים ניהול מלא לסביבת האנטרפרייז. אנשי הפיתוח וגם אנשי האופרציה יכולים לנצל את יתרונותיו של משאב ה Bare Metal  בסביבתם לבדיקות כמו Regression test  ו- Smoke test אשר מצריכות כוח Power Lifting.

Kubernetes ו Terraform בענן של אורקל

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

כיום יש מספר אלטרנטיבטת להקמת סביבה מלאה לK8s כלים כמו KubeSpray  וKOPS אורקל מציעה לעשות ספין אפ עםTerraform  בצורה פשוטה מאוד.

פרטים על מימוש Kubernetes  באמצעות Terraform ניתן למצוא כאן בGitHub

דוגמאות להקמת Oracle compute עם Terraform באמצעות ה Oracle Bare Metal Cloud ניתן למצוא כאן בGitHub הרשמי של אורקל, כמו כן לינק GitHub הרשמי של אורקל עםDocker  אשר מציע שלל פתרונות ופרויקטים מעניינים באמצעות Containers בענן.

לסיום במאמר זה הסברתי לכם את הרעיון מאחורי תשתית כקוד, כלי אוטומציה פופולרים כמו Ansible/Chef/Puppet ועוד אחרים, מהווים כלי מרכזי מאוד חשוב בתהלכי הCI/CD.

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

בואו לקחת לחלק בקהילה.

הענן הציבורי של אורקל ו-Terraform מציעים תמיכה מלאה בידי אורקל וגם HashiCorp.

שאלות בנושא ובעיות בנושא של ענן הציבורי OPC תוכלו היכנס ישירות מכאן.

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

רוצים לשמוע עוד? דברו איתי, עד לפעם הבאה.

avishay.saban@oracle.com

Share on FacebookShare on LinkedInTweet about this on Twitter
עידן הברזל מול עידן הענן, תשתית כקוד בעידן החדש Reviewed by on . במאמר זה אסביר את הרעיון מאחורי תשתית כקוד (Infrastructure As Code) ואת השימוש ב Terraform ככלי מרכזי להבדיל מכלי אורקסטרציה הנפוצים Ansible/Chef/Puppet. הכלי ש במאמר זה אסביר את הרעיון מאחורי תשתית כקוד (Infrastructure As Code) ואת השימוש ב Terraform ככלי מרכזי להבדיל מכלי אורקסטרציה הנפוצים Ansible/Chef/Puppet. הכלי ש Rating: 0

הגיבו באמצעות פייסבוק

scroll to top
%d בלוגרים אהבו את זה: