ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

psshなんてものがあるのか

psshというものがあることを偶然知りました。

blog.livedoor.jp

要するにSSHコマンドの並列実行ができるコマンドなんだそうです。使い方は上記URLに任せることとして、早速使ってみることにしました。

今回インストールにはUbuntu Server 16.04.1を使いました。

Ubuntuにはpsshパッケージが用意されているので、インストールは簡単でsudo apt install psshを実行するだけです。リポジトリーの更新コマンドのsudo apt updateも忘れずに。

ubuntu@xenial1:~$ sudo apt install pssh

先ほどのページではpsshコマンドを使っていますが、Ubuntuではparallel-sshというコマンドになっています。psshコマンドで制御したければコマンドエイリアスを各自張ってください。

あとはparallel-sshコマンドでリモートサーバーをあれこれするだけなのですが、動かすにはいくつか条件があるようです。

  • 名前解決が必要

手っ取り早くするには/etc/hostsで処理する

(例)

ubuntu@xenial1:~$ sudo vi /etc/hosts
192.168.0.101 xenial1   #操作用(は別に書かなくてもよし)
192.168.0.102 xenial2  #リモートアクセス対象
192.168.0.103 xenial3  #リモートアクセス対象
  • 対象のサーバーのホスト名を書いた「hostsファイル」が必要

(例)

ubuntu@xenial1:~$ sudo vi thosts
xenial2
xenial3
  • パスワードをコマンドに含めるか、公開鍵認証で対象ノードにリモートアクセスできるようにする

(例)

  • ユーザーを作る
ubuntu@xenial2:~$ sudo adduser ytooyama
ubuntu@xenial3:~$ sudo adduser ytooyama
  • キーペアを作る
ubuntu@xenial1:~$ ssh-keygen -t ecdsa -b 256
  • 公開鍵を転送
ubuntu@xenial1:~$ ssh-copy-id -i ~/.ssh/id_ecdsa.pub ytooyama@xenial2
ubuntu@xenial1:~$ ssh-copy-id -i ~/.ssh/id_ecdsa.pub ytooyama@xenial3

あとは操作用のマシンからparallel-sshコマンドで操作するだけです。

$ parallel-ssh -l ytooyama -h thosts -i uptime      #全てのサーバーでuptimeを実行して結果を出力
$ parallel-ssh -l ytooyama -h thosts -i ping -c3 virtualtech.jp #全てのサーバーでpingを(ry

あれ?ちょっと待って・・・それってAnsibleでもできるんじゃ?と思った方、 はい、その通りでございますw

ただ、実際使ってみると「割と良いかも」と思いました。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。