0Pricing
DevOps Bootcamp · บทเรียน

บทนำสู่โมดูล 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. บทนำสู่โมดูล Terraform
  2. การสร้างโมดูลที่นำกลับมาใช้ใหม่ได้
  3. การใช้เวิร์กสเปซสำหรับสภาพแวดล้อม
  4. การเผยแพร่โมดูลไปยังรีจิสทรี
← กลับไปที่ DevOps Bootcamp