ฟังก์ชันในตัวของ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การใช้ลูปกับ `for_each` และ `count`
- ฟังก์ชันในตัวของ Terraform
- นิพจน์เงื่อนไขและ Splat
- บล็อกไดนามิกสำหรับการตั้งค่าซ้อนกัน