בניית VPC של AWS באמצעות Terraform בשלבים

אם תרצה להגדיר את Amazon Virtual Private Cloud (VPC), תוכל לעשות זאת דרך ממשק הניהול של AWS אך אוטומציה זה הרבה יותר כיף! בסצנריו של פיתוח-תפעול (DevOps), בניית שירותי AWS דרך כלים כמו Terraform היא גישה יותר קצבית ואוטומטית לספק משאבים של ענן.

במדריך זה, תלמד כיצד לבנות ולהפעיל תצורת Terraform כדי לבנות VPC דרך Terraform מההתחלה!

דרישות מראש

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

  • חשבון AWS
  • Terraform – המדריך הזה ישתמש ב-Terraform גרסה 0.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.

הבנת VPCs ב-AWS

הענן של AWS מכיל דיוזינים של שירותים שונים החל מחישוב, אחסון, רשת, ועוד. כל אחד מהשירותים הללו יכול לתקשר עם השירותים האחרים בדיוק כמו במרכז נתונים באתר. אך, כל אחד מהשירותים הללו הוא תלוי בעצמו, והם לא בהכרח מבודדים משאר השירותים. ה־VPC של AWS משנה את זה.

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

AWS VPC architecture

ה־VPC של AWS מוגבלים לפי אזור. אין אפשרות להחזיק VPC אחת המתרפסת על כמה אזורים, עם עד חמישה VPC נתמכים לאזור.

בניית תצורת Terraform עבור VPC של AWS

די מדברים, בואו נתחיל לבנות!

1. להתחיל, צרו תיקייה לאחסון קבצי התצורה שלכם ב־Terraform. במדריך זה תצרו תיקייה בשם terraform-vpc-demo בתיקיית הבית שלכם.

mkdir ~/terraform-vpc-demo
 cd ~/terraform-vpc-demo

2. פתחו את העורך הקוד האהוב עליכם והעתיקו/הדביקו את התצורה הבאה שכבר נוצרה עבורכם, שמורים את הקובץ כ־main.tf בתוך התיקייה ~/terraform-vpc-demo. מידע על כל משאב ליצירה מופיע בקווים ביניהם.

הקובץ main.tf מכיל את כל המשאבים שנדרשים להעברה.

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

הגדרת הטרהפורם למטה:

  • יוצרת VPC
  • יוצרת שער אינטרנט ומצרפת אותו ל־VPC כדי לאפשר תעבורה בתוך ה־VPC להיות נגישה מהעולם החיצוני.
  • יוצרת תת־רשתות ציבוריות ופרטיות

תת־רשתות הן רשתות בתוך רשתות. הן מיועדות לעזור לתעבורת הרשת להיות יעילה יותר ולספק 'חתיכות' קטנות יותר וניתנות לניהול של כתובות IP

  • יוצרת טבלת נתיב עבור התת־רשתות הציבוריות והפרטיות ומשייכת את הטבלה לשתי התת־רשתות
  • יוצרת שער NAT כדי לאפשר לתת־רשתות פרטיות להתחבר לאינטרנט ללא צורך בכתובת IP ניתנת לניתוב מחוץ.
Create the VPC
 resource "aws_vpc" "Main" {                # יצירת VPC כאן
   cidr_block       = var.main_vpc_cidr     # הגדרת קטע ה- CIDR שישמש לדוגמה 10.0.0.0/24
   instance_tenancy = "default"
 }
 Create Internet Gateway and attach it to VPC
 resource "aws_internet_gateway" "IGW" {    # יצירת Internet Gateway
    vpc_id =  aws_vpc.Main.id               # ה- vpc_id ייווצר לאחר שניצור את ה-VPC
 }
 Create a Public Subnets.
 resource "aws_subnet" "publicsubnets" {    # יצירת Subnets ציבוריים
   vpc_id =  aws_vpc.Main.id
   cidr_block = "${var.public_subnets}"        # קטע ה- CIDR של ה-Subnets הציבוריים
 }
 Create a Private Subnet                   # יצירת Subnets פרטיים
 resource "aws_subnet" "privatesubnets" {
   vpc_id =  aws_vpc.Main.id
   cidr_block = "${var.private_subnets}"          # קטע ה- CIDR של ה-Subnets הפרטיים
 }
 Route table for Public Subnet's
 resource "aws_route_table" "PublicRT" {    # יצירת RT עבור Subnet ציבורי
    vpc_id =  aws_vpc.Main.id
         route {
    cidr_block = "0.0.0.0/0"               # תנועה מ- Subnet ציבורי מגיעה לאינטרנט דרך Internet Gateway
    gateway_id = aws_internet_gateway.IGW.id
     }
 }
 Route table for Private Subnet's
 resource "aws_route_table" "PrivateRT" {    # יצירת RT עבור Subnet פרטי
   vpc_id = aws_vpc.Main.id
   route {
   cidr_block = "0.0.0.0/0"             # תנועה מ- Subnet פרטי מגיעה לאינטרנט דרך NAT Gateway
   nat_gateway_id = aws_nat_gateway.NATgw.id
   }
 }
 Route table Association with Public Subnet's
 resource "aws_route_table_association" "PublicRTassociation" {
    subnet_id = aws_subnet.publicsubnets.id
    route_table_id = aws_route_table.PublicRT.id
 }
 Route table Association with Private Subnet's
 resource "aws_route_table_association" "PrivateRTassociation" {
    subnet_id = aws_subnet.privatesubnets.id
    route_table_id = aws_route_table.PrivateRT.id
 }
 resource "aws_eip" "nateIP" {
   vpc   = true
 }
 Creating the NAT Gateway using subnet_id and allocation_id
 resource "aws_nat_gateway" "NATgw" {
   allocation_id = aws_eip.nateIP.id
   subnet_id = aws_subnet.publicsubnets.id
 }

3. כעת, צור קובץ נוסף בתוך התיקייה ~/terraform-vpc-demo, שם קרא לו vars.tf והדבק את התוכן הבא.

Vars.tf הוא קובץ משתנים של Terraform המכיל את כל המשתנים שהקובץ התצורה מתייחס אליהם.

ניתן לראות את ההתייחסויות למשתנים בקובץ ההגדרה באמצעות:

  • var.region
  • var.main_vpc_cidr
  • var.public_subnets
  • var.private_subnets
variable "region" {}
 variable "main_vpc_cidr" {}
 variable "public_subnets" {}
 variable "private_subnets" {}

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

4. צור קובץ נוסף בתוך התיקייה ~/terraform-vpc-demo, הדבק בו את הקוד הבא ושנה את שמו ל-provider.tf כדי להגדיר את ספק ה- AWS. המדר ייצור משאבים באזור us-east-2.

קובץ הספקים מגדיר ספקים כמו AWS, Oracle או Azure וכו ', כך ש-Terraform יכול להתחבר עם השירותים המעניינים בענן הנכון. provider "aws" { region = "us-east-2" }

provider "aws" {
   region = "us-east-2"
 }

5. לבסוף, צור קובץ נוסף בתוך התיקייה ~/terraform-vpc-demo, שנה את שמו ל-terraform.tfvars, והדבק את הקוד למטה. קובץ זה מכיל את הערכים ש-Terraform ישתמש כדי להחליף את ההתייחסויות למשתנים בתוך קובץ התצורה.

main_vpc_cidr = "10.0.0.0/24"
 public_subnets = "10.0.0.128/26"
 private_subnets = "10.0.0.192/26"

עכשיו, פתח את הטרמינל האהוב עליך (Bash במקרה זה) ווודא שכל הקבצים הדרושים מתחת לתיקייה על ידי הרצת פקודת tree.

tree terraform-vpc-demo  
Folder structure of terraform files

הפעלת Terraform ליצירת VPC של AWS

עכשיו שיש לך את קובץ התצורה של Terraform וקבצי המשתנים מוכנים, זמן להתחיל את Terraform וליצור את ה-VPC! כדי לספק, קובץ תצורה של Terraform בדרך כלל משתמש בשלבים שלושה terraform initterraform planterraform apply. בואו נעבור על כל שלב כעת.

1. פתח טרמינל ונווט לתיקייה ~\terraform-vpc-demo.

cd ~\terraform-vpc-demo

2. הפעל את הפקודה terraform init באותה תיקייה. הפקודה terraform init מאתחלת את התוספות והספקים שנדרשים לעבוד עם משאבים.

terraform init

אם הכל הולך כמו שצריך, אתה אמור לראות את ההודעה Terraform has been successfully initialized בפלט, כפי שמוצג למטה.

Terraform initialized successfully

3. כעת, הפעל את הפקודה terraform plan. זוהי פעולה אופציונלית, אך מומלצת לוודא שהתחברות התצורה שלך נכונה ונותנת לך סקירה על המשאבים שיתבצעו בתשתיות שלך. terraform plan

terraform plan

אם הצלחת, תראה הודעה דומה ל־Plan: "X" להוסיף, "Y" לשנות, או "Z" להשמיד בפלט כדי לציין שהפקודה הצליחה. תראה גם כל משאבי AWS שטררפורם מתכוון ליצור.

Plan command execution

4. לאחר מכן, ספר לטררפורם לבצע את ה- AWS VPC והמשאבים באמת באמצעות terraform apply. כאשר אתה מפעיל את terraform apply, טררפורם יקרא את התצורה (main.tf) ואת הקבצים האחרים כדי להידרדר לתצורה. לאחר מכן הוא ישלח את התצורה ההיא ל-AWS כהוראות לבניית ה-VPC והרכיבים האחרים.

terraform apply
Terraform apply command execution

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

הפקודה של טררפורם בוצעה בהצלחה, אז בוא נעבור לממשק הניהול של AWS כדי לוודא שה-VPC והרכיבים נוצרו בהצלחה.

אימות ה-VPC של AWS טררפורם

עד כה, כבר עשית את ה-VPC עם טררפורם. בוא נאמת באמצעות בדיקה ידנית של ה-VPC בממשק הניהול של AWS.

1. פתח את דפדפן האינטרנט המועדף עליך ונווט אל ממשק הניהול של AWS והתחבר.

2. בעוד אתה בממשק, לחץ על סרגל החיפוש בחלק העליון, חפש 'vpc', ולחץ על פריט התפריט VPC.

Navigating to the VPC service

3. כאשר בדף ה-VPC, לחץ על ה-VPC שלך. אתה צריך לראות את ה-VPC שנוצר עם אותו המזהה שחזר טררפורם לפני כן.

VPC created

4. מאז ש-Terraform יצרה לא רק את משאב ה-VPC אלא את כל המשאבים הנדרשים ל-VPC, אתה אז צריך למצוא כל משאב בעמוד זה גם.

Subnets created
Route tables created
Internet Gateway created
NAT Gateway created

עם כל הרכיבים שנוצרו בהצלחה, באמצעות Terraform, ה-VPC הזה מוכן לשימוש!

מסקנה

במדריך זה, למדת כיצד להשתמש ב-Terraform כדי להפיק את VPC של AWS ואת הרכיבים שלו באמצעות Terraform.

בניית Virtual Private Cloud של Amazon עם Terraform מאפשרת לך ליצור משאבים במהירות, בקלות ובאופן צפוי. אתה כעת מוכן להשתמש בידע הזה עם שירותי AWS אחרים ולבנות שירותים עוצמתיים עליו.

Source:
https://adamtheautomator.com/terraform-vpc/