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

ฟังก์ชันในตัวของ Terraform

สำรวจฟังก์ชันในตัวของ Terraform ที่หลากหลายสำหรับจัดการข้อความ ประมวลผลรายการ แปลงชนิดข้อมูล และอื่น ๆ เพื่อเพิ่มความสามารถให้การกำหนดค่าของคุณ

ฟังก์ชันในตัวของ Terraform เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

ปลดล็อกการกำหนดค่าแบบไดนามิก

ฟังก์ชันในตัวของ Terraform เปรียบเสมือนโปรแกรมขนาดเล็กที่ช่วยประมวลผลและแปลงค่าต่าง ๆ ได้โดยตรงภายในไฟล์การกำหนดค่าของคุณ

ฟังก์ชันเหล่านี้ช่วยให้คุณสร้างคำจำกัดความโครงสร้างพื้นฐานที่ปรับเปลี่ยนได้ นำกลับมาใช้ใหม่ได้ และชาญฉลาดยิ่งขึ้น

  • แปลงข้อมูล: เปลี่ยนสตริง ตัวเลข หรือรายการ
  • คำนวณค่า: ดำเนินการคำนวณหรือตรวจสอบตรรกะ
  • สร้างเนื้อหาแบบไดนามิก: สร้างชื่อทรัพยากรหรือแท็กได้ทันที

การแปลงข้อความ

ฟังก์ชันสตริงจำเป็นสำหรับการจัดการข้อความ ฟังก์ชันพื้นฐานสองอย่างคือ upper() และ lower() ซึ่งใช้เปลี่ยนตัวพิมพ์ของสตริง

ฟังก์ชันเหล่านี้มีประโยชน์สำหรับการทำให้รูปแบบการตั้งชื่อเป็นมาตรฐานหรือให้ตรงตามข้อกำหนดเฉพาะ

variable "region_code" {
  type    = string
  default = "us-east-1"
}

output "upper_region" {
  value = upper(var.region_code)
}

output "lower_example" {
  value = lower("AWS_REGION")
}

การเชื่อมและแบ่งสตริง

ฟังก์ชัน join() รวมองค์ประกอบของรายการให้เป็นสตริงเดียวโดยใช้ตัวคั่นที่ระบุ ในทางกลับกัน split() จะแบ่งสตริงออกเป็นรายการของสตริงย่อยตามตัวคั่น

ฟังก์ชันเหล่านี้มีประโยชน์อย่างมากสำหรับการแยกวิเคราะห์ข้อมูลหรือสร้างชื่อที่ซับซ้อน

variable "tags_list" {
  type    = list(string)
  default = ["web", "frontend", "prod"]
}

output "joined_tags" {
  value = join(",", var.tags_list)
}

output "split_string" {
  value = split("-", "server-01-app")
}

คณิตศาสตร์ในการกำหนดค่าของคุณ

ฟังก์ชันตัวเลขช่วยให้คุณดำเนินการทางคณิตศาสตร์พื้นฐานได้ ceil() ปัดเศษขึ้น floor() ปัดเศษลง และ min()/max() ใช้ค้นหาค่าที่น้อยที่สุดหรือมากที่สุดจากชุดข้อมูล

เหมาะสำหรับการคำนวณจำนวนทรัพยากรหรือการกำหนดขนาด

variable "instance_ratio" {
  type    = number
  default = 3.7
}

output "rounded_up_instances" {
  value = ceil(var.instance_ratio)
}

output "rounded_down_instances" {
  value = floor(var.instance_ratio)
}

output "smallest_val" {
  value = min(10, 5, 12, 8)
}

การทำงานกับรายการ

รายการคือกลุ่มข้อมูลที่เรียงลำดับ ฟังก์ชันอย่าง length() ช่วยบอกจำนวนรายการในรายการ และ element() ใช้ดึงรายการตามดัชนีตัวเลข โดยเริ่มจาก 0

มีประโยชน์สำหรับการวนซ้ำหรือเลือกเฉพาะรายการ

variable "zones" {
  type    = list(string)
  default = ["us-east-1a", "us-east-1b", "us-east-1c"]
}

output "num_zones" {
  value = length(var.zones)
}

output "first_zone" {
  value = element(var.zones, 0)
}

การจัดการข้อมูลคีย์-ค่า

แผนที่จัดเก็บข้อมูลในรูปคู่คีย์-ค่า lookup() ใช้ดึงค่าตามคีย์ที่ระบุ พร้อมค่าเริ่มต้นที่เลือกกำหนดได้หากไม่พบคีย์ ส่วน merge() ใช้รวมแผนที่หลายรายการให้เป็นแผนที่เดียว

เหมาะอย่างยิ่งสำหรับการจัดการข้อมูลเมทาดาทาหรือแท็กทรัพยากร

variable "server_info" {
  type = map(string)
  default = {
    name = "backend-server"
    env  = "dev"
  }
}

variable "additional_info" {
  type = map(string)
  default = {
    owner = "team-a"
  }
}

output "server_name" {
  value = lookup(var.server_info, "name", "unknown")
}

output "merged_map" {
  value = merge(var.server_info, var.additional_info)
}

การเปลี่ยนชนิดข้อมูล

บางครั้ง ค่าจะต้องเป็นชนิดข้อมูลเฉพาะ (เช่น สตริงแทนที่จะเป็นตัวเลข) เพื่อใช้เป็นอาร์กิวเมนต์ของทรัพยากร ฟังก์ชันแปลงชนิดข้อมูล เช่น tostring() และ tonumber() ช่วยให้คุณทำเช่นนี้ได้

ช่วยให้ส่วนต่าง ๆ ของการกำหนดค่าทำงานร่วมกันได้อย่างเข้ากันได้

variable "port_number" {
  type    = number
  default = 8080
}

output "port_as_string" {
  value = tostring(var.port_number)
}

output "string_to_number" {
  value = tonumber("123") + 7
}

ฟังก์ชันในการใช้งานจริง

คุณสามารถรวมฟังก์ชันในตัวหรือซ้อนฟังก์ชันเข้าด้วยกัน เพื่อแปลงข้อมูลที่ซับซ้อนได้ ตัวอย่างนี้สร้างชื่อทรัพยากรโดยรวมตัวแปรเข้าด้วยกัน แปลงตัวแปรหนึ่งเป็นตัวพิมพ์ใหญ่ และตรวจสอบให้ชนิดข้อมูลถูกต้อง

variable "env" {
  type    = string
  default = "dev"
}

variable "service" {
  type    = string
  default = "app"
}

variable "instance_id" {
  type    = number
  default = 1
}

output "resource_name" {
  value = join("-", [
    upper(var.env),
    var.service,
    tostring(var.instance_id)
  ])
}

แนวทางปฏิบัติที่ดี

เมื่อใช้ฟังก์ชัน ควรเน้นความชัดเจนและการบำรุงรักษา:

  • ทำให้อ่านง่าย: อย่าซ้อนฟังก์ชันมากเกินไปจนทำให้เข้าใจโค้ดได้ยาก
  • ใช้ตัวแปร: จัดเก็บผลลัพธ์ระหว่างทางที่ซับซ้อนไว้ในตัวแปรท้องถิ่น เพื่อให้อ่านได้ง่ายขึ้น
  • ทดสอบด้วย terraform console: ทดลองใช้ฟังก์ชันอย่างรวดเร็วเพื่อดูเอาต์พุตก่อนเพิ่มฟังก์ชันเหล่านั้นลงในการกำหนดค่าของคุณ

โจทย์ท้าทายเรื่องฟังก์ชัน

มาทดสอบความเข้าใจของคุณเกี่ยวกับการทำงานร่วมกันของฟังก์ชันในตัวของ Terraform กัน

เชี่ยวชาญการใช้ฟังก์ชันแล้ว!

คุณได้เรียนรู้ฟังก์ชันในตัวอันทรงพลังของ Terraform แล้ว!

ตอนนี้คุณเข้าใจวิธีใช้ฟังก์ชันสำหรับสตริง ตัวเลข คอลเลกชัน และการแปลงชนิดข้อมูล เพื่อทำให้การกำหนดค่าของคุณทำงานแบบไดนามิกและปรับเปลี่ยนได้ เครื่องมือเหล่านี้มีความสำคัญอย่างยิ่งต่อการเขียนโครงสร้างพื้นฐานในรูปแบบโค้ดที่มีประสิทธิภาพและนำกลับมาใช้ซ้ำได้

คำถามที่พบบ่อย

บทเรียน “ฟังก์ชันในตัวของ Terraform” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ฟังก์ชันในตัวของ Terraform” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันในตัวของ Terraform”

สำรวจฟังก์ชันในตัวของ Terraform ที่หลากหลายสำหรับจัดการข้อความ ประมวลผลรายการ แปลงชนิดข้อมูล และอื่น ๆ เพื่อเพิ่มความสามารถให้การกำหนดค่าของคุณ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ฟังก์ชันในตัวของ Terraform” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การใช้ลูปกับ `for_each` และ `count`
  2. ฟังก์ชันในตัวของ Terraform
  3. นิพจน์เงื่อนไขและ Splat
  4. บล็อกไดนามิกสำหรับการตั้งค่าซ้อนกัน
← กลับไปที่ DevOps Bootcamp