ทรัพยากร Null และทริกเกอร์
ทำความรู้จัก `null_resource` สำหรับเรียกใช้คำสั่งใด ๆ ที่ไม่ตรงกับทรัพยากรคลาวด์จริง และใช้ทริกเกอร์ควบคุมเวลาที่ตัวจัดเตรียมจะทำงาน
ทรัพยากร Null และทริกเกอร์ เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
null_resource คืออะไร
null_resource ของ Terraform เป็นทรัพยากรชนิดพิเศษที่ไม่ได้สร้างหรือจัดการวัตถุโครงสร้างพื้นฐานใด ๆ ในผู้ให้บริการระบบคลาวด์ของคุณโดยตรง
แต่จะทำหน้าที่เป็นตัวแทนสำหรับเรียกใช้คำสั่งหรือสคริปต์ใด ๆ ซึ่งมักใช้กับงานที่อยู่นอกขอบเขตของการจัดเตรียมทรัพยากรทั่วไป
เหตุใดจึงใช้ null_resource
คุณอาจสงสัยว่าเหตุใดจึงต้องใช้ทรัพยากร 'null' ทรัพยากรนี้มีประโยชน์อย่างมากสำหรับ:
- การเรียกใช้สคริปต์ภายในเครื่อง: เรียกใช้คำสั่งบนเครื่องที่กำลังเรียกใช้ Terraform เช่น การเตรียมไฟล์การกำหนดค่า
- การดำเนินการหลังการนำไปใช้งาน: ดำเนินงานตั้งค่าหรือล้างข้อมูลหลังจากจัดเตรียมทรัพยากรจริงแล้ว
- การโต้ตอบกับส่วนต่อประสานโปรแกรมภายนอก: ใช้เมื่อไม่มีผู้ให้บริการ Terraform เฉพาะสำหรับบริการใดบริการหนึ่ง
- ตรรกะที่กำหนดเอง: จัดลำดับขั้นตอนที่กำหนดเองซึ่งไม่ได้ผูกกับทรัพยากรระบบคลาวด์ใดโดยเฉพาะ
โครงสร้างพื้นฐานของ null_resource
บล็อก null_resource มีลักษณะเหมือนทรัพยากร Terraform อื่น ๆ หากไม่มีตัวจัดเตรียมหรือตัวกระตุ้น บล็อกนี้จะสร้างเพียงวัตถุ 'null' ในสถานะของ Terraform และไม่ทำสิ่งอื่นใด
โดยทั่วไปจะใช้ร่วมกับ ตัวจัดเตรียม เพื่อเรียกใช้คำสั่ง และใช้ร่วมกับ ตัวกระตุ้น เพื่อควบคุมเวลาที่คำสั่งเหล่านั้นทำงาน
ตัวอย่าง null_resource อย่างง่าย
นี่คือตัวอย่าง null_resource ขั้นต่ำ หากคุณเรียกใช้ terraform apply กับตัวอย่างนี้ ทรัพยากรจะถูกสร้างในสถานะ แต่จะไม่มีการดำเนินการภายนอกใดเกิดขึ้น
ทรัพยากรนี้เป็นเพียงตัวแทนที่พร้อมเพิ่มการดำเนินการต่าง ๆ
resource "null_resource" "my_placeholder" {
# This resource exists in state but performs no action.
# It's ready to attach provisioners or triggers.
}ตัวจัดเตรียมร่วมกับ null_resource
พลังที่แท้จริงของ null_resource จะปรากฏเมื่อคุณใช้ร่วมกับ ตัวจัดเตรียม
ตัวจัดเตรียมช่วยให้คุณเรียกใช้สคริปต์หรือคำสั่งบนเครื่องที่กำลังเรียกใช้ Terraform (local-exec) หรือบนทรัพยากรระยะไกลโดยตรง (remote-exec ซึ่งพบได้น้อยกว่าสำหรับ null_resource)
ด้วยวิธีนี้ null_resource จึงสามารถทำหน้าที่เป็นตัวเรียกใช้การดำเนินการได้
ทำความรู้จักกับตัวกระตุ้น
triggers คือแผนที่ของคู่คีย์-ค่าตามอำเภอใจที่กำหนดไว้ภายในบล็อก null_resource
จุดประสงค์คือการบอก Terraform ว่า 'หากค่าใด ๆ ในแผนที่นี้เปลี่ยนแปลง จะต้องเรียกใช้ null_resource นี้และตัวจัดเตรียมของมันอีกครั้ง'
กลไกนี้สำคัญต่อการทำให้ null_resource ตอบสนองต่อการเปลี่ยนแปลงในโครงสร้างพื้นฐานของคุณ
ตัวกระตุ้นทำงานอย่างไร
เมื่อค่าในแผนที่ triggers เปลี่ยนแปลง Terraform จะตรวจพบการแก้ไขใน null_resource
ระหว่างการเรียกใช้ terraform apply Terraform จะ:
- ทำลาย
null_resourceเดิม หากมีอยู่ - สร้าง
null_resourceขึ้นใหม่ - เรียกใช้ซ้ำ ตัวจัดเตรียมที่เกี่ยวข้อง
กลไกนี้ทำให้มั่นใจว่าการดำเนินการที่กำหนดเองจะเกิดขึ้นเฉพาะเมื่อการพึ่งพาที่เกี่ยวข้องเปลี่ยนแปลง
ตัวอย่าง: ตัวกระตุ้นและ local-exec
ในที่นี้ เราใช้ null_resource เพื่อจำลองการอัปเดตไฟล์การกำหนดค่าตามตัวแปรอย่างง่าย ตัวจัดเตรียม local-exec จะเรียกใช้คำสั่ง และ triggers จะทำให้คำสั่งนั้นทำงานซ้ำหาก var.app_version เปลี่ยนแปลง
variable "app_version" {
description = "The version of the application."
type = string
default = "1.0.0"
}
resource "null_resource" "update_config_file" {
triggers = {
version_change = var.app_version
}
provisioner "local-exec" {
command = "echo 'Config updated for version: ${self.triggers.version_change}' > app_config.txt"
}
}แนวทางปฏิบัติที่ดีและทางเลือกอื่น
แม้ null_resource จะมีความสามารถสูง แต่ควรใช้อย่างเหมาะสม:
- เลือกใช้ผู้ให้บริการก่อน: หากมีผู้ให้บริการหรือทรัพยากร Terraform เฉพาะสำหรับงานนั้น ให้ใช้สิ่งนั้นแทน
- ทำให้ทำซ้ำได้อย่างปลอดภัย: ตรวจสอบให้แน่ใจว่าสคริปต์ที่ตัวจัดเตรียมเรียกใช้สามารถทำงานซ้ำได้หลายครั้งโดยไม่ก่อให้เกิดผลข้างเคียง
- หลีกเลี่ยงการจัดการสถานะ: อย่าพยายามจัดการสถานะภายนอกด้วย
null_resourceเพราะหน้าที่นี้เป็นของแบ็กเอนด์สถานะระยะไกล - พิจารณาแหล่งข้อมูล
external: สำหรับตรรกะภายนอกที่ซับซ้อนและส่งคืนข้อมูลที่มีโครงสร้าง แหล่งข้อมูลexternalอาจเป็นทางเลือกที่สะอาดกว่า
ตรวจสอบอย่างรวดเร็ว: ทรัพยากร Null
คุณได้เรียนรู้เกี่ยวกับ null_resource และ triggers แล้ว มาทดสอบความเข้าใจกัน
สรุป: Null และตัวกระตุ้น
ในบทเรียนนี้ คุณได้ค้นพบความยืดหยุ่นของ null_resource ใน Terraform ซึ่งเป็นเครื่องมือทรงพลังสำหรับเรียกใช้คำสั่งและสคริปต์ที่กำหนดเอง ซึ่งไม่ตรงกับทรัพยากรระบบคลาวด์ที่เป็นรูปธรรม
คุณยังได้เรียนรู้เกี่ยวกับ triggers ซึ่งเป็นกลไกภายใน null_resource ที่ช่วยให้คุณกำหนดการพึ่งพาและทำให้ตัวจัดเตรียมทำงานซ้ำทุกครั้งที่การพึ่งพาเหล่านั้นเปลี่ยนแปลง วิธีนี้ช่วยให้การทำงานอัตโนมัติแบบกำหนดเองในโครงสร้างพื้นฐานเป็นโค้ดมีความเคลื่อนไหวและตอบสนองได้
คำถามที่พบบ่อย
บทเรียน “ทรัพยากร Null และทริกเกอร์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ทรัพยากร Null และทริกเกอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ทรัพยากร Null และทริกเกอร์”
ทำความรู้จัก `null_resource` สำหรับเรียกใช้คำสั่งใด ๆ ที่ไม่ตรงกับทรัพยากรคลาวด์จริง และใช้ทริกเกอร์ควบคุมเวลาที่ตัวจัดเตรียมจะทำงาน คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ทรัพยากร Null และทริกเกอร์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสืบค้นข้อมูลด้วยแหล่งข้อมูล
- ตัวจัดเตรียม local และ remote exec
- ทรัพยากร Null และทริกเกอร์
- การใช้ข้อมูลภายนอกและแม่แบบ