ทำความเข้าใจเครื่องมือ DevOps: Ansible และ Terraform
เผยแพร่แล้ว: 2021-08-31Ansible และ Terraform – เคยได้ยินเกี่ยวกับเครื่องมือ DevOps เหล่านี้ไหม บทความนี้เกี่ยวกับพวกเขาและความแตกต่าง
Infrastructure as Code (IaC) เป็นส่วนหลักของโดเมน DevOps และเป็นทักษะหลักที่วิศวกร DevOps ต้องมี IaC ใช้เพื่อจัดเตรียมและจัดการโครงสร้างพื้นฐานด้านไอทีโดยใช้รหัสการกำหนดค่าที่เป็นไฟล์คำจำกัดความที่เครื่องอ่านได้ เมื่อใช้แนวทางวิศวกรรมซอฟต์แวร์นี้ในการดำเนินการ คุณสามารถทำให้โครงสร้างพื้นฐานด้านไอทีเป็นแบบอัตโนมัติได้โดยใช้สคริปต์การเขียนโปรแกรม
เมื่อวิศวกร DevOps คิดเกี่ยวกับระบบอัตโนมัติโดยใช้โค้ดใน DevOps เครื่องมือ DevOps สองรายการจะถูกเน้นเสมอ ได้แก่ Terraform และ Ansible ทั้งสองเป็นเครื่องมือที่มีคะแนนสูงสุดและใช้กันอย่างแพร่หลายในโดเมน DevOps แต่หลายคนยังใหม่ต่อเครื่องมือเหล่านี้และไม่ทราบความแตกต่างที่สำคัญระหว่างเครื่องมือเหล่านี้ ในบทความนี้ ผมจะพูดถึง Terraform, Ansible และความแตกต่างที่สำคัญ
Terraform คืออะไร?
Terraform เป็นโครงสร้างพื้นฐานโอเพ่นซอร์สในฐานะเครื่องมือซอฟต์แวร์โค้ดที่สร้างโดย HashiCorp คุณสามารถจัดการโครงสร้างพื้นฐานด้านไอทีที่สมบูรณ์ได้โดยใช้ภาษาประกาศที่ใช้งานง่ายมากใน Terraform ใน Terraform คุณต้องประกาศและกำหนดค่าทรัพยากรที่จำเป็นสำหรับโครงสร้างพื้นฐาน จากนั้นจะดูแลการพึ่งพาที่จำเป็นทั้งหมดและสร้างโครงสร้างพื้นฐานสำหรับคุณ
Terraform เปิดตัวเมื่อไม่กี่ปีที่ผ่านมาในปี 2014 แต่อัตราการยอมรับของเครื่องมือนี้ยอดเยี่ยมมาก มันมีคุณสมบัติที่ยอดเยี่ยมที่ช่วยให้การประสานกันที่สมบูรณ์ของ IT infra ง่ายขึ้น เนื่องจากการกำหนดค่าโครงสร้างพื้นฐานทั้งหมดในองค์กรขนาดใหญ่นั้นซับซ้อน คุณยังสามารถรวมเครื่องมือนี้กับผู้ให้บริการระบบคลาวด์ยอดนิยมทั้งหมด เช่น AWS, GCP เป็นต้น
องค์กรไอทีส่วนใหญ่มีสภาพแวดล้อมการทำงานที่แตกต่างกันสำหรับทีมที่แตกต่างกัน ดังนั้นทีมพัฒนา จัดเตรียม หรือ QA และทีมผลิตจะมีสภาพแวดล้อมที่แยกจากกัน หลังจากผ่านไประยะหนึ่ง การจัดการสภาพแวดล้อมการผลิตไม่ใช่เรื่องง่าย เพื่อให้การจัดการง่ายขึ้น องค์กรต่างๆ ใช้ Terraform เพื่อประมวลทุกอย่างในสภาพแวดล้อมการผลิต ด้วยการใช้ terraform คุณสามารถหมุนสภาพแวดล้อมของนักพัฒนาและการแสดงละครได้อย่างรวดเร็ว ซึ่งจะคล้ายกับสภาพแวดล้อมที่ใช้งานจริงมาก ซึ่งช่วยในการพัฒนาและทดสอบแอปพลิเคชันในแพลตฟอร์มที่คล้ายกับการผลิต
องค์กรขนาดใหญ่หลายแห่ง เช่น Starbucks, Slack, Uber เป็นต้น ใช้ประโยชน์จากฟีเจอร์ Terraform ครั้งใหญ่
นี่คือข้อดีบางประการของ Terraform:
- จัดการบริการโดยใช้ GUI อย่างง่าย
- อธิบายโครงสร้างพื้นฐานสำหรับ GCP, AWS, Azure และอื่นๆ โดยใช้ภาษาที่ตรงไปตรงมา (ประกาศ)
- รองรับการควบคุมการเข้าถึงตามบทบาท (RBAC) เพื่อความปลอดภัย
- สามารถจัดเตรียมด้วย OpenStack, Azure, AWS, GCP ได้อย่างง่ายดายโดยใช้ APIs
- มันเป็นไปตามสถาปัตยกรรมแบบไม่มีมาสเตอร์ ดังนั้นจึงไม่มีโหนดหลักสำหรับการติดตามการอัปเดตการกำหนดค่าทั้งหมด
- ทีมภายในองค์กรสามารถทำงานร่วมกันบนโครงสร้างพื้นฐานได้อย่างง่ายดายโดยใช้รีจิสทรี Terraform
- การผสานรวมกับแพลตฟอร์มการรวมอย่างต่อเนื่อง เช่น GitLab, Jenkins, Travis สำหรับการปรับใช้ท่อส่ง DevOps นั้นเป็นเรื่องง่าย
Ansible คืออะไร?
Ansible เป็นเครื่องมือจัดการการกำหนดค่าในโดเมน DevOps ที่ใช้ในการทำงานด้านไอทีทั้งหมดโดยอัตโนมัติ Ansible เป็นเครื่องมือโอเพ่นซอร์สที่ใช้ทั้งภาษาประกาศและขั้นตอนสำหรับการจัดการการกำหนดค่า เครื่องมือนี้ได้รับการสนับสนุนที่โดดเด่นจากผู้ให้บริการระบบคลาวด์ยอดนิยมทั้งหมด และทำให้แอปพลิเคชัน เครือข่าย โครงสร้างพื้นฐาน ความปลอดภัย คอนเทนเนอร์ ฯลฯ ทำงานโดยอัตโนมัติ ซึ่งช่วยลดความซับซ้อนในกระบวนการ DevOps ได้อย่างมาก วิศวกร DevOps จำนวนมากจึงต้องการใช้เครื่องมือนี้
Ansible ทำให้โครงสร้างพื้นฐานที่ซับซ้อนที่สุดเป็นแบบอัตโนมัติได้อย่างง่ายดายโดยใช้ไฟล์การกำหนดค่า YAML แบบง่าย (มนุษย์สามารถอ่านได้) ใช้ไฟล์โค้ดที่เขียนด้วย YAML เพื่อดำเนินการจัดการการกำหนดค่า ไฟล์รหัสนี้เรียกว่า Ansible Playbook Ansible ไม่มีเอเจนต์และมีต้นแบบที่ผลักดันการกำหนดค่าทั้งหมดที่จำเป็นในการจัดการและอัปเดตแอปพลิเคชันบนเซิร์ฟเวอร์ระยะไกล
ใน Ansible คุณต้องใช้ SSH เพื่อเชื่อมต่อกับโหนดในโครงสร้างพื้นฐานด้านไอที เมื่อการเชื่อมต่อกับโหนดสำเร็จ Ansible จะผลักดันการกำหนดค่าล่าสุดโดยใช้โมดูล Ansible เพื่อติดตั้งหรืออัปเดตหรือลบแอปพลิเคชัน คุณยังมีตัวเลือกในการเรียกใช้คำสั่งเฉพาะกิจใน Ansible เพื่อทำงานเล็กๆ ได้อย่างรวดเร็ว
นี่คือข้อดีและคุณสมบัติบางประการของ Ansible:
- เนื่องจาก Ansible ไม่มีเอเจนต์ คุณไม่จำเป็นต้องติดตั้งและรันเอเจนต์บนโหนดเพื่อทำงาน
- เนื่องจาก Ansible สร้างขึ้นบน Python มันมีไลบรารีมากมายเหลือเฟือที่จะนำเสนอใน Python และนั่นเป็นเหตุผลว่าทำไมมันจึงเป็นมิตรกับนักพัฒนามาก
- ให้การพิสูจน์ตัวตนที่ปลอดภัยโดยใช้ SSH
- Ansible Tower มอบคุณสมบัติการแสดงภาพระดับองค์กร
- ต้นแบบส่งการกำหนดค่าล่าสุดบนเซิร์ฟเวอร์ระยะไกลเพื่อทำการเปลี่ยนแปลงโครงสร้างพื้นฐาน ดังนั้นจึงสนับสนุนโมเดลแบบพุช
- ใช้ไฟล์ YAML ที่มนุษย์อ่านได้สำหรับการจัดการการกำหนดค่า ดังนั้นจึงไม่จำเป็นต้องมีทักษะในการเขียนโค้ดเพิ่มเติม
Terraform กับ Ansible: ความแตกต่าง
Orchestration กับ Configuration Management
Ansible เป็นเครื่องมือจัดการการกำหนดค่า และ Terraform เป็นเครื่องมือประสาน นี่คือความแตกต่างพื้นฐานที่สุดระหว่าง Terraform และ Ansible แม้ว่าคุณลักษณะบางอย่างจะเหมือนกันระหว่างเครื่องมือเหล่านี้ แต่ก็ยังมีความแตกต่างกัน

Ansible ถูกใช้เพื่อเพิ่ม อัปเดต ลบ และจัดการการกำหนดค่าของโครงสร้างพื้นฐานด้านไอที ในขณะที่ Terraform ใช้เพื่อประกาศส่วนประกอบโครงสร้างพื้นฐานและประสานกับผู้ให้บริการระบบคลาวด์หลายราย
ขั้นตอนเทียบกับการประกาศ
Terraform ใช้ภาษาการกำหนดค่าที่เปิดเผยเพื่อประกาศทรัพยากรของโครงสร้างพื้นฐานด้านไอที Ansible ใช้ทั้งภาษาขั้นตอนและภาษาประกาศสำหรับการจัดการการกำหนดค่า วิธีดำเนินการใช้ใน Ansible เพื่อเรียกใช้คำสั่งเฉพาะกิจและเข้าถึงการกำหนดค่าโครงสร้างพื้นฐานที่ต้องการ โมดูล ansible ใช้วิธีการประกาศ
โครงสร้างพื้นฐานที่เปลี่ยนแปลงได้กับโครงสร้างพื้นฐานที่ไม่เปลี่ยนรูป
คุณสามารถสร้างโครงสร้างพื้นฐานที่ไม่แน่นอนได้โดยใช้โครงสร้างพื้นฐาน Ansible และโครงสร้างพื้นฐานที่ไม่เปลี่ยนรูปแบบได้โดยใช้ Terraform Ansible จัดการและกำหนดค่าซอฟต์แวร์ของโครงสร้างพื้นฐานบนเซิร์ฟเวอร์เดียวกัน เมื่อคุณผลักดันการอัปเดตการกำหนดค่าเพิ่มเติม สภาพแวดล้อมการใช้งานจริงจะซับซ้อนและนำไปสู่จุดบกพร่องจำนวนมากที่ยากต่อการระบุและแก้ไข
Terraform ใช้อิมเมจ Docker ใหม่เป็นหลักสำหรับการปรับใช้บนเซิร์ฟเวอร์ Terraform สร้างอิมเมจ Docker ใหม่เพื่ออัปเดตซอฟต์แวร์ใดๆ บนโครงสร้างพื้นฐาน ปรับใช้อิมเมจนั้นบนเซิร์ฟเวอร์ทั้งหมด และลบอิมเมจ Docker การกำหนดค่าเก่า ดังนั้นแม้หลังจากอัปเดตการกำหนดค่าหลายครั้ง สภาพแวดล้อมก็ยังคงมีเสถียรภาพ
ปรมาจารย์กับมาสเตอร์เลส
Ansible มีสถาปัตยกรรมเครื่องหลักที่รับผิดชอบในการจัดเก็บสถานะโครงสร้างพื้นฐานที่สมบูรณ์และผลักดันการอัพเดตการกำหนดค่าใหม่บนเซิร์ฟเวอร์ระยะไกล นั่นคือเหตุผลที่เรียกว่าโมเดลการปรับใช้แบบพุชใน ansible
ใน Terraform ไม่มีระบบมาสเตอร์แยกต่างหาก อย่างไรก็ตาม เมื่อทำงานกับผู้ให้บริการระบบคลาวด์ เช่น GCP, AWS ผ่าน API เซิร์ฟเวอร์ API จะเป็นเครื่องหลักในกรณีนั้น
ชุมชน
ในการเปรียบเทียบ ชุมชนของ Ansible นั้นแข็งแกร่งกว่า Terraform ตัวอย่างเช่น Ansible มี 45 สาขา, 49.7K ดาว, 51,836 คอมมิต และ 21K ส้อมบน GitHub ในขณะที่ Terraform มี 183 สาขา, 28.7K ดาว, 28,778 คอมมิต และ 6.9K ส้อม ปัจจุบัน ชุมชนของเครื่องมือทั้งสองกำลังเติบโตอย่างรวดเร็ว
จะเลือกอันไหนดี Ansible หรือ Terraform?
ฉันจะบอกว่านี่ไม่ใช่การเปรียบเทียบระหว่างแอปเปิ้ลกับแอปเปิ้ล คำตอบสำหรับคำถามนี้ขึ้นอยู่กับข้อกำหนดทางธุรกิจ คุณสามารถใช้ Ansible สำหรับการจัดการการกำหนดค่า เพิ่ม Terraform เพื่อจัดการโครงสร้างพื้นฐานด้านไอที หากองค์กรของคุณทำงานร่วมกับผู้ให้บริการระบบคลาวด์ การทำงานกับ Terraform จะเป็นตัวเลือกที่ดีกว่า เครื่องมือทั้งสองมีข้อจำกัดและประโยชน์ และทั้งคู่เป็นเครื่องมือยอดนิยมในโดเมน DevOps ดังนั้น คุณสามารถเลือกเครื่องมือใดก็ได้ ขึ้นอยู่กับคำชี้แจงปัญหาที่คุณพยายามแก้ไข
นี่คือตารางเปรียบเทียบที่สรุปความแตกต่างระหว่าง Ansible และ Terraform
เกณฑ์ | Ansible | Terraform |
ก่อตั้งขึ้นเมื่อ | 2012 | 2014 |
พัฒนาโดย | Ansible Inc. / Red Hat Inc. | HashiCorp |
เขียนใน | Python | ไป |
พิมพ์ | เครื่องมือจัดการการกำหนดค่า | เครื่องมือประสาน |
ภาษา | ใช้ภาษาขั้นตอนและภาษาประกาศ | ใช้ภาษาประกาศ |
โครงสร้างพื้นฐาน | รองรับโครงสร้างพื้นฐานที่ไม่แน่นอน | รองรับโครงสร้างพื้นฐานที่ไม่เปลี่ยนรูป |
การจัดการวงจรชีวิต | ไม่ | ใช่ |
บรรจุภัณฑ์และเทมเพลท | รองรับอย่างเต็มที่ | บางส่วน |
VM Provisioning and Networking | บางส่วน | รองรับอย่างเต็มที่ |
ชุมชนและการสนับสนุน | 49K+ ดาว | 28K+ ดาว |
บทสรุป
นั่นคือทั้งหมดที่เกี่ยวกับ Ansible, Terraform และความแตกต่างของพวกเขา เครื่องมือ DevOps ทั้งสองแบบมีการใช้งานอย่างมากในสภาพแวดล้อมการผลิต และมักมีอยู่ในองค์กรขนาดใหญ่ส่วนใหญ่ ดังนั้นสิ่งที่คุณรอ? ไปข้างหน้าและเลือกเครื่องมือที่เหมาะสมกับความต้องการทางธุรกิจขององค์กรของคุณ คุณสามารถเริ่มต้นด้วยการเรียนรู้เครื่องมืออย่างใดอย่างหนึ่ง แต่การรู้ทั้งสองอย่างจะช่วยให้คุณได้เปรียบในอุตสาหกรรมที่หลากหลาย
คุณอาจจะชอบ:
แพ็คเกจโฮสติ้ง Repo ที่ดีที่สุดสำหรับโครงการ DevOps ของคุณ