✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

תשתית כקוד בענן של אורקל

IsraelClouds
|
קלה
|
Aug 6, 2018
alt="facebook"alt="linkedin"
להרשמה לניוזלטר

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

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

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

● האפשרות לתכנן ולהפוך כל תשתית ה"ענן שלי" בצורה אוטומטית אשר כוללת תהליך ה- Deployment בצורה מהירה ואמינה יותר לעומת התהליך הידני

● להציג את מצב "הסביבה שלי" בצורה ברורה כאשר הקוד כתוב ומתועד בקובץ אחד וזאת במקום להיכנס למוחו של איש הסיסטם בארגון

● שמירת הקוד במערכת ניהול גרסאות כמו GIT, משמע שמירת היסטוריית השינויים במערכת באמצעות commit logs אשר עוזרת לעקוב ולעשות debugging לבעיות אם וכאשר יש צורך לעשות Rollback

● היכולת לעבור על הקוד לפני כל שינוי משמעותי עוד בשלבי הסביבה והוצאתו אל הפועל

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

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

היכרות עם Terraform

לאחר שדיברנו על העקרונות העומדים מאחורי גישת Infrastructure as Code, נציג כלי אוטומציה בשם 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 הוא ספציפי לענן ומותאם לניהול ומינוף תשתיות הסביבה.

Procedural vs Declarative

Chef ו- Ansible מעודדים לכתוב את הקוד בצורה פרוצדורלית (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 and Oracle Bare Metal Cloud Services

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

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

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

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

• דוגמאות ל- Terraform באמצעות ה-  Oracle Bare Metal Cloud ניתן למצוא כאן ב- GitHub.

• לינק ל- GitHub הרשמי של אורקל Docker -  אשר מציע שלל פתרונות ופרויקטים מעניינים באמצעות קונטיינרים בענן.

מקורות מידע נוספים:

The Terraform Book

● דוקומנטציה מלאה מבית היוצר HashiCorp נמצא כאן

מאמר מצוין בבלוג של Scott's Weblog היכרות ראשונה עם Terraform

מאת: אבישי סבן, ארכיטקט ענן, אורקל

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

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

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

● האפשרות לתכנן ולהפוך כל תשתית ה"ענן שלי" בצורה אוטומטית אשר כוללת תהליך ה- Deployment בצורה מהירה ואמינה יותר לעומת התהליך הידני

● להציג את מצב "הסביבה שלי" בצורה ברורה כאשר הקוד כתוב ומתועד בקובץ אחד וזאת במקום להיכנס למוחו של איש הסיסטם בארגון

● שמירת הקוד במערכת ניהול גרסאות כמו GIT, משמע שמירת היסטוריית השינויים במערכת באמצעות commit logs אשר עוזרת לעקוב ולעשות debugging לבעיות אם וכאשר יש צורך לעשות Rollback

● היכולת לעבור על הקוד לפני כל שינוי משמעותי עוד בשלבי הסביבה והוצאתו אל הפועל

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

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

היכרות עם Terraform

לאחר שדיברנו על העקרונות העומדים מאחורי גישת Infrastructure as Code, נציג כלי אוטומציה בשם 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 הוא ספציפי לענן ומותאם לניהול ומינוף תשתיות הסביבה.

Procedural vs Declarative

Chef ו- Ansible מעודדים לכתוב את הקוד בצורה פרוצדורלית (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 and Oracle Bare Metal Cloud Services

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

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

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

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

• דוגמאות ל- Terraform באמצעות ה-  Oracle Bare Metal Cloud ניתן למצוא כאן ב- GitHub.

• לינק ל- GitHub הרשמי של אורקל Docker -  אשר מציע שלל פתרונות ופרויקטים מעניינים באמצעות קונטיינרים בענן.

מקורות מידע נוספים:

The Terraform Book

● דוקומנטציה מלאה מבית היוצר HashiCorp נמצא כאן

מאמר מצוין בבלוג של Scott's Weblog היכרות ראשונה עם Terraform

מאת: אבישי סבן, ארכיטקט ענן, אורקל

IsraelClouds
IsraelClouds
בואו נעבוד ביחד
צרו קשר