Linux 相當於 PowerShell 的“一對多”遠端處理
來自 Windows 管理,我想更深入地研究 Linux (Debian)。我在網上搜尋時無法回答的一個亟待解決的問題(沒有找到)是:如何實現所謂的“一對多”遠端處理,就像在 Windows 的 PowerShell 中一樣?
為了將其分解為基礎知識,我會說:
我對 Linux 的看法:
- 我可以 ssh 進入伺服器並輸入我的命令
- 我得到結果。對於 10 個伺服器的環境,我必須編寫一個(perl/python?)腳本,為每個伺服器發送命令?
我在 Windows 上的經驗:
- 我輸入我的命令並使用“invoke-command”我可以將它“發送”到一堆伺服器(可能來自文本文件)以同時執行並獲取結果(作為進一步工作的對象)。
- 我什至可以建立多個會話,連接在後台保持,並有選擇地向這些會話發送命令,並根據需要遠端進出。
(聽說過大廚、人偶之類的,是這樣的嗎?)
Update 2019:
在嘗試了很多之後 - 我建議Rex(見下面的評論) - 簡單的設置(實際上它只需要 ssh,沒有別的)和使用(如果你只知道一點perl它會更好,但它是可選的)
與Rex(ify )您可以執行臨時命令並將其推進到真正的配置管理(…意思是:它首先是一個 CM,但也適用於臨時任務)該網站已經過時,但目前(截至 01/2019)它正在積極開發中,IRC 頻道也很活躍。
有了 Windows 的新openssh,還有更多的可能性
你可以試試:
rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'
概括
- Ansible 是一個 DevOps 工具,是 PowerShell 的強大替代品
- RunDeck 作為圖形界面很方便
- 有些人一起執行 RunDeck+Ansible
集群sh
對於向多個伺服器發送遠端命令,對於初學者,我會推薦clusterssh
clusterssh
在 Debian 中安裝:apt-get install clusterssh
另一個clusterssh 教程:
ClusterSSH 是圍繞標準 Linux 工具(如 XTerm 和 SSH)的 Tk/Perl 包裝器。因此,它幾乎可以在任何存在庫的兼容 POSIX 的作業系統上執行——我在 Linux、Solaris 和 Mac OS X 上執行過它。它需要 Perl 庫 Tk(Debian 或 Ubuntu 上的 perl-tk)和 X11::Protocol(Debian 或 Ubuntu 上的 libx11-protocol-perl),以及 xterm 和 OpenSSH。
Ansible
至於用於多系統管理的遠端框架,Ansible是 Puppet 的一個非常有趣的替代品。它更精簡,並且不需要專門的遠端代理,因為它通過 SSH 工作(它也已被 RedHat 購買)
Playbooks 比命令行選項更複雜。
但是,要開始使用 Ansible,您需要進行簡單的安裝並設置客戶端列表文本文件。
之後,要在所有伺服器上執行命令,就這麼簡單:
ansible all -m command -a "uptime"
輸出的格式也非常好,並且按規則/伺服器分開,並且在後台執行時可以將其重定向到文件並稍後查閱。
您可以從簡單的規則開始,隨著您在 Linux 中的發展,Ansible 的使用將變得更加有趣,並且您的基礎架構變得更大。因此,它將比 PowerShell 做更多的事情。
例如,我編寫的一個非常簡單的升級 Linux 伺服器的 Playbook:
--- - hosts: all become: yes gather_facts: False tasks: - name: updates a server apt: update_cache=yes - name: upgrade a server apt: upgrade=full
它還定義了許多模組,可讓您輕鬆編寫全面的策略。
它還有一個有趣的官方中心/“社交”儲存庫網路,用於搜尋社區已經制定的 ansible 政策。Ansible 銀河
Ansible 也被廣泛使用,你會在 github 上找到很多項目,比如我自己的FreeRadius setup項目。
雖然 Ansible 是一個免費的開源框架,但它也有一個付費的 Web 面板界面Ansible Tower ,儘管許可費用相當昂貴。
如今,在 RedHat 收購後,tower 也有了開源版本,稱為AWX。
作為獎勵,Ansible 還能夠管理 Windows 伺服器,儘管我從未使用過它。
它還能夠管理網路設備(路由器、交換機和防火牆),這使其成為非常有趣的自動化交鑰匙解決方案。
圓角
再一次,對於一個更容易使用但不如 Ansible 強大的遠端框架,我推薦Rundeck。
它是一個非常強大的多使用者/登錄圖形界面,您可以在其中自動執行大部分常見的日常任務,甚至可以為管理員或幫助台人員提供淡化的視圖。
執行命令時,它還會為您提供按伺服器/任務細分的輸出視窗。
它可以在後台無縫執行多個作業,並允許您稍後查看報告和輸出。
請注意有些人將 Ansible+RunDeck 作為 Web 界面執行;並非所有案件都適用於此。
不用說,使用 Ansible 和/或 RunDeck 可以解釋為基礎結構文件的一種形式或一部分,並且隨著時間的推移,可以複製和改進操作/食譜/劇本。
最後,談到中央命令伺服器,我會為這項任務創建一個。實際上,技術術語是跳箱。如果設置正確,“跳箱”會提高安全性。