PowerShellの「1対多」リモート処理に相当するLinux


38

Windows管理から来て、Linux(Debian)をさらに掘り下げたいと思います。Webの検索に答えることができなかった(見つけられなかった)私の非常に難しい質問の1つは、PowerShell for Windowsのようないわゆる「一対多」のリモーティングをどのように達成できるかということです。

それを基本に分解するには:

Linuxに関する私の見解:

  • サーバーにsshしてコマンドを入力できます
  • 結果が得られました。10台のサーバーの環境では、それぞれにコマンドを送信する(perl / python?)スクリプトを作成する必要がありますか?

Windowsからの私の経験:

  1. コマンドを入力し、「invoke-command」を使用して、これを多数のサーバー(テキストファイルから)に「送信」して、同時に実行し、結果を(さらなる作業のオブジェクトとして)取得します。

  2. 複数のセッションを確立することもでき、接続はバックグラウンドで保持され、これらのセッションに選択的にコマンドを送信し、必要に応じてリモートで入出力できます。

(シェフ、パペットなどについて聞いたことがあります。これはそのようなものですか?)


Update 2019:
多くのことをしようとした後-私はお勧めレックス(参照以下このコメントを簡単にセットアップ(あなたが少しだけを知っていれば、使用する(効果的にそれだけのssh、他には何が必要) - )はPerlそれも良いでしょうが、それはオプションです)
レックス(IFYを)アドホックコマンドを実行して実際の構成管理に進めることができます(...つまり、それは最初のCMですが、アドホックタスクにも適しています)Webサイトは古くなっていますが、現在(2019年1月現在)それは活発に開発されており、IRCチャネルもアクティブです。

Windowsの新しいopensshでは、さらに多くの可能性があります

あなたが試すことができます: rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'


パラレルsshはそれを行うことがあります。serverfault.com/questions/2533/...
rogerdpack

MobaXTermサポート多くのsshセッション間で「マルチ実行」:mobaxterm.mobatek.net/features.html(スクロールダウン)。また、プライマリワークステーション環境がWindowsである場合、Linuxボックスなどに接続するための非常に便利なツールでもあります。
ケブ

tmuxの持つ::setw synchronize-panes onunix.stackexchange.com/a/124800/161003
イーライ

回答:


50

概要

  • Ansibleは、PowerShellに代わる強力なDevOpsツールです
  • グラフィカルインターフェイスとしてのRunDeckは便利です
  • RunDeck + Ansibleを一緒に実行する人もいます

clustersh

リモートコマンドを複数のサーバーに送信するには、初心者には、clustershをお勧めします

clustersshDebian にインストールするには:

apt-get install clusterssh

別のclustershチュートリアル

ClusterSSHは、XTermやSSHなどの標準LinuxツールのTk / Perlラッパーです。そのため、ライブラリが存在するPOSIX準拠のOSで動作します。Linux、Solaris、およびMac OS Xで実行しました。PerlライブラリTk(DebianまたはUbuntuのperl-tk)が必要です。およびx11 :: Protocol(DebianまたはUbuntuのlibx11-protocol-perl)、xtermおよびOpenSSHに加えて。

アンシブル

複数システム管理のためのリモートフレームワークに関しては、AnsibleはPuppetの非常に興味深い代替手段です。よりスリムで、SSH経由で動作するため、専用のリモートエージェントは必要ありません(RedHatによって購入されています)

Playbookは、コマンドラインオプションよりも精巧です。

ただし、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 Documentation

また、コミュニティによって既に作成された無防備なポリシーを検索するための興味深い公式ハブ/「ソーシャル」リポジトリのネットワークもあります。Ansible Galaxy

Ansibleも広く使用されており、GitHubにはFreeRadiusのセットアップ用に私が作成したこのような多くのプロジェクトがあります

Ansibleは無料のオープンソースフレームワークですが、有料のWebパネルインターフェイスであるAnsible Towerもありますが、ライセンスはかなり高価です。

今日では、RedHatが購入した後、towerにはAWXとして知られるオープンソースバージョンもあります。

ボーナスとして、AnsibleはWindowsサーバーを管理することもできますが、私はそれを使用したことがありません。

また、ネットワーク機器(ルーター、スイッチ、ファイアウォール)を管理できるため、自動化ターンキーソリューションとして非常に興味深いソリューションになります。

Ansibleのインストール方法

ランデッキ

しかし、再び、Ansibleとして使用するのが容易ではなく、とても強力なリモートフレームワークのために、私がお勧めですかRundeckを

これは非常に強力なマルチユーザー/ログイングラフィカルインターフェイスであり、日常の日常的なタスクの多くを自動化することができます。

コマンドを実行すると、サーバー/タスクごとに出力が分割されたウィンドウも表示されます。

バックグラウンドで複数のジョブをシームレスに実行でき、後でレポートと出力を確認できます。

ランデッキ画像

RunDeckのインストール方法

WebインターフェイスとしてAnsible + RunDeckを実行している人がいることに注意してください。すべてのケースがそのために割り当てられるわけではありません。

また、言うまでもなく、AnsibleやRunDeckを使用することは、インフラストラクチャドキュメントのフォームまたは一部として解釈でき、時間が経つにつれてアクション/レシピ/プレイブックを複製および改善することができます。

最後に、中央のコマンドサーバーについて説明しますが、タスク専用のサーバーを作成します。実際には、専門用語はジャンプボックスです。「ジャンプボックス」は、正しく設定するとセキュリティが向上します


1
Ansibleは、複数のSSHサーバーにコマンドをブロードキャストするだけのスクリプトやユーティリティに対して、優れたソリューションです。Ansibleはそれを行います(そしてPuppetやChefよりもその目的に適しています)が、インストールコマンドを送信する代わりにビルトインモジュールを使用してsomething等をインストールするなど、より良い方法で目的を達成するオプションも提供しますそして最高を望んでいます。
JBentley


12

pssh(またはparallel-ssh)を使用することもできます。これは、ホストのリストに接続し、すべてのホストでコマンドを並行して実行するSSHクライアントです。

$ parallel-ssh -i -H "host1 host2" uname -a
[1] 11:37:12 [SUCCESS] host2
Linux host2 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[2] 11:37:12 [SUCCESS] host1
Linux host1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

11

おそらく、単純なzsh(bash)関数を使用して目標を達成できます。サーバーl61 l62 l63があり、頻繁にコマンドを実行する必要があるとします。

function run_on_cluster()
{
    (for srv in l61 l62 l63;
    do
        echo "ssh $srv $1";
    done) | parallel --gnu
}

したがって、コマンドラインで:

$ run_on_cluster "uname -r"
2.6.32-279.el6.x86_64
2.6.32-279.el6.x86_64
2.6.32-504.23.4.el6.x86_64

5
出力する前にサーバーの名前を印刷することをお勧めします。また、スクリプトを並行して実行すると、スクリプトの出力を手探りするなど、他の癖が生じます。出力のアクティビティを保持するには、追加の対策を講じる必要があります。各タスクをフォアグラウンドで実行すると、最小限の入力操作が可能になります。
ルイFリベイロ

3

KDEを使用している場合、別の方法があります。
-Konsoleウィンドウを開きます。
通信するサーバーごとに:
-タブを開く
-サーバーとのssh接続を確立する[
編集]メニューで、[入力をコピー]を[すべてのタブ]に選択します

そのタブに入力するコマンドはすべて、すべてのサーバーにコピーされます。
タブからタブに切り替えて、異なる結果を確認できます。

注:英語版のKDEを使用していないため、メニューラベル(引用符で)が間違っている可能性があります


1

GNUパラレル

保存された設定で簡単なワンライナーを使用できるため、サーバーリストと一般的なスイッチを含むプロファイル「prod」を作成できます。必要なコマンドを追加するだけで、準備ができます。最後に自動的にサーバーを削除し、さらに大きなスクリプトには非常に便利です。また、非常に高速です。

唯一の問題は、非常に多くのオプションがあることです;)しかし、ドキュメントには多くの例も含まれているため、最初にそれらを見ることができます。


2
こんにちは、LinuxとLinuxへようこそ。gnu-parallelを使用したスクリプトを誰かが既に提供しています。私はあなたが周りを見回すことをお勧めします、より精巧な答えは高く評価され、より多くのポイントを与えるでしょう。
ルイFリベイロ

1
@RuiFRibeiro申し訳ありませんが、気付かなかったので、Androidアプリのコードボックスにバグがあり、ほとんどのコンテンツを見ることができませんでした(空白が生成されます)。あなたはgnu-parallelが出力を手探りしていることを言及しました-それは順番に書くことができますが、そうするようにそれを言わなければなりません:)
alkuzad

はい、私はそれに慣れていませんが、すでにそう疑っていますので、答えに言及するには改善が必要です。ありがとう。あなたがその周りにもっと良い答えを書くことを妨げるものは何もありませんが、コメントするために、その答えにコメントすることをお勧めします。
ルイFリベイロ

1

ここでも「Rex」に言及したい:https : //www.rexify.org/

perl + ssh(ユーザー/パスワードまたはキー認証)を使用する素晴らしいツールであり、perlはすべての(?!)Linuxシステムにインストールされているため、使用する方が自然だと思います(Ansible&Co.といくつかの類似点があります)

複数のサーバーでアドホックコマンドを一度に実行できます(server1、server2、server ...-認証のセットアップ後、またはコマンドのsudo実行に-p / -uパラメーターと-s / -Sを使用):

$ rex -H "server[1..3]" -e 'say run "uptime"'

または、異なる「タスク」を指定してそこから呼び出すファイルを作成します

$ rex -f myConfigFile.rex uptime

これは、リポジトリ経由で、あるいはのPerlを使ってインストールすることができCPAN(またはcpanm Rex:簡単で、見るとそれは、初期設定だ
- https://www.rexify.org/
- https://www.rexify.org/docs/guides/ start_using__r__ex.html
- http://www.admin-magazine.com/Archive/2014/21/First-steps-in-IT-automation-by-Rex

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.