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

ตัวจัดเตรียม local และ remote exec

ใช้งานตัวจัดเตรียม `local-exec` และ `remote-exec` เพื่อเรียกใช้คำสั่งบนเครื่องที่กำลังทำงาน Terraform หรือบนทรัพยากรที่สร้างขึ้นตามลำดับ

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

พบกับตัวจัดเตรียมทรัพยากรของ Terraform

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

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

ลองนึกภาพว่าตัวจัดเตรียมทรัพยากรเป็นจุดเชื่อมที่ช่วยให้คุณปรับแต่งทรัพยากรได้ทันทีหลังจากสร้างเสร็จ

`local-exec`: เรียกใช้ภายในเครื่อง

ตัวจัดเตรียมทรัพยากร local-exec จะเรียกใช้คำสั่งบนเครื่องที่กำลังเรียกใช้ Terraform

เหมาะสำหรับงานต่าง ๆ เช่น:

  • สร้างไฟล์การกำหนดค่าภายในเครื่อง
  • เรียกใช้สคริปต์หรือเครื่องมือภายในเครื่อง
  • ดำเนินการล้างข้อมูลหลังจากทำลายทรัพยากร

เหมาะอย่างยิ่งสำหรับการดำเนินการที่ไม่จำเป็นต้องเกิดขึ้น บนทรัพยากรคลาวด์โดยตรง

ตัวอย่างพื้นฐานของ `local-exec`

มาดูวิธีให้ local-exec สร้างไฟล์อย่างง่ายบนเครื่องภายในเครื่องของคุณ หลังจากสร้างทรัพยากร null แล้ว

null_resource คือพื้นที่สำรองที่ไม่ได้สร้างสิ่งใดบนคลาวด์ แต่มีประโยชน์สำหรับเรียกใช้ตัวจัดเตรียมทรัพยากร

resource "null_resource" "local_file_creator" {
  provisioner "local-exec" {
    command = "echo 'Local file created by Terraform!' > local_output.txt"
  }

  triggers = {
    always_run = timestamp()
  }
}

เมื่อใดควรใช้ `local-exec`

local-exec เหมาะสำหรับ:

  • การแจ้งเตือนหลังการปรับใช้: ส่งอีเมลหรือข้อความ Slack
  • การสร้างไฟล์ภายในเครื่อง: สร้างไฟล์บัญชีรายการสำหรับ Ansible หรือเครื่องมืออื่น
  • การตรวจสอบก่อนการปรับใช้: เรียกใช้สคริปต์ตรวจสอบภายในเครื่อง
  • การเรียกใช้ CI/CD: เริ่มกระบวนการทำงานหลังจากโครงสร้างพื้นฐานเปลี่ยนแปลง

โปรดจำไว้ว่า local-exec จะทำงานจากตำแหน่งที่คุณเรียกใช้ terraform apply

`remote-exec`: เรียกใช้บนทรัพยากร

แตกต่างจาก local-exec ตรงที่ตัวจัดเตรียมทรัพยากร remote-exec จะเรียกใช้คำสั่ง บนทรัพยากรระยะไกลโดยตรง

สิ่งนี้สำคัญอย่างยิ่งสำหรับงานตั้งค่าเบื้องต้นบนเซิร์ฟเวอร์ที่เพิ่งสร้าง เช่น:

  • ติดตั้งแพ็กเกจซอฟต์แวร์ (เช่น เว็บเซิร์ฟเวอร์ ฐานข้อมูล)
  • กำหนดค่าการตั้งค่าระบบปฏิบัติการ
  • ปรับใช้โค้ดแอปพลิเคชัน

การดำเนินการนี้ต้องมีการเชื่อมต่อเครือข่าย (เช่น SSH สำหรับ Linux หรือ WinRM สำหรับ Windows) ไปยังทรัพยากรเป้าหมาย

เชื่อมต่อสำหรับ `remote-exec`

เพื่อให้ remote-exec ทำงานได้ Terraform ต้องเชื่อมต่อกับทรัพยากรของคุณ

ประเภทการเชื่อมต่อที่ใช้บ่อย ได้แก่:

  • SSH: สำหรับอินสแตนซ์ Linux และต้องใช้คีย์ส่วนตัว
  • WinRM: สำหรับอินสแตนซ์ Windows และต้องใช้ข้อมูลรับรอง

โดยทั่วไป คุณจะกำหนดรายละเอียดการเชื่อมต่อไว้ภายในบล็อก provisioner หรือรับค่าที่สืบทอดมาจากทรัพยากร

`remote-exec` บน EC2

ต่อไปนี้คือวิธีใช้ remote-exec เพื่อติดตั้ง Apache บนอินสแตนซ์ AWS EC2 ใหม่

หมายเหตุ: ต้องมีการจัดเตรียมอินสแตนซ์ EC2 และอินสแตนซ์นั้นต้องเข้าถึงได้ผ่าน SSH เพื่อความง่าย เราจะสมมติว่ามีคู่คีย์และกลุ่มความปลอดภัยอยู่แล้ว

resource "aws_instance" "web_server" {
  ami           = "ami-0abcdef1234567890" # Replace with valid AMI ID
  instance_type = "t2.micro"
  key_name      = "my-ssh-key" # Replace with your SSH key name
  vpc_security_group_ids = ["sg-0123456789abcdef0"] # Replace with your SG ID

  provisioner "remote-exec" {
    inline = [
      "sudo yum update -y",
      "sudo yum install -y httpd",
      "sudo systemctl start httpd",
      "sudo systemctl enable httpd"
    ]
    connection {
      type        = "ssh"
      user        = "ec2-user"
      private_key = file("~/.ssh/my-ssh-key.pem")
      host        = self.public_ip
    }
  }
}

เมื่อใดควรใช้ `remote-exec`

remote-exec เหมาะอย่างยิ่งสำหรับ:

  • การเริ่มต้นเซิร์ฟเวอร์: ติดตั้งเว็บเซิร์ฟเวอร์ ฐานข้อมูล หรือ Docker
  • การปรับใช้แอปพลิเคชัน: คัดลอกโค้ดแอปพลิเคชันและกำหนดค่า
  • การจัดการการกำหนดค่า: เรียกใช้คู่มือปฏิบัติการของ Ansible หรือสูตรของ Chef โดยตรง
  • การตรวจสอบหลังการสร้าง: ตรวจสอบว่าบริการกำลังทำงานบนอินสแตนซ์ใหม่

นี่คือเครื่องมือหลักสำหรับตั้งค่าสถานะเริ่มต้นของเซิร์ฟเวอร์

ตัวจัดเตรียมเมื่อทำลายทรัพยากร

ตัวจัดเตรียมสามารถทำงานได้เมื่อทรัพยากรกำลังถูกทำลาย ซึ่งมีประโยชน์สำหรับงานล้างข้อมูล

คุณสามารถระบุ when = destroy ภายในบล็อกตัวจัดเตรียมได้ ตัวอย่างเช่น ใช้ยกเลิกการลงทะเบียนอินสแตนซ์จากตัวกระจายโหลดก่อนที่อินสแตนซ์นั้นจะถูกยุติการทำงาน

คุณยังสามารถกำหนดลักษณะการทำงานของ on_failure เพื่อระบุว่าจะเกิดอะไรขึ้นหากคำสั่งของตัวจัดเตรียมล้มเหลว โดยค่าเริ่มต้น ระบบจะแสดงข้อผิดพลาด

แบบทดสอบตัวจัดเตรียม

คุณจะใช้ตัวจัดเตรียมใดเพื่อติดตั้งเว็บเซิร์ฟเวอร์ เช่น Nginx บนอินสแตนซ์เครื่องเสมือนที่เพิ่งสร้างใหม่

ตัวจัดเตรียม: ภายในเครื่องเทียบกับระยะไกล

เราได้สำรวจ ตัวจัดเตรียม ของ Terraform ซึ่งเป็นเครื่องมืออันทรงพลังสำหรับเรียกใช้คำสั่งระหว่างวงจรชีวิตของทรัพยากร

  • local-exec เรียกใช้คำสั่งบนเครื่องที่กำลังเรียกใช้ Terraform จึงเหมาะสำหรับการเขียนสคริปต์ภายในเครื่องหรือการส่งการแจ้งเตือน
  • remote-exec เรียกใช้คำสั่งโดยตรงบนทรัพยากรที่จัดเตรียมไว้ จึงเหมาะอย่างยิ่งสำหรับการเริ่มต้นเซิร์ฟเวอร์ด้วยซอฟต์แวร์หรือการกำหนดค่า

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

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

บทเรียน “ตัวจัดเตรียม local และ remote exec” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ตัวจัดเตรียม local และ remote exec”

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

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

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

บทเรียน “ตัวจัดเตรียม local และ remote exec” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การสืบค้นข้อมูลด้วยแหล่งข้อมูล
  2. ตัวจัดเตรียม local และ remote exec
  3. ทรัพยากร Null และทริกเกอร์
  4. การใช้ข้อมูลภายนอกและแม่แบบ
← กลับไปที่ DevOps Bootcamp