การสืบค้นข้อมูลด้วยแหล่งข้อมูล
ใช้แหล่งข้อมูลเพื่อดึงข้อมูลเกี่ยวกับโครงสร้างพื้นฐานที่มีอยู่หรือบริการภายนอก ทำให้สามารถสร้างการกำหนดค่าที่ปรับเปลี่ยนได้และยืดหยุ่นมากขึ้น
การสืบค้นข้อมูลด้วยแหล่งข้อมูล เป็นบทเรียน Terraform Infrastructure as Code ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Terraform Infrastructure as Code และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Terraform Infrastructure as Code มีบทเรียนทั้งหมด 4 บทเรียน
แหล่งข้อมูลคืออะไร
ใน Terraform เรามักต้องอ้างอิงโครงสร้างพื้นฐานที่มีอยู่หรือข้อมูลภายนอกซึ่งไม่ได้รับการจัดการโดยการกำหนดค่าปัจจุบันของเรา
นี่คือจุดที่ แหล่งข้อมูล มีบทบาท แหล่งข้อมูลช่วยให้การกำหนดค่า Terraform ดึงข้อมูลเกี่ยวกับทรัพยากรที่จัดเตรียมไว้แล้วหรือบริการภายนอกได้
แหล่งข้อมูลกับทรัพยากร
การแยกความแตกต่างระหว่างแหล่งข้อมูลกับทรัพยากรเป็นสิ่งสำคัญ
- ทรัพยากรใช้กำหนดโครงสร้างพื้นฐานที่ Terraform จะสร้าง อัปเดต หรือลบ
- แหล่งข้อมูลใช้ดึงข้อมูลเกี่ยวกับโครงสร้างพื้นฐานหรือข้อมูลที่มีอยู่เท่านั้น โดยจะไม่สร้างหรือแก้ไขสิ่งใด
ลองนึกภาพว่าแหล่งข้อมูลคือการสืบค้นโครงสร้างพื้นฐานของคุณแบบอ่านอย่างเดียว
กรณีการใช้งานจริง
แหล่งข้อมูลมีประโยชน์อย่างมากสำหรับ:
- ค้นหา ID ของ Virtual Private Cloud (VPC) ที่มีอยู่
- รับ Amazon Machine Image (AMI) ล่าสุดสำหรับอินสแตนซ์ EC2
- เรียกข้อมูลลับจากบริการจัดการข้อมูลลับ
- ค้นหาระเบียน DNS หรือการกำหนดค่าเครือข่าย
แหล่งข้อมูลช่วยให้การกำหนดค่าของคุณทำงานแบบไดนามิกมากขึ้นและกำหนดค่าตายตัวน้อยลง
กำหนดแหล่งข้อมูล
บล็อกแหล่งข้อมูลมีลักษณะคล้ายกับบล็อกทรัพยากร โดยเริ่มต้นด้วยคีย์เวิร์ด data ตามด้วยผู้ให้บริการและประเภท แล้วจึงตามด้วยชื่อภายใน
data "aws_vpc" "selected" {
filter {
name = "tag:Name"
values = ["my-existing-vpc"]
}
}ใช้ข้อมูลที่ดึงมา
เมื่อแหล่งข้อมูลดึงข้อมูลแล้ว แอตทริบิวต์ของแหล่งข้อมูลจะพร้อมให้ส่วนอื่น ๆ ของการกำหนดค่าของคุณใช้งาน คุณสามารถอ้างอิงแอตทริบิวต์เหล่านั้นด้วยไวยากรณ์: data.<TYPE>.<NAME>.<ATTRIBUTE>
ตัวอย่างเช่น หากต้องการรับ ID ของ VPC ที่เราเลือก:
output "vpc_id" {
value = data.aws_vpc.selected.id
}ดึง AMI ล่าสุด
งานที่พบบ่อยคือการค้นหา Amazon Machine Image (AMI) ล่าสุดสำหรับอินสแตนซ์ EC2 วิธีนี้ช่วยหลีกเลี่ยงการกำหนด AMI IDs แบบตายตัว ทำให้การกำหนดค่าของคุณมีความยืดหยุ่นและทนทานมากขึ้น
ต่อไปนี้คือวิธีดึง AMI ของ Amazon Linux 2 ล่าสุด:
provider "aws" {
region = "us-east-1"
}
data "aws_ami" "amazon_linux_2" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-gp2"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
}
output "latest_ami_id" {
value = data.aws_ami.amazon_linux_2.id
}เอกสารนโยบาย S3 แบบไดนามิก
แหล่งข้อมูลไม่ได้มีไว้สำหรับทรัพยากรบนคลาวด์เท่านั้น แหล่งข้อมูล aws_iam_policy_document ช่วยสร้างนโยบาย IAM ที่ซับซ้อนอย่างเป็นระบบ
แหล่งข้อมูลนี้ไม่ได้สร้างนโยบาย แต่จะสร้างเอกสาร JSON ที่คุณสามารถนำไปใช้กับทรัพยากร เช่น บักเก็ต S3 ได้
provider "aws" {
region = "us-east-1"
}
data "aws_iam_policy_document" "s3_read_only_policy" {
statement {
principals {
type = "AWS"
identifiers = ["arn:aws:iam::123456789012:user/example-user"]
}
actions = [
"s3:GetObject",
"s3:ListBucket"
]
resources = [
"arn:aws:s3:::my-example-bucket",
"arn:aws:s3:::my-example-bucket/*"
]
}
}
output "policy_json" {
value = data.aws_iam_policy_document.s3_read_only_policy.json
}ปรับการค้นหาให้ละเอียดขึ้น
แหล่งข้อมูลจำนวนมากรองรับบล็อก ตัวกรอง ซึ่งช่วยให้คุณระบุเกณฑ์เพื่อจำกัดผลลัพธ์ให้แคบลง และทำให้มั่นใจว่าคุณดึงทรัพยากรหรือข้อมูลที่ถูกต้อง
โดยทั่วไป ตัวกรองจะรับ name (แอตทริบิวต์ที่จะใช้กรอง) และ values (รายการค่าที่ยอมรับได้สำหรับแอตทริบิวต์นั้น)
data "aws_instance" "web" {
instance_state_names = ["running"]
filter {
name = "tag:Environment"
values = ["production"]
}
filter {
name = "instance-type"
values = ["t2.micro", "t3.micro"]
}
}แนวทางปฏิบัติที่ดีที่สุดสำหรับแหล่งข้อมูล
เพื่อให้การกำหนดค่าของคุณเป็นระเบียบและมีประสิทธิภาพ:
- ระบุให้ชัดเจน: ใช้ตัวกรองเพื่อให้แน่ใจว่าคุณดึงข้อมูลที่ต้องการอย่างเจาะจง และหลีกเลี่ยงความกำกวม
- ทำซ้ำได้ผลเดิม: แหล่งข้อมูลมีคุณสมบัติทำซ้ำได้ผลลัพธ์เดิมโดยธรรมชาติ กล่าวคือ การเรียกใช้หลายครั้งจะให้ผลลัพธ์เดียวกัน
- ลดการเรียกใช้: ดึงข้อมูลเฉพาะเมื่อจำเป็น เพื่อให้การทำงานของ
terraform planเร็วขึ้น - ใช้ร่วมกับเอาต์พุต: ใช้เอาต์พุตเพื่อเปิดเผยข้อมูลที่ดึงมา ซึ่งการกำหนดค่าอื่นหรือผู้ใช้อาจต้องใช้
แบบทดสอบแหล่งข้อมูล
ข้อความใดต่อไปนี้เป็น TRUE เกี่ยวกับแหล่งข้อมูลของ Terraform
สรุป: การสืบค้นข้อมูล
คุณได้เรียนรู้ว่า แหล่งข้อมูล ของ Terraform ช่วยให้การกำหนดค่าของคุณสืบค้นและดึงข้อมูลเกี่ยวกับโครงสร้างพื้นฐานที่มีอยู่หรือบริการภายนอกได้อย่างไร
ความสามารถอันทรงพลังนี้ช่วยให้การกำหนดค่ามีลักษณะไดนามิก ยืดหยุ่น และทนทาน โดยหลีกเลี่ยงค่าที่กำหนดตายตัวและปรับตามสถานะปัจจุบันของสภาพแวดล้อม โปรดจำไว้ว่าแหล่งข้อมูลอ่านข้อมูลเท่านั้น ไม่เคยสร้างหรือแก้ไขสิ่งใด
คำถามที่พบบ่อย
บทเรียน “การสืบค้นข้อมูลด้วยแหล่งข้อมูล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสืบค้นข้อมูลด้วยแหล่งข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Terraform Infrastructure as Code ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Terraform Infrastructure as Code มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสืบค้นข้อมูลด้วยแหล่งข้อมูล”
ใช้แหล่งข้อมูลเพื่อดึงข้อมูลเกี่ยวกับโครงสร้างพื้นฐานที่มีอยู่หรือบริการภายนอก ทำให้สามารถสร้างการกำหนดค่าที่ปรับเปลี่ยนได้และยืดหยุ่นมากขึ้น คุณปฏิบัติ Terraform Infrastructure as Code ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Terraform Infrastructure as Code หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Terraform Infrastructure as Code บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การสืบค้นข้อมูลด้วยแหล่งข้อมูล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Terraform Infrastructure as Code นี้ได้ไหม
ได้ บทเรียน Terraform Infrastructure as Code ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสืบค้นข้อมูลด้วยแหล่งข้อมูล
- ตัวจัดเตรียม local และ remote exec
- ทรัพยากร Null และทริกเกอร์
- การใช้ข้อมูลภายนอกและแม่แบบ