新發布的 sshsync,一款用於管理多個SSH連線的命令列工具,在系統管理員和DevOps專業人士中引發了關於其與 Ansible 等成熟解決方案相比實用性的熱烈討論。這款基於Python的工具允許使用者在多臺遠端伺服器上同時執行shell命令,在技術社群中獲得了褒貶不一的反響。
工具冗餘與專業用例之爭
針對 sshsync 的主要批評集中在其被認為的冗餘性上。許多評論者質疑,當已經存在像 Ansible、pssh 或甚至基本的帶有SSH和SCP的shell指令碼等強大解決方案時,是否還需要另一個SSH管理工具。一位評論者指出,即使是首次設定,用 Ansible 配置SSH金鑰和清單也只需10分鐘,這表明現有工具已經解決了 sshsync 想要解決的問題。
然而,像 sshsync 和 pssh 這樣簡單工具的支持者強調了輕量級替代品在特定場景中的優勢。一位使用者解釋了為什麼在某些環境中 pssh 等工具比 Ansible 更有優勢:
「使用它而非 Ansible 的原因是:它採用與普通SSH相同的語法和選項,只是在多個主機上執行。所以如果你已經瞭解SSH,你就知道如何使用它...它不需要在目標機器上安裝依賴項。Ansible 要求目標機器上安裝 python3。在某些環境中這並不一定能保證(例如嵌入式裝置)。」
這一觀點突顯了DevOps社群中的一個真正分歧:一些人偏好全面的配置管理系統,而另一些人則重視更簡單、更專注於特定任務的工具。
討論中提到的替代SSH管理工具:
- Ansible - 需要在目標機器上安裝Python的完整配置管理系統
- pssh - 具有簡單配置的並行SSH命令執行工具
- Fabric - 簡化SSH使用的Python庫
- pyinfra - 基於Python的基礎設施管理工具
- GoSSHa - 針對大規模SSH代理轉發進行最佳化的Go語言工具
- GNU Parallel - 用於並行執行任務的工具
- PowerShell Invoke-Command - 基於Windows的遠端命令執行工具
規模和效能考量
一位曾為管理約3,000臺伺服器構建類似工具的使用者提供了一個有趣的技術見解。他們強調了SSH代理認證在大規模環境下的特定技術挑戰,指出他們基於Go的解決方案透過限制與SSH代理通訊的併發性,實現了在大規模環境中有效工作的SSH代理轉發。
這引發了關於 sshsync 效能能力的重要問題。雖然該工具提供了跨伺服器的併發命令執行功能,但文件並未說明它在處理數百或數千個連線時的表現如何——這在大型企業環境中是常見場景。
功能缺口和侷限性
幾位評論者指出了 sshsync 的功能侷限性,這可能會阻礙其被廣泛採用。一位使用者詢問了如何處理需要使用者輸入的命令,例如sudo密碼提示。開發者承認目前沒有辦法在傳輸過程中接收使用者輸入,這意味著使用者需要配置無密碼sudo——這對注重安全的環境來說是一個顯著的限制。
其他人則建議了可能使工具更具吸引力的潛在功能增強,例如為雲提供商的虛擬機器新增過濾引數,類似於一些使用者在自定義指令碼中實現的功能。
sshsync 的主要特點:
- 在多臺伺服器上併發執行 shell 命令
- 基於分組的配置,用於針對特定伺服器集合
- 在本地主機和遠端主機之間推送/拉取檔案
- 幹執行模式,在執行前預覽操作
- 使用 ~/.ssh/config 中的現有 SSH 配置
- 目標機器上不需要額外依賴
- 使用 Python 3.10+ 編寫
開發者視角
sshsync 的建立者對這個專案提供了一個令人耳目一新的謙遜視角,承認它並不是為了與成熟工具競爭而設計的。我當時感到無聊,這似乎是一個在工作之外可以做的很酷的專案,他解釋道,並補充說一位同事發現它很有用,這促使了公開發布。
這凸顯了開源開發的一個重要方面——並非每個工具都需要革新一個行業。有時專案僅僅是作為學習經驗,解決特定的個人需求,或填補主流工具可能忽視的小眾需求。
儘管有人批評AI生成的文件以及缺乏對現有解決方案的研究,但開發者的坦率回應展示了推動開源社群發展的真誠分享精神。
圍繞 sshsync 的討論揭示了DevOps世界中全面平臺與更簡單、更專注工具之間的更廣泛張力。雖然 Ansible 提供了具有廣泛功能的完整配置管理解決方案,但像 sshsync 這樣的工具吸引了那些尋求輕量級替代方案來完成特定任務而不需要學習複雜系統的人。
正如一位評論者尖銳地觀察到的,Ansible 是我接觸過的不必要複雜性的最佳例子之一——這種情緒解釋了為什麼儘管配置管理領域已經相當成熟,但更簡單的替代方案仍在不斷湧現。
sshsync 是否能獲得廣泛採用仍有待觀察,但它引發的對話突顯了當今日益複雜的IT環境中對平衡功能強大與簡單性的工具的持續需求。
參考:sshsync