Pyinfra: เครื่องมืออัตโนมัติโครงสร้างพื้นฐานด้วย Python
(pyinfra.com)- เครื่องมือสำหรับทำให้โครงสร้างพื้นฐานเป็นอัตโนมัติด้วย Python
- ขยายได้อย่างรวดเร็วตั้งแต่เซิร์ฟเวอร์เครื่องเดียวไปจนถึงหลายพันเครื่อง
- เหมาะสำหรับการรันคำสั่งเฉพาะกิจ การดีพลอยบริการ และการจัดการคอนฟิก
เหตุผลที่ควรใช้ pyinfra
- รันได้เร็วมากพร้อมประสิทธิภาพที่คาดการณ์ได้บนเป้าหมายหลายพันรายการ
- ดีบักได้ทันทีด้วยเอาต์พุต stdin/stdout/stderr แบบเรียลไทม์ (
-vvv) - รองรับ diff และ dry run ก่อนนำการเปลี่ยนแปลงไปใช้ เพื่อให้การทำงานมีความเป็น idempotent (Idempotent operations)
- ขยายความสามารถได้ด้วยระบบนิเวศแพ็กเกจ Python ทั้งหมด
- รันได้แบบไม่ต้องใช้เอเจนต์บนอุปกรณ์ใดก็ตามที่เชื่อมต่อผ่าน SSH ได้
- ทำงานร่วมกับคอนเน็กเตอร์อย่าง Docker, Terraform, Vagrant และอื่น ๆ
เริ่มต้นอย่างรวดเร็ว
- ติดตั้ง pyinfra ด้วยคำสั่ง
pip install pyinfra - สามารถรันคำสั่งผ่าน SSH ได้
pyinfra my-server.net exec -- echo "hello world"
- สามารถระบุเป้าหมายเป็น Docker, เครื่องโลคัล และคอนเน็กเตอร์อื่น ๆ ได้
pyinfra @docker/ubuntu exec -- echo "Hello world"pyinfra @local exec -- echo "Hello world"
- นอกเหนือจากการรันคำสั่ง ยังสามารถใช้ operations เพื่อกำหนดสถานะได้
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
- สามารถบันทึกสิ่งนี้เป็นไฟล์ Python เช่น
deploy.pyแล้วรันได้ - สามารถดีพลอยทุกอย่างได้โดยผสาน inventory, operations และโค้ด Python เข้าด้วยกัน
สำหรับรายละเอียดเพิ่มเติม ให้ดูคู่มือเริ่มต้นใช้งาน คู่มือการใช้ operations การใช้งาน inventory และ data รวมถึง global arguments และการใช้งาน CLI หรือดูตัวอย่างที่มีเอกสารประกอบ
ความเห็นของ GN⁺
- ในฐานะเครื่องมือดีพลอย ความปลอดภัยและการควบคุมเป็นสิ่งสำคัญ แต่เครื่องมือนี้เน้นฟังก์ชันด้านการจัดการโครงสร้างพื้นฐาน จึงอาจมีโอกาสเกิดปัญหาในกระบวนการดีพลอยได้
- ตัว pyinfra เองไม่ได้บังคับใช้แนวปฏิบัติที่ดีที่สุดด้านการดีพลอย ดังนั้นภายในทีมต้องกำหนดกติกาและดูแลจัดการกันเอง
- การใช้ Python เป็นภาษาทำให้ใช้ประโยชน์จากระบบนิเวศ Python ได้และเป็นมิตรกับนักพัฒนา ซึ่งเป็นข้อดี แต่ก็มีอุปสรรคในการเริ่มต้นใช้งานเมื่อเทียบกับเครื่องมือดีพลอยทั่วไปอื่น ๆ
- ดูเป็นเครื่องมือที่เหมาะกับสถานการณ์การดีพลอยที่เรียบง่ายและยืดหยุ่น ส่วนการดีพลอยระดับองค์กรที่ซับซ้อน เครื่องมือที่พัฒนามากกว่าอย่าง Ansible หรือ Puppet อาจเหมาะสมกว่า
- แม้จะเป็นข้อดีที่ทำงานร่วมกับเครื่องมือ IaC อย่าง Terraform หรือ Pulumi ได้ แต่ก็ยังน่าสงสัยว่ามีงานจำนวนมากแค่ไหนที่เครื่องมือเหล่านี้ทำเองไม่ได้
3 ความคิดเห็น
ผมคิดว่า Ansible จำเป็นต้องมีวิธีนิยาม playbook ที่นอกเหนือจาก YAML อยู่เหมือนกัน Ansible นำความสามารถของ Python มาทำใหม่แล้วให้ใช้ผ่าน jinja filter เพื่อแปลงข้อมูล ซึ่งผมมองว่าเป็นความสิ้นเปลืองอย่างมาก ถ้า schema ของ fact ใน playbook ตรงกับอินพุตของ task ก็อาจไม่เป็นปัญหา แต่ในโลกความเป็นจริงมักหลีกเลี่ยงไม่ได้ที่จะต้องมีการแปลงข้อมูลระหว่างทาง ผมยังรู้สึกว่าการเลือกใช้ Jinja สำหรับการแปลงข้อมูลก็น่าจะเป็นการตัดสินใจทางเทคนิคที่ค่อนข้างมองสั้นเกินไปด้วย
pyinfra - เครื่องมืออัตโนมัติโครงสร้างพื้นฐานที่ใช้ Python
ตอนที่ออกเวอร์ชัน 1.0 เคยนำมาโพสต์ครั้งหนึ่งแล้ว แต่ก็ยังมีการอัปเดตอย่างต่อเนื่องและคึกคัก
ตอนนี้อยู่ที่เวอร์ชัน 2.92 และเวอร์ชัน 3.0 ซึ่งขณะนี้เป็นเบต้า ก็มีกำหนดจะออกในเร็ว ๆ นี้
ความคิดเห็นบน Hacker News
สรุป: