การจัดการสถานะ Terraform

Kar Cadkar Sthana Terraform



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

สถานะ Terraform

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

เพื่อให้เข้าใจแนวคิดได้ชัดเจน ลองยกตัวอย่าง:







ทรัพยากร 'local_file' 'จอห์น' {

ชื่อไฟล์ = '/home/John.txt'

เนื้อหา = 'ฉันรักสัตว์เลี้ยง'

}

ที่นี่ เราสร้างไฟล์ Terraform ชื่อ “main.tf” ข้างในเป็นทรัพยากรประเภท local_file ชื่อ “John” มีสองคุณสมบัติ: ชื่อไฟล์และเนื้อหา



ประเภททรัพยากร local_file ใช้เพื่อสร้างไฟล์บนระบบไฟล์ในเครื่องของเครื่องที่ Terraform ทำงานอยู่ ในกรณีนี้ ไฟล์จะถูกสร้างขึ้นด้วยชื่อ 'John.txt' ในไดเร็กทอรี '/home' และเนื้อหาของไฟล์คือ 'ฉันรักสัตว์เลี้ยง'



ตอนนี้มาดำเนินการ Terraform Flow - Terraform เริ่มต้น วางแผน และนำไปใช้ เมื่อเราดำเนินการคำสั่ง 'ใช้' ของ Terraform ในโครงการของเราเป็นครั้งแรก Terraform จะสร้างไฟล์สถานะชื่อ 'terraform.tfstate' โดยอัตโนมัติในไดเรกทอรีรากของโครงการ Terraform ของเรา ซึ่งจะรวมข้อมูลทั้งหมดเกี่ยวกับสถานะปัจจุบันของโครงสร้างพื้นฐานในรูปแบบ JSON





นี่คือไฟล์สถานะสำหรับทรัพยากรที่เราสร้างขึ้น:



ตอนนี้ สมมติว่าเราต้องการลบทรัพยากรปัจจุบันและสร้างทรัพยากรประเภท Random_pet ชื่อ “my-pet” ที่มีแอตทริบิวต์ – คำนำหน้า ความยาว และตัวคั่น

ทรัพยากร 'สุ่ม_สัตว์เลี้ยง' 'สัตว์เลี้ยงของฉัน' {

คำนำหน้า = 'นาย'

ความยาว = '1'

ตัวคั่น = '.'

}

ที่นี่ เราลบทรัพยากร local_file และเพิ่มทรัพยากร Random_pet สถานะที่เราต้องการคือมีทรัพยากร Random_pet เท่านั้น มาดำเนินการ Terraform init วางแผนและใช้คำสั่ง

ดังที่แสดงในภาพประกอบก่อนหน้านี้ เมื่อเราดำเนินการคำสั่ง Terraform “วางแผน” คำสั่งดังกล่าวจะแสดงการดำเนินการที่ Terraform ดำเนินการเพื่อไปยังสถานะที่ต้องการ เมื่อเราเรียกใช้คำสั่ง 'ใช้' ของ Terraform ทรัพยากร 'สัตว์เลี้ยงของฉัน' จะถูกสร้างขึ้น และทรัพยากร 'จอห์น' จะถูกลบออก นอกจากนี้ ไฟล์สถานะยังได้รับการอัพเดตโดยการทำลายข้อมูลเมตาของทรัพยากร local_file และเพิ่มข้อมูลเมตาของทรัพยากร Random_pet

นี่คือเนื้อหาของไฟล์สถานะที่อัปเดต:

Terraform the Manage State ทำงานอย่างไร?

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

Terraform รองรับแบ็กเอนด์ในตัวหลายตัว รวมถึงโลคอล, Amazon S3, HashiCorp Consul, Vault และ Azure Storage เรายังสามารถสร้างแบ็กเอนด์แบบกำหนดเองได้หากไม่มีตัวเลือกในตัวที่ตรงตามความต้องการ

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

ความสำคัญของการบริหารราชการแผ่นดิน

การจัดการสถานะในเครื่องมือเช่น Terraform มีความสำคัญเนื่องจากประเด็นสำคัญดังต่อไปนี้:

กำหนดสถานะปัจจุบันของโครงสร้างพื้นฐานของคุณ

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

ติดตามการเปลี่ยนแปลงโครงสร้างพื้นฐานเมื่อเวลาผ่านไป

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

ระบบอัตโนมัติ

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

จัดการการพึ่งพา

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

การกู้คืนระบบ

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

แนวปฏิบัติที่ดีที่สุดสำหรับการบริหารรัฐที่มีประสิทธิภาพ

นี่คือเคล็ดลับบางประการที่เราสามารถปฏิบัติตามเพื่อจัดการสถานะได้อย่างมีประสิทธิภาพ:

ใช้แบ็กเอนด์ระยะไกล

แบ็กเอนด์ระยะไกลให้ประโยชน์หลายอย่างเหนือแบ็กเอนด์ในเครื่อง ช่วยให้ผู้ใช้หลายคนทำงานบนโครงสร้างพื้นฐานเดียวกันได้ และยังมีความปลอดภัยและความน่าเชื่อถือที่ดีกว่าระบบแบ็กเอนด์ในเครื่อง

เปิดใช้งานการกำหนดเวอร์ชัน

การกำหนดเวอร์ชันของไฟล์สถานะ เราสามารถติดตามการเปลี่ยนแปลงเมื่อเวลาผ่านไป และย้อนกลับเป็นเวอร์ชันก่อนหน้าหากจำเป็น นอกจากนี้ การกำหนดเวอร์ชันยังให้แนวทางการตรวจสอบและช่วยให้แน่ใจว่าการเปลี่ยนแปลงได้รับการบันทึกไว้อย่างเหมาะสม

ใช้กลไกล็อค

เราสามารถใช้กลไกการล็อคที่ช่วยป้องกันความขัดแย้งเมื่อผู้ใช้หลายคนทำงานบนโครงสร้างพื้นฐานเดียวกัน Terraform รองรับเครื่องมือล็อคหลายอย่างรวมถึง DynamoDB, Consul และ S3

สำรองไฟล์สถานะของคุณ

เราสามารถกู้คืนจากความเสียหายของข้อมูลได้หากเราสำรองไฟล์สถานะเป็นประจำ เราต้องจัดเก็บข้อมูลสำรองไว้ในตำแหน่งที่ปลอดภัยและปฏิบัติตามข้อกำหนดที่เกี่ยวข้อง

บทสรุป

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