การเปิดตัวของ sshsync ซึ่งเป็นเครื่องมือคำสั่งใหม่สำหรับการจัดการการเชื่อมต่อ SSH หลายรายการ ได้จุดประกายการถกเถียงอย่างคึกคักในหมู่ผู้ดูแลระบบและมืออาชีพด้าน DevOps เกี่ยวกับประโยชน์การใช้งานเมื่อเทียบกับโซลูชันที่มีอยู่แล้วอย่าง Ansible เครื่องมือที่พัฒนาด้วย Python ซึ่งช่วยให้ผู้ใช้สามารถรันคำสั่ง shell บนเซิร์ฟเวอร์ระยะไกลหลายเครื่องพร้อมกัน ได้รับการตอบรับที่หลากหลายจากชุมชนเทคนิค
ความซ้ำซ้อนของเครื่องมือ vs. กรณีการใช้งานเฉพาะทาง
คำวิจารณ์หลักที่มีต่อ sshsync มุ่งเน้นไปที่ความซ้ำซ้อนที่รับรู้ได้ ผู้แสดงความคิดเห็นหลายคนตั้งคำถามถึงความจำเป็นของเครื่องมือจัดการ SSH อีกตัวหนึ่ง ในเมื่อมีโซลูชันที่แข็งแกร่งอย่าง Ansible, pssh หรือแม้แต่สคริปต์ shell พื้นฐานที่มี SSH และ SCP อยู่แล้ว ผู้แสดงความคิดเห็นรายหนึ่งระบุว่าการตั้งค่าคีย์ SSH และรายการกับ Ansible ใช้เวลาเพียง 10 นาที แม้ว่าคุณจะทำมันเป็นครั้งแรก ซึ่งบ่งชี้ว่าเครื่องมือที่มีอยู่แล้วสามารถแก้ปัญหาที่ sshsync ต้องการจัดการได้อยู่แล้ว
อย่างไรก็ตาม ผู้สนับสนุนเครื่องมือที่เรียบง่ายกว่าอย่าง sshsync และ pssh ได้เน้นย้ำถึงสถานการณ์เฉพาะที่เครื่องมือเบาๆ เหล่านี้มีจุดเด่น ผู้ใช้รายหนึ่งอธิบายว่าเครื่องมืออย่าง pssh มีข้อได้เปรียบในบางสภาพแวดล้อม:
เหตุผลที่ผมพบว่ามันดีกว่า Ansible คือ: มันใช้ไวยากรณ์และตัวเลือกเดียวกันกับ SSH ธรรมดา เพียงแต่รันบนโฮสต์หลายเครื่อง ดังนั้นถ้าคุณรู้จัก SSH อยู่แล้ว คุณก็รู้วิธีใช้มัน... ไม่ต้องการการติดตั้งเพิ่มเติมบนเครื่องเป้าหมาย Ansible ต้องการการติดตั้ง python3 บนเครื่องเป้าหมาย ซึ่งไม่ได้รับประกันในทุกสภาพแวดล้อม (เช่น อุปกรณ์ฝังตัว)
มุมมองนี้เน้นให้เห็นถึงความแตกต่างที่แท้จริงในชุมชน DevOps ระหว่างผู้ที่ชอบระบบจัดการการกำหนดค่าที่ครอบคลุม และผู้ที่ให้คุณค่ากับเครื่องมือที่เรียบง่ายและเฉพาะทางมากกว่าสำหรับงานเฉพาะ
เครื่องมือจัดการ SSH ทางเลือกที่กล่าวถึงในการสนทนา:
- Ansible - ระบบจัดการการกำหนดค่าแบบสมบูรณ์ที่ต้องใช้ Python บนเครื่องเป้าหมาย
- pssh - เครื่องมือสำหรับการดำเนินคำสั่ง SSH แบบขนานที่มีการกำหนดค่าอย่างง่าย
- Fabric - ไลบรารี Python สำหรับทำให้การใช้งาน SSH ง่ายขึ้น
- pyinfra - เครื่องมือจัดการโครงสร้างพื้นฐานที่ใช้ Python
- GoSSHa - เครื่องมือที่พัฒนาด้วย Go ที่ปรับให้เหมาะกับการส่งต่อตัวแทน SSH ในระดับใหญ่
- GNU Parallel - เครื่องมือสำหรับการดำเนินงานแบบขนาน
- PowerShell Invoke-Command - การดำเนินคำสั่งระยะไกลบนพื้นฐานของ Windows
ข้อพิจารณาด้านขนาดและประสิทธิภาพ
ข้อมูลเชิงเทคนิคที่น่าสนใจมาจากผู้ใช้ที่เคยสร้างเครื่องมือคล้ายกันสำหรับการจัดการเซิร์ฟเวอร์ประมาณ 3,000 เครื่อง พวกเขาเน้นย้ำถึงความท้าทายทางเทคนิคเฉพาะเกี่ยวกับการตรวจสอบสิทธิ์ของตัวแทน SSH ในระดับใหญ่ โดยระบุว่าโซลูชันที่พัฒนาด้วย Go ของพวกเขาช่วยให้คุณสามารถทำการส่งต่อตัวแทน SSH ที่ทำงานได้จริงในระดับใหญ่โดยการจำกัดการทำงานพร้อมกันเมื่อสื่อสารกับตัวแทน SSH
สิ่งนี้ทำให้เกิดคำถามสำคัญเกี่ยวกับความสามารถด้านประสิทธิภาพของ sshsync ในขณะที่เครื่องมือนี้นำเสนอการดำเนินการคำสั่งพร้อมกันบนเซิร์ฟเวอร์หลายเครื่อง เอกสารไม่ได้กล่าวถึงว่ามันจะทำงานอย่างไรกับการเชื่อมต่อหลายร้อยหรือหลายพันการเชื่อมต่อ—ซึ่งเป็นสถานการณ์ทั่วไปในสภาพแวดล้อมองค์กรขนาดใหญ่
ช่องว่างของคุณสมบัติและข้อจำกัด
ผู้แสดงความคิดเห็นหลายคนระบุข้อจำกัดด้านฟังก์ชันการทำงานใน sshsync ที่อาจขัดขวางการนำไปใช้ ผู้ใช้รายหนึ่งถามเกี่ยวกับการจัดการคำสั่งที่ต้องการข้อมูลจากผู้ใช้ เช่น พรอมต์รหัสผ่าน sudo นักพัฒนายอมรับว่าไม่มีวิธีรับข้อมูลจากผู้ใช้ระหว่างการทำงาน ซึ่งหมายความว่าผู้ใช้จำเป็นต้องกำหนดค่า sudo แบบไม่ต้องใช้รหัสผ่าน—ซึ่งเป็นข้อจำกัดที่สำคัญสำหรับสภาพแวดล้อมที่ให้ความสำคัญกับความปลอดภัย
คนอื่นๆ แนะนำการเพิ่มคุณสมบัติที่อาจทำให้เครื่องมือนี้น่าสนใจมากขึ้น เช่น การเพิ่มพารามิเตอร์ตัวกรองสำหรับเครื่อง VM ของผู้ให้บริการคลาวด์ คล้ายกับที่ผู้ใช้บางรายได้ใช้ในสคริปต์ที่กำหนดเอง
คุณสมบัติหลักของ sshsync:
- รันคำสั่ง shell พร้อมกันบนเซิร์ฟเวอร์หลายเครื่อง
- การกำหนดค่าแบบกลุ่มสำหรับการเลือกเป้าหมายเซิร์ฟเวอร์เฉพาะ
- พุช/ดึงไฟล์ระหว่างโฮสต์ในเครื่องและโฮสต์ระยะไกล
- โหมดทดลองรัน เพื่อดูตัวอย่างการทำงานก่อนดำเนินการจริง
- ใช้การตั้งค่า SSH ที่มีอยู่จาก ~/.ssh/config
- ไม่จำเป็นต้องมีการติดตั้งเพิ่มเติมบนเครื่องเป้าหมาย
- เขียนด้วย Python 3.10+
มุมมองของนักพัฒนา
ผู้สร้าง sshsync ได้นำเสนอมุมมองที่ถ่อมตัวเกี่ยวกับโครงการนี้ โดยยอมรับว่าไม่ได้มีเจตนาที่จะแข่งขันกับเครื่องมือที่มีอยู่แล้ว ผมรู้สึกเบื่อ นี่ดูเหมือนเป็นโครงการที่น่าสนใจที่จะทำนอกเวลางาน พวกเขาอธิบาย และเสริมว่าเพื่อนร่วมงานพบว่ามันมีประโยชน์ ซึ่งนำไปสู่การเปิดตัวสู่สาธารณะ
สิ่งนี้เน้นให้เห็นถึงแง่มุมสำคัญของการพัฒนาโอเพนซอร์ส—ไม่ใช่ทุกเครื่องมือที่จำเป็นต้องปฏิวัติอุตสาหกรรม บางครั้งโครงการก็เป็นประสบการณ์การเรียนรู้ แก้ปัญหาความต้องการส่วนตัวเฉพาะ หรือเติมเต็มช่องว่างเล็กๆ ที่เครื่องมือหลักอาจมองข้าม
แม้จะมีคำวิจารณ์บางอย่างเกี่ยวกับเอกสารที่สร้างโดย AI และการขาดการวิจัยเกี่ยวกับโซลูชันที่มีอยู่ การตอบสนองอย่างจริงใจของนักพัฒนาแสดงให้เห็นถึงจิตวิญญาณที่แท้จริงของการแบ่งปันที่ขับเคลื่อนชุมชนโอเพนซอร์สส่วนใหญ่
การอภิปรายเกี่ยวกับ sshsync เปิดเผยให้เห็นถึงความตึงเครียดที่กว้างขึ้นในโลกของ DevOps ระหว่างแพลตฟอร์มที่ครอบคลุมและเครื่องมือที่เรียบง่ายและเฉพาะทางมากกว่า ในขณะที่ Ansible นำเสนอโซลูชันการจัดการการกำหนดค่าที่สมบูรณ์พร้อมความสามารถที่กว้างขวาง เครื่องมือเช่น sshsync ดึงดูดผู้ที่มองหาทางเลือกที่เบากว่าสำหรับงานเฉพาะโดยไม่มีภาระของการเรียนรู้ระบบที่ซับซ้อน
ดังที่ผู้แสดงความคิดเห็นรายหนึ่งสังเกตอย่างตรงไปตรงมา Ansible เป็นหนึ่งในตัวอย่างที่ดีที่สุดของความซับซ้อนที่ไม่จำเป็นที่ผมเคยมีปฏิสัมพันธ์ด้วย—ความรู้สึกที่อธิบายว่าทำไมทางเลือกที่เรียบง่ายกว่ายังคงเกิดขึ้นแม้จะมีความเป็นผู้ใหญ่ของพื้นที่การจัดการการกำหนดค่า
ไม่ว่า sshsync จะได้รับการยอมรับอย่างแพร่หลายหรือไม่ก็ตาม แต่การสนทนาที่มันได้จุดประกายขึ้นเน้นให้เห็นถึงความต้องการอย่างต่อเนื่องสำหรับเครื่องมือที่สร้างความสมดุลระหว่างพลังและความเรียบง่ายในสภาพแวดล้อมไอทีที่ซับซ้อนมากขึ้นเรื่อยๆ ในปัจจุบัน
อ้างอิง: sshsync