Linux

Linux 相當於 PowerShell 的“一對多”遠端處理

  • January 30, 2019

來自 Windows 管理,我想更深入地研究 Linux (Debian)。我在網上搜尋時無法回答的一個亟待解決的問題(沒有找到)是:如何實現所謂的“一對多”遠端處理,就像在 Windows 的 PowerShell 中一樣?

為了將其分解為基礎知識,我會說:

我對 Linux 的看法:

  • 我可以 ssh 進入伺服器並輸入我的命令
  • 我得到結果。對於 10 個伺服器的環境,我必須編寫一個(perl/python?)腳本,為每個伺服器發送命令?

我在 Windows 上的經驗:

  1. 我輸入我的命令並使用“invoke-command”我可以將它“發送”到一堆伺服器(可能來自文本文件)以同時執行並獲取結果(作為進一步工作的對象)。
  2. 我什至可以建立多個會話,連接在後台保持,並有選擇地向這些會話發送命令,並根據需要遠端進出。

(聽說過大廚、人偶之類的,是這樣的嗎?)


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 銀河

Ansible 也被廣泛使用,你會在 github 上找到很多項目,比如我自己的FreeRadius setup項目。

雖然 Ansible 是一個免費的開源框架,但它也有一個付費的 Web 面板界面Ansible Tower ,儘管許可費用相當昂貴。

如今,在 RedHat 收購後,tower 也有了開源版本,稱為AWX

作為獎勵,Ansible 還能夠管理 Windows 伺服器,儘管我從未使用過它。

它還能夠管理網路設備(路由器、交換機和防火牆),這使其成為非常有趣的自動化交鑰匙解決方案。

如何安裝 Ansible

圓角

再一次,對於一個更容易使用但不如 Ansible 強大的遠端框架,我推薦Rundeck

它是一個非常強大的多使用者/登錄圖形界面,您可以在其中自動執行大部分常見的日常任務,甚至可以為管理員或幫助台人員提供淡化的視圖。

執行命令時,它還會為您提供按伺服器/任務細分的輸出視窗。

它可以在後台無縫執行多個作業,並允許您稍後查看報告和輸出。

執行甲板圖像

如何安裝 RunDeck

請注意有些人將 Ansible+RunDeck 作為 Web 界面執行;並非所有案件都適用於此。

不用說,使用 Ansible 和/或 RunDeck 可以解釋為基礎結構文件的一種形式或一部分,並且隨著時間的推移,可以複製和改進操作/食譜/劇本。

最後,談到中央命令伺服器,我會為這項任務創建一個。實際上,技術術語是跳箱。如果設置正確,“跳箱”會提高安全性

引用自:https://unix.stackexchange.com/questions/269617