บทนำสู่โมดูล Terraform
ทำความเข้าใจประโยชน์ของการใช้โมดูลเพื่อห่อหุ้มและนำรูปแบบโครงสร้างพื้นฐานทั่วไปกลับมาใช้ใหม่ ช่วยปรับปรุงการจัดระเบียบโค้ดและการดูแลรักษา
บทนำสู่โมดูล Terraform เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
Terraform โมดูลคืออะไร
โมดูล Terraform คือแพ็กเกจการกำหนดค่า Terraform ที่ทำงานได้ในตัว ลองนึกภาพว่าเป็นฟังก์ชันหรือคลาสในภาษาโปรแกรม โมดูลช่วยให้คุณจัดกลุ่มทรัพยากรที่เกี่ยวข้องและจัดการทรัพยากรเหล่านั้นเป็นหน่วยเดียว
โมดูลช่วยจัดระเบียบโค้ดโครงสร้างพื้นฐานและทำให้จัดการได้ง่ายขึ้น โดยเฉพาะในโครงการขนาดใหญ่
เหตุใดจึงควรใช้ Terraform โมดูล
โมดูลมีประโยชน์สำคัญหลายประการต่อโครงสร้างพื้นฐานในรูปแบบโค้ดของคุณ:
- การนำกลับมาใช้ใหม่: กำหนดโครงสร้างพื้นฐานส่วนหนึ่งเพียงครั้งเดียว แล้วใช้ซ้ำในหลายโครงการหรือสภาพแวดล้อม
- การจัดระเบียบ: แยกการกำหนดค่าที่ซับซ้อนออกเป็นองค์ประกอบย่อยที่จัดการได้ง่ายและมีเหตุผล
- ความสอดคล้อง: ทำให้แน่ใจว่าทรัพยากรถูกจัดเตรียมด้วยวิธีมาตรฐานทุกครั้ง ช่วยลดการคลาดเคลื่อนของการกำหนดค่าและข้อผิดพลาด
- การทำงานร่วมกัน: ทีมสามารถพัฒนาและแบ่งปันโมดูล ช่วยเร่งการพัฒนาและรักษามาตรฐาน
อธิบายโครงสร้างโมดูล
โมดูล Terraform โดยพื้นฐานแล้วคือไดเรกทอรีที่มีไฟล์ .tf อย่างน้อยหนึ่งไฟล์ แม้จะปรับเปลี่ยนได้ยืดหยุ่น แต่โครงสร้างทั่วไปประกอบด้วย:
main.tf: กำหนดทรัพยากรหลักที่โมดูลสร้างvariables.tf: ประกาศตัวแปรอินพุตที่ใช้ปรับแต่งการทำงานของโมดูลoutputs.tf: กำหนดค่าเอาต์พุตที่โมดูลเปิดเผยให้ผู้เรียกใช้versions.tf: ระบุข้อจำกัดเวอร์ชันของ Terraform และผู้ให้บริการสำหรับโมดูล
โครงสร้างที่เป็นระเบียบนี้ช่วยให้โค้ดของคุณเรียบร้อยและเข้าใจได้ง่าย
โค้ดโมดูลแรกของคุณ
มากำหนดโมดูลแบบง่ายมากที่สร้างบัคเก็ต AWS S3 กันครับ โดยทั่วไปโค้ดนี้จะอยู่ในไดเรกทอรีของตัวเอง เช่น modules/my_s3_bucket/main.tf
ไฟล์ฉบับสมบูรณ์นี้สามารถเรียกใช้เป็นโมดูลรากเพื่อดูการทำงานได้ แต่จุดประสงค์หลักที่นี่คือการแสดงโครงสร้างภายในของโมดูล
provider "aws" {
region = "us-east-1" # Example region
}
variable "bucket_name" {
description = "Name for the S3 bucket."
type = string
}
variable "acl_setting" {
description = "ACL for the S3 bucket."
type = string
default = "private"
}
resource "aws_s3_bucket" "example_bucket" {
bucket = var.bucket_name
acl = var.acl_setting
tags = {
Environment = "Dev" # Example tag
}
}
output "bucket_id" {
description = "The ID of the S3 bucket."
value = aws_s3_bucket.example_bucket.id
}
output "bucket_arn" {
description = "The ARN of the S3 bucket."
value = aws_s3_bucket.example_bucket.arn
}อินพุตของโมดูล: ตัวแปร
ตัวแปรอินพุตช่วยให้คุณปรับแต่งการทำงานของโมดูลได้โดยไม่ต้องเปลี่ยนโค้ดหลัก ตัวแปรเหล่านี้กำหนดไว้ในไฟล์ variables.tf ภายในไดเรกทอรีของโมดูล
เมื่อเรียกใช้โมดูล คุณจะส่งค่าให้ตัวแปรเหล่านี้ ทำให้โมดูลนำกลับมาใช้ใหม่ได้อย่างยืดหยุ่นในสถานการณ์และสภาพแวดล้อมต่าง ๆ ลองนึกภาพว่าตัวแปรเหล่านี้เป็นอาร์กิวเมนต์ของฟังก์ชัน
variable "bucket_name" {
description = "Name for the S3 bucket."
type = string
}
variable "acl_setting" {
description = "ACL for the S3 bucket."
type = string
default = "private"
}เอาต์พุตของโมดูล: การเปิดเผยข้อมูล
ค่าเอาต์พุตใช้เปิดเผยข้อมูลจากโมดูลไปยังการกำหนดค่าที่เรียกใช้ วิธีนี้ช่วยให้คุณเข้าถึงข้อมูลสำคัญเกี่ยวกับทรัพยากรที่โมดูลสร้าง
เอาต์พุตกำหนดไว้ในไฟล์ outputs.tf ภายในไดเรกทอรีของโมดูล และส่วนอื่น ๆ ของการกำหนดค่า Terraform หรือแม้แต่โมดูลอื่นก็สามารถอ้างอิงได้
output "bucket_id" {
description = "The ID of the S3 bucket."
value = aws_s3_bucket.example_bucket.id
}
output "bucket_arn" {
description = "The ARN of the S3 bucket."
value = aws_s3_bucket.example_bucket.arn
}การเรียกใช้โมดูลแบบกำหนดเอง
ตอนนี้เราได้กำหนดโมดูล my_s3_bucket แล้ว มาเรียกใช้โมดูลนี้จากการกำหนดค่ารากกันครับ แอตทริบิวต์ source ระบุตำแหน่งที่ Terraform สามารถค้นหาโมดูลได้
สำหรับโมดูลภายในเครื่อง ค่านี้คือเส้นทางสัมพัทธ์ไปยังไดเรกทอรีของโมดูล เราจะส่งค่าให้ตัวแปรอินพุตของโมดูล และสามารถเข้าถึงเอาต์พุตที่โมดูลเปิดเผยได้
provider "aws" {
region = "us-east-1"
}
module "my_website_bucket" {
source = "./modules/my_s3_bucket" # Path to your local module
bucket_name = "my-unique-website-bucket-12345"
acl_setting = "public-read"
}
output "website_bucket_arn" {
description = "ARN of the website S3 bucket."
value = module.my_website_bucket.bucket_arn
}
output "website_bucket_id" {
description = "ID of the website S3 bucket."
value = module.my_website_bucket.bucket_id
}แหล่งที่มาของโมดูลประเภทต่าง ๆ
โมดูลไม่ได้มีแค่แบบภายในเครื่องเท่านั้น Terraform สามารถดึงโมดูลจากแหล่งที่มาต่าง ๆ ได้ ทำให้คุณมีความยืดหยุ่นมากขึ้น:
- เส้นทางภายในเครื่อง:
./modules/my_module(ดังที่เห็นในตัวอย่างของเรา) - Terraform Registry:
hashicorp/vpc/aws(โมดูลที่เปิดให้ใช้งานสาธารณะ) - คลัง Git:
git::https://example.com/repo.git - บัคเก็ต S3:
s3::https://s3-us-west-2.amazonaws.com/example-bucket/module.zip
Terraform Registry เป็นแหล่งที่ดีสำหรับค้นหาโมดูลที่สร้างไว้ล่วงหน้าและผ่านการตรวจสอบโดยชุมชน สำหรับรูปแบบโครงสร้างพื้นฐานทั่วไป
ผลกระทบเชิงปฏิบัติของโมดูล
ลองนึกภาพว่าคุณต้องจัดการทรัพยากรหลายร้อยรายการในหลายสภาพแวดล้อม (การพัฒนา การเตรียมใช้งาน และการใช้งานจริง) หากไม่มีโมดูล คุณจะมีไฟล์การกำหนดค่าขนาดใหญ่ที่ซ้ำซ้อนเป็นจำนวนมาก
โมดูลช่วยให้คุณกำหนดรูปแบบ "เซิร์ฟเวอร์เว็บ" หรือ "ฐานข้อมูล" เพียงครั้งเดียว จากนั้นเรียกใช้โมดูลนั้นสำหรับแต่ละอินสแตนซ์ โดยส่งตัวแปรที่แตกต่างกันสำหรับการตั้งค่าเฉพาะสภาพแวดล้อม วิธีนี้ช่วยลดข้อผิดพลาดได้อย่างมาก ทำให้การอัปเดตง่ายขึ้น และทำให้โครงสร้างพื้นฐานของคุณปรับขนาดได้อย่างแท้จริง
ตรวจสอบอย่างรวดเร็ว
คุณได้เรียนรู้เกี่ยวกับโครงสร้างและประโยชน์ของโมดูล Terraform แล้ว มาดูกันว่าคุณสามารถระบุข้อดีสำคัญได้หรือไม่
ทบทวนและขั้นตอนถัดไป
ในบทเรียนนี้ เราได้แนะนำโมดูล Terraform ในฐานะเครื่องมือทรงพลังสำหรับจัดระเบียบและนำโค้ดโครงสร้างพื้นฐานกลับมาใช้ใหม่ คุณได้เรียนรู้ว่า:
- โมดูลรวมทรัพยากรไว้เป็นหน่วยที่นำกลับมาใช้ใหม่ได้
- โมดูลช่วยปรับปรุงการจัดระเบียบโค้ด ความสอดคล้อง และการนำกลับมาใช้ใหม่
- โมดูลใช้
variables.tfสำหรับอินพุต และoutputs.tfสำหรับข้อมูลที่เปิดเผย - คุณสามารถเรียกใช้โมดูลจากเส้นทางภายในเครื่อง รีจิสทรี หรือคลัง Git ได้
ถัดไป เราจะเจาะลึกการสร้างโมดูลที่นำกลับมาใช้ใหม่ได้ของคุณเอง พร้อมสำรวจรูปแบบขั้นสูงและแนวทางปฏิบัติที่ดีเพิ่มเติม
คำถามที่พบบ่อย
บทเรียน “บทนำสู่โมดูล Terraform” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “บทนำสู่โมดูล Terraform” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “บทนำสู่โมดูล Terraform”
ทำความเข้าใจประโยชน์ของการใช้โมดูลเพื่อห่อหุ้มและนำรูปแบบโครงสร้างพื้นฐานทั่วไปกลับมาใช้ใหม่ ช่วยปรับปรุงการจัดระเบียบโค้ดและการดูแลรักษา คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “บทนำสู่โมดูล Terraform” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บทนำสู่โมดูล Terraform
- การสร้างโมดูลที่นำกลับมาใช้ใหม่ได้
- การใช้เวิร์กสเปซสำหรับสภาพแวดล้อม
- การเผยแพร่โมดูลไปยังรีจิสทรี