Terraform คืออะไร และเหตุใดจึงสั่นสะเทือน

เผยแพร่แล้ว: 2024-03-12

การจัดการการกำหนดค่าเป็นส่วนสำคัญของระเบียบวิธี DevOps และเครื่องมือต่างๆ เช่น Ansible, Chef, Puppet, Terraform หรือ SaltStack ถือเป็นหัวใจสำคัญของระบบนิเวศการพัฒนาซอฟต์แวร์
ภูมิประเทศ

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

Terraform เป็นเครื่องมือประสานการกำหนดค่าที่ทำงานร่วมกับคลาวด์ใดก็ได้ ไม่ว่าจะเป็นระบบส่วนตัวในองค์กรหรือสาธารณะ และช่วยให้ออกแบบ จัดการ และปรับปรุงโครงสร้างพื้นฐานในรูปแบบโค้ดได้อย่างปลอดภัยและสะดวกสบาย Terraform ซึ่งเป็นส่วนหนึ่งของ Hashicorp รวมถึง Vagrant, Packer, Consul, Vault และ Nomad ช่วยจัดเตรียมแอปพลิเคชันใดๆ ที่เขียนในภาษาใดๆ ให้กับโครงสร้างพื้นฐานใดๆ

นี่คือประโยชน์ของการใช้ Terraform แทน Ansible, Chef, Puppet หรือ SaltStack:

  • Orchestration ไม่ใช่แค่การกำหนดค่าเท่านั้น
  • โครงสร้างพื้นฐานที่ไม่เปลี่ยนรูป
  • โค้ดประกาศ ไม่ใช่โค้ดขั้นตอน
  • สถาปัตยกรรมเฉพาะไคลเอ็นต์เท่านั้น

ด้านล่างนี้เราจะอธิบายรายละเอียดเพิ่มเติมว่าเหตุใดจึงสำคัญมาก

Terraform เครื่องมือประสานเซิร์ฟเวอร์

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

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

โครงสร้างพื้นฐานที่ไม่เปลี่ยนรูป

Chef, Salt, Puppet หรือ Ansible จะต้องเรียกใช้การอัปเดตซอฟต์แวร์ ดังที่กล่าวไปแล้ว เซิร์ฟเวอร์ทุกเครื่องจะมีบันทึกการอัปเดตที่ไม่ซ้ำใครตลอดวงจรการใช้งาน สิ่งนี้มักจะนำไปสู่สิ่งที่เรียกว่าการกำหนดค่าที่ลอยไป เมื่อความแตกต่างในการกำหนดค่าเหล่านี้นำไปสู่จุดบกพร่อง ซึ่งสามารถใช้เป็นช่องโหว่และการละเมิดความปลอดภัยได้ Terraform จัดการปัญหานี้โดยใช้แนวทาง โครงสร้างพื้นฐานที่ไม่เปลี่ยนรูป แบบ โดยที่การอัปเดตพารามิเตอร์ใหม่ทุกครั้งจะสร้างสแน็ปช็อตการกำหนดค่าแยกต่างหาก ซึ่งหมายถึงการปรับใช้เซิร์ฟเวอร์ใหม่และยกเลิกการจัดเตรียมเซิร์ฟเวอร์เก่าตามความจำเป็น ด้วยวิธีนี้ การอัปเดตสภาพแวดล้อมการพัฒนาจะเป็นไปอย่างราบรื่น ง่ายดาย และป้องกันข้อบกพร่องโดยสมบูรณ์ ในขณะที่การกลับไปใช้การกำหนดค่าก่อนหน้านี้ก็ทำได้ง่ายเพียงแค่เลือกสแน็ปช็อตการกำหนดค่าและจัดเตรียมสภาพแวดล้อมใหม่ตามนั้น

รูปแบบโค้ดที่ประกาศ

ในขณะที่ Chef หรือ Ansible บังคับให้คุณเขียนคำแนะนำขั้นตอนทีละขั้นตอนเพื่อให้ได้สถานะที่ต้องการ Terraform, Salt หรือ Puppet ชอบอธิบายสถานะสิ้นสุดของระบบที่ต้องการ และเครื่องมือเองก็เกี่ยวข้องกับการบรรลุเป้าหมายที่ตั้งไว้ ทำไมมันถึงดีกว่า? เนื่องจากมีเทมเพลตจำนวนจำกัดที่สามารถตอบสนองความต้องการการจัดการการกำหนดค่าทั้งหมดได้ และเทมเพลตพื้นฐานที่รวมไว้ทำให้สามารถสร้างโค้ดที่ซับซ้อน แต่สะอาดตาและเป็นโมดูลาร์ได้ ด้วยโค้ดขั้นตอน คุณต้องคิดถึงเหตุการณ์และกระบวนการล่าสุดทั้งหมดที่เกิดขึ้นเพื่อที่จะเขียนคำสั่งที่ชัดเจน ด้วย Terraform คุณเพียงแค่สั่งให้เครื่องมือทำบางอย่างกับสถานะปัจจุบันของระบบ นั่นคือสาเหตุที่ฐานโค้ดยังค่อนข้างเล็กและเข้าใจได้ง่าย

สถาปัตยกรรมเฉพาะไคลเอ็นต์เท่านั้น

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

ข้อเสียของ Terraform

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

สิ่งสำคัญอีกประการหนึ่งที่ควรทราบก็คือ จะต้องมี kapellmeister ตัวเดียวเมื่อใช้เครื่องมือจัดระเบียบนี้ เนื่องจากการดำเนินการเดียวกันจากเทอร์มินัลที่ต่างกันซึ่งมีเวอร์ชัน Terraform ต่างกันอาจทำให้เกิดผลลัพธ์ที่คาดเดาไม่ได้ ปัญหาที่ชัดเจนเกี่ยวกับความร่วมมือและการกำกับดูแลเกิดขึ้น และ ณ ขณะนี้ยังคงต้องได้รับการแก้ไข สิ่งนี้ค่อนข้างจำกัดจำนวนวิศวกร DevOps ที่ทำงานกับฐานโค้ดให้อยู่ที่หนึ่ง (หรือเทอร์มินัลเดียวที่ทำงานเป็นกะ)

ข้อบกพร่องประการที่สามของ Terraform คือได้รับการพัฒนาโดยคำนึงถึงการใช้งานบนคลาวด์เท่านั้น ในขณะที่ข้อบกพร่องอย่าง Salt, Ansible, Puppet ทำงานร่วมกับเซิร์ฟเวอร์ Bare Metal ได้ดี เนื่องจากได้รับการพัฒนาเมื่อ 5+ ปีที่แล้ว โดยไม่มีแนวทางการใช้งานบนคลาวด์เท่านั้น จิตใจ. สิ่งนี้ทำให้เครื่องมือจัดระเบียบการกำหนดค่า Terraform เป็นโซลูชันเฉพาะกลุ่มจริงๆ และไม่ใช่โซลูชันที่เหมาะกับทุกขนาด

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

ประโยชน์ของเทอร์ราฟอร์ม

นอกจากข้อดีที่กล่าวมาข้างต้นแล้ว ยังมีคุณประโยชน์ของ Terraform หลักอีกสองประการที่คุณต้องคำนึงถึง:

  • พกพาสะดวกเป็นพิเศษ — คุณมีเครื่องมือหนึ่งตัวและหนึ่งภาษาสำหรับอธิบายโครงสร้างพื้นฐานสำหรับ Google Cloud, AWS, OpenStack และคลาวด์อื่น ๆ การเปลี่ยนผู้ให้บริการไม่ใช่เรื่องน่าปวดหัวอีกต่อไป
  • ความง่ายดายในการปรับใช้แบบเต็มสแตก — คุณสามารถให้อินสแตนซ์ Amazon ที่ใช้งานคอนเทนเนอร์ Kubernetes พร้อมปริมาณงานของคุณ และจัดการทั้งระบบได้จากเครื่องมือเดียว

เราถือว่า Terraform เป็นหนึ่งในเครื่องมือการจัดการการกำหนดค่าที่ดีที่สุดที่มีอยู่ในปัจจุบัน อาจจะไม่ได้รับความนิยมเท่ากับเครื่องมืออื่นๆ แต่เราเชื่อมั่นว่ามันจะทำให้เกิดแรงผลักดันอย่างมากในปีต่อๆ ไป เราคิดว่าผู้สร้าง Vagrant และ Consul ได้แสดงความเชี่ยวชาญของตนอีกครั้งและส่งมอบผลิตภัณฑ์ที่ยอดเยี่ยม

ข้อสรุป

ด้วยการเป็นโอเพ่นซอร์ส Terraform ได้รวบรวมชุมชนนักพัฒนาที่เข้มแข็งและกระตือรือร้นซึ่งขับเคลื่อนการพัฒนาให้ก้าวไปข้างหน้า เราเชื่อว่าเครื่องมือนี้แข็งแกร่งและจะดีขึ้นและได้รับความนิยมมากขึ้นเมื่อเวลาผ่านไป มันจะไม่ใช่การล่มสลายของ Chef, Ansible หรือ Puppet แต่จะเข้ามาแทนที่ในชุดเครื่องมือ DevOps อย่างถูกต้อง