אם אתה מתכנן לנהל ולעבוד עם Amazon Web Services (AWS), השימוש בספק Terraform של AWS הוא חובה. זה מאפשר לך להתקשר עם המקורות הרבים שתומכים בהם AWS, כגון Amazon S3, Elastic Beanstalk, Lambda, ועוד רבים.
במדריך האולטימטיבי הזה, אתה הולך ללמוד, שלב אחרי שלב, כמעט כל מה שאתה צריך לדעת על ספק AWS וכיצד להשתמש בספק הזה עם Terraform כדי לנהל את התשתיות שלך ב-Amazon.
בואו נעשה זאת!
נדרשות תנאים מראש
אם ברצונך לעקוב אחרי המדריך הזה, ודא שיש לך את הדברים הבאים:
- חשבון שירות אמזון ווב (AWS).
- משתמש IAM עם מזהה מפתח גישה ומפתח סודי המוגדרים במכונת המחשב המקומית שלך.
- Terraform v0.14.9 – הדגמים במדריך זה נעשים על Ubuntu 18.04.5 LTS, אך מערכות הפעלה אחרות עם Terraform יעבדו גם.
- A code editor – Even though you can use any text editor to work with Terraform configuration files, you should have one that understands the HCL Terraform language. Try out Visual Studio (VS) Code.
מהו ספק ה- Terraform AWS?
שֶׁפִּיקוּדֵי עֲנָנִים תִּתְבַּצַּע עַל יְדֵי Terraform באמצעות יַיבוּצִים עִם ס֤פְּקֵי הַעָנָן כָּגוֹן AWS, Google Cloud Platform (GCP) וְ Oracle. אֶחָד מִּסְפָּקֵי הָעָנָן הַנִּפְרָסִים בְּיוֹתֵר הוּא ספק הַ AWS. ספק זֶה פּוֹעֵל עִם כַּמָּה מִּקוֹרוֹת שֶׁנִּתְמַמְּשִׁים עַל יְדֵי AWS, כָּמוֹ Amazon S3, Elastic Beanstalk, Lambda, וְעוֹד רַבִּים אֲחֵרִים.
Terraform משתמש בספק ה AWS עם פְּרָטִים אָמוּן כְּדֵי לְהִתְחַבֵּר לְ Amazon וּלְנָהֵל או לְפַרְסֵם/לְעַדֵכֵן עֲשָׂרוֹת שֵׁרוּתֵי AWS.
ספק ה AWS נִכְתָּב בְּקוֹבֵּץ הַתְּצוּרָה שֶׁל Terraform וּכוֹלֵל פָּרָמֶטְרִים שׁוֹנִים כָּמוֹ גַּרסָה, כְּתוֹפֶף URL או אֵזוֹרֵי הָעָנָן וְכוּ'.
הכרזת ספק ה AWS
כאשר יש צורך להתייחס לשם של ספק, עליך להגדיר שם מקומי. השם המקומי הוא השם של הספק שמוקצה בתוך בלוק required_providers
. שמות מקומיים מוקצים כאשר נדרש ספק וחייבים להיות ייחודיים לכל מודול.
בעת הכרזה על required_providers
, עליך גם להכריז על פרמטר source
ב-Terraform 0.13 וגרסאות מאוחרות יותר. הפרמטר source
מגדיר את כתובת המקור ממנה תורד Terraform תוספים.
כתות המקור מורכבות משלושה חלקים, כך:
- שם המארח – שם המארח של רישון Terraform המפיץ את הספק. המארח המוגדר כברירת מחדל הוא registry.terraform.io.
- מרחב השמות – מרחב ארגוני שמות בתוך הרישון המסוים registry.
- סוג – סוג הוא שם קצר שאתה מספק עבור הפלטפורמה או המערכת שהספק ניהל וחייב להיות ייחודי.
למטה, ניתן לראות את תחביר ההכרזה של הפרמטר של מקור, כאשר שלושת חלקי כתובת המקור מופרדים באמצעות חותמות (/
).
כעת, התצורה של Terraform למטה מכריזה על שם ספק השירות הנדרש (aws
), יחד עם כתובת המקור, גרסת ספק השירות של AWS, ומגדירה את אזור השירות של ספק השירות (us-east-2
).
אימות חשבון AWS עם פרטי כניסה קשיחים
עכשיו שיש לך הבנה בסיסית על איך להכריז על ספק השירות של AWS, בוא נתעקב אחר איך לאמת חשבון AWS.
ניתן לאמת את ספק ה-AWS באמצעות מספר שיטות שונות, כגון הכרזת משתני סביבה ואחסון של פרטי הכניסה בפרופיל בשם. אך הדרך המהירה ביותר לאמת את חשבון ה-AWS היא על ידי הכנסת הפרטים בקוד שלך.
אם כמובן ידוע שהשימוש בפרטי הכניסה שמוקשים בקוד היא לא מומלץ מאחר והיא סופגת לחשיפה, עדיין ניתן להכניס את פרטי הכניסה בקוד ה-Terraform כדי לבדוק מהר משאבי AWS כלשהם. אבל תמשיך לקרוא ותלמד מאוחר יותר איך ניתן לאמת את חשבון ה-AWS באמצעות הגדרת משתני סביבה.
ההגדרה שלהלן מציינת שם מקומי (aws
) יחד עם אזור ספק (us-east-2
), כפי שמוצג למטה. ניתן לראות כי בלוק ספק ה-AWS מכיל גם הגדרת מפתח גישה ומפתח סודי לאימות חשבון AWS.
אבטחת פרטי הכניסה על ידי הכרזת משתני סביבה
למדת עתה שהכנסת פרטי כניסה סטטיים לאמת את שירותי הענן של AWS עם Terraform אפשרית. אך, הכנסת הפרטים בקוד היא לא בטוחה ומומלצת רק בזמן התקנתו בסביבת מבחן כדי לבדוק את הקוד במהירות.
שאלה: האם ישנה דרך נוספת לאבטח כתובות אימייל? כן, על ידי הגדרתן כ-סביבה משתנה, אין הגבלה למספרן של כתובות שניתן להגדיר. משתני סביבה הם משתנים שטויותיהם מוגדרות מחוץ לקובץ התצורה של טרהפורם ומורכבות מזוג שם/ערך.
הפעל את סדר הפקודות של export
למטה כדי לייצא כל משתנה סביבה. ייצוא משתני סביבה הופך אותם לזמינים לכל תוכנית או עד שטרהפורם מפעילה.
אחסון של מספר כתובות אימייל בפרופיל בשם
שני האפשרויות, הקידוד הקשה והגדרת משתני סביבה, מאפשרות אימות של חשבון AWS בכל פעם. אך מה לעשות כאשר יש צורך לאחסן מספר כתובות ולהשתמש בהן לפי הצורך? הפקידה של הכתובות בפרופיל בשם היא האפשרות האידיאלית.
הקוד למטה יוצר פרופיל בשם (Myprofile
) המכיל מפתח גישה ומפתח סודי.
המיקום המוגדר כברירת מחדל לפרופילים הוא $HOME/.aws/credentials/Myprofile ב-Linux ו- macOS או %USERPROFILE%\.aws\credentials\Myprofile ב-Windows. החלף את Myprofile בשם האמיתי של הפרופיל.
ברגע שיצרת פרופיל בשם ב־~/.aws/credentials, ניתן להשתמש בו בתצורת Terraform באמצעות המאפיין profile
. למטה, אתה מתייחס לפרופיל הנקרא הפרופיל שלי
.
הכרזה על תפקיד ההנחה בספק AWS
למדת עכשיו כיצד להגדיר ספק AWS על ידי הכרזה על פרטי גישה קשוחים לפני הרצת Terraform. אולם, אולי תרצה להגיד את פרטי הגישה בזמן הרצה. אם כן, ממשק ה־AssumeRole הוא מה שאתה צריך. AssumeRole מספק פרטי גישה זמניים הכוללים מזהה מפתח גישה, מפתח גישה חשאית ו־אסימון אבטחה. פרטי הגישה האלה מאפשרים לך להתחבר ל־AWS.
הקוד למטה מכריז על ה־provider
בשם aws
ועל assume_role
המכיל שם תפקיד ושם סשן. כדי להגדיר גישה ל־AssumeRole, עליך להגדיר תפקיד IAM שמפרט את ההרשאות שהוא מעניק ואילו ישויות יכולות להניח אותו.
הכרזה על מספקים מרובים של AWS
עד כה, למדת כיצד להכריז ולהגדיר ספק AWS ב־Terraform שעובד עם אזור יחיד. אבל מה קורה אם תרצה לנהל את התשתיות שלך או שירותי AWS במספר אזורים ענן? במקרה כזה, תצטרך להכריז על המילת מפתח alias
.
המילת מפתח alias מאפשרת להגדיר תצורות מרובות עבור אותו ספק ולבחור איזו אחת להשתמש בה בסיס של משאב או מודול ייחודי או לתמוך במספר אזורים.
הקוד למטה מכריז על ספק AWS המוגדר כברירת מחדל בשם aws
עם ה־region
המוגדר כ־us-east-2
. ואז מכריז על ספק AWS נוסף עם אותו שם, אך עם alias
מוגדר בשם west
ו־region
המוגדר כ־us-west-2
.
הכרזה על כינוי
מאפשרת לך ליצור משאבים באופן ברירת מחדל באזור us-east-2
או באזור us-west-2
אם תבחר בספק aws.west
בהתאם לדרישות.
התאמת תצורת נקודת קצה של ספק ה-AWS
התאמת תצורת נקודת הקצה היא שימושית כאשר חוברים לנקודות קצה של שירותי AWS ברירת המחדל, כמו AWS Snowball או בביצוע בדיקות מקומיות.
הגדר את ספק ה- AWS של Terraform כך שישתמש בנקודות קצה מותאמות אישית. עשה זאת על ידי הכרזה על בלוק התצורה של endpoints
בתוך בלוק הספק, כפי שמוצג למטה.
התצורה שלמטה מאפשרת לך לגשת לשירות AWS S3 בעזרת פורט מקומי 4572
כאילו אתה באמת גושב על השירות AWS S3 בחשבון AWS. באופן דומה, ההגדרה מאפשרת לך לגשת dynamodb
באופן מקומי על פורט 4569
. DynamoDB הוא שירות מסד נתונים NoSQL שמספק ביצועים מהירים עם סקלביליות ללא בעיות.
בדוק את רשימת הנקודות הקצה המותאמות אישית
הוספת תגיות
קודם, למדת כיצד מוכר ספק AWS עם הגדרות כגון אזור, מיקום מקור, וכו '. אך כדי לנהל את המשאבים שלך בצורה טובה יותר, עליך להוסיף תגיות ברמת הספק.
שלטים הם תווי תיווך המורכבים ממפתחות וערכים שמוגדרים על ידי המשתמש. השלטים שימושיים כאשר יש צורך לבדוק חיוב, בעלות, אוטומציה, בקרת גישה ועוד, בחשבון של AWS.
במקום להוסיף שלטים לכל משאב בנפרד, בואו נלמד איך להוסיף שלטים לכל המשאבים ברמת ספק השירות, דבר שיכול לחסוך הרבה קוד וזמן.
הקוד למטה מגדיר ספק שירות AWS עם שלטים המוגדרים בתוך default_tags
. היתרון שבהוספת שלטים בתוך הספק הוא שהשלטים המסוימים יתווספו אוטומטית בזמן יצירת משאב כלשהו עם ספק זה.
התעלמות משלטים
הפעלת שלטים ברמת ספק עוזרת להפיק שלטים בכל תחום. אך לפעמים יש צורך להתעלם מהשלטים, לדוגמה, אם אין לך רצון להוסיף שלט ברירת מחדל למקרה המיוחד של מקרים כמו מקרה של מקרי EC2 ולמקרים השותפים לחשבון של AWS. בואו נתרץ זאת!
הקוד למטה מגדיר ספק שירות AWS עם התעלמות משלטים המוגדרת בתוך הספק. היתרון בשימוש בתג ההתעלמות הוא שאפשר להתעלם משלטים ברירת מחדל למשאבים מסוימים ולהחיל אותם על שאר המשאבים.
בקוד למטה, כאשר אתה יוצר כל משאב באמצעות ספק השירות aws
, כל המשאבים יתעלמו מהתגיות LastScanned
ו- kubernetes.io
.
יצירת Bucket של AWS S3
עד כה, למדת כל מה שיש לדעת על איך להכריז ולהגדיר ספקי שירות של AWS באופן מעמיק. אך רק הכרזה על ספק השירות של AWS לא עושה כלום עד שתנהל משאבי AWS כמו ביצוע סל S3 של AWS או מחיקת מופע Ec2 וכו '. אז, בוא נלמד איך ליצור סל S3 של AWS!
1. יצרו תיקייה בשם ~/terraform-s3-demo, ואז שנו את תיקיית העבודה (cd
) אל התיקייה הזו. התיקייה ~/terraform-s3-demo תכיל את קובץ התצורה שלך ואת כל הקבצים המקושרים שטרמפורמה ייצור.
2. העתיקו והדביקו את התצורה למטה בעורך הקוד האהוב עליכם ושמרו אותו כ- main.tf בתיקיית ~/terraform-s3-demo.
קובץ main.tf יוצר מספר משאבים דרושים:
- דרישת ספק: דרישת ספק כוללת שם מקומי, מיקום מקור והגבלת גרסה.
- מפתח ההצפנה: מפתח ההצפנה של Amazon S3 עוזר לדלי ה-S3 כך שכל האובייקטים החדשים מוצפנים בעת האחסון בדלי. מפתחי ההצפנה נוצרים באמצעות
aws_kms_key
ב-Terraform. - הגדרת ספק AWS: הכרזה על שם ספק (
aws
) יחד עם האזורus-east-2
. - דלי: מודול Terraform זה יוצר דלי בשם
terraformdemobucket
. Terraform לא יכולה להשמיד את הדלי הזה מאחר והוא מכיל דגלforce_destroy
.
גרסאות: גרסאות ב-Amazon S3 משמעו שמירה על מספר גרסאות של אובייקט באותו הדלי
3. כעת, הרץ את הפקודות למטה כדי לנווט לתיקייה ~\\terraform-s3-demo
ולהתחיל את Terraform. Terraform מאתחל את התוספים והספקים הנדרשים לעבוד עם משאבים.
טרהפורם בדרך כלל משתמשת בשיטת שלוש פקודות בסדר סדרתי terraform init, terraform plan, ו־terraform apply.
יצירת מקרוויים EC2 של AWS ומשתמשי IAM
בקטע הקודם, למדת כיצד ליצור עצם יחיד (דלי AWS S3) באמצעות Terraform עם ספק AWS. אך למעשה, ניתן ליצור מספר אובייקטים רבים מאותו סוג באמצעות Terraform עם ספק AWS.
1. צור תיקייה בשם ~/terraform-ec2-iam-demo, ואז נווט אליה
פתח את העורך שלך המועדף, העתק/הדבק את התצורה למטה, ושמור את הקובץ כ-main.tf בתיקייה ~/terraform-ec2-iam-demo.
הקוד למטה יוצר שני מקרים של EC2, ec21a
ו-ec21a
, עם סוגי t2.micro
ו-t2.medium
סוגי מקרים, ואז יוצר משתמשי IAM עם ארבעה שמות שונים. ה-ami
שמצויין בקוד הוא Amazon Machine Image (AMI), שמספק את המידע הנדרש להפעלת מקרים, כגון סוג המערכת הפעלה, אילו תוכנות להתקין, וכו'.
באפשרותך למצוא AMIs של Linux באמצעות עצמך באמצעות קונסולת Amazon EC2.
3. לאחר מכן, צרו קובץ נוסף, העתיקו/הדביקו את הקוד למטה, ושמרו את הקובץ בשם vars.tf בתיקייה ~/terraform-ec2-iam-demo.
הקוד למטה מכריז על כל המשתנים, שנכתבים בקובץ main.tf. לאחר הרצת הקוד של טרהפורם, המשתנה tag_ec2
עם הערכים ec21a
ו-ec21b
מוקצים לשני ה-MC2 שהוגדרו בקובץ main.tf.
4. צרו קובץ תצורת טרהפורם נוסף בשם output.tf בתיקייה ~/terraform-ec2-iam-demo, ואז העתיקו/הדביקו את הקוד למטה לקובץ output.tf.
לאחר ביצוע הפקודה terraform apply בהצלחה, עליכם לראות את ערכי ${aws_instance.my-machine.*.id}
ו-${aws_iam_user.accounts.*.name}
בסוף פלט הפקודה.
הקוד למטה מספר לטרהפורם להתייחס למשאבי aws_instance
ו-aws_iam_user
שהוגדרו בקובץ התצורה main.tf.
5. צור קובץ תצורה נוסף בתיקיית ~/terraform-ec2-iam-demo בשם provider.tf, והדבק את הקוד למטה לתוך קובץ provider.tf. ה- provider.tf למטה מגדיר את ספק ה-Terraform של AWS כך ש-Terraform יודע כיצד להתקשר עם כל המשאבים של AWS שהגדרת בשלבים הקודמים.
6. עכשיו, ודא שכל הקבצים הנדרשים להלן מוכלים בתיקיית ~/terraform-ec2-iam-demo על ידי הרצת הפקודה tree
.

7. הפעל את הפקודות למטה בסדר רצוף כדי לאתחל את Terraform וליצור מקרנים של AWS EC2 ומשתמשי IAM.

לבסוף, נווט אל לוח הניהול של AWS, ואז עבור לשירותי EC2 של AWS וללוח IAM.
בתמונות הבאות, תוכל לוודא שהמקרנים של EC2 והמשתמשים של IAM קיימים.


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