Pacifistaをご存じですか?JavaScriptでLinuxの環境を構築できるツールです。リモートのサーバをJavaScriptで操作できるので、サーバの構築、定期メンテなどに利用することができます。
本稿では、Pacifistaを使って複数サーバのOpenSSLを一括アップデートする方法をご紹介します。heartbreed騒動や、その後のバグFixからは時間が立ち、ちょっと波に乗り遅れた感がありますが、まだやってない方や、同じような作業をする予定のある方はメモっておくと楽ができると思います。たくさんのサーバに同じコマンドを発行していくなんて、うんざりしますからね。
Pacifistaのセットアップ
セットアップの方法は2通りあります。zipもしくはtarを展開するか、gitコマンドを実行します。
やり方1 zipもしくはtarを展開
ホームページに書いてあるやり方です。Javaをインストールするとともに、ダウンロードページから最新版をダウンロードして展開します。以上。
やり方2 githubから取得します。
git clone https://github.com/ukiuni/pacifista.git
で取得します。Javaのインストールも必要です。
JavaScriptを書く。
JavaScriptでOpenSSLのアップデートと、使ってるモジュールの再起動を書きます。
内容はサンプルなので、適切に書き換えて下さい。
var hosts = [
{name:"host1", userName: "ec2-user", domainName:"host1.example.com",keyFilePath:"/key/mykey.pem"},
{name:"host2", userName: "ec2-user", domainName:"host2.example.com",keyFilePath:"/key/mykey.pem"}
//and other server
);
hosts.forEach(function(host){
console.log("target server // " + host.name + "/////////////////");
var remote = Remote.create();
remote.connectWithAuthFile(host.domainName, 22, userName, host.keyFilePath);
remote.call("sudo openssl version");
remote.call("sudo yum clean all");
remote.call("sudo yum update -y openssl");
remote.call("sudo /etc/init.d/crond restart");
remote.call("sudo /etc/init.d/sshd restart");
//その他、httpdへの反映等。
remote.call("sudo openssl version");
});
console.log("!!!!!COMPLETE!!!!!");
Remoteオブジェクトを生成して接続したら、コマンドを発行するだけです。
あとは、JavaScriptなので、ループで思いのままです。
簡単ですね。
実行した後は、ログを確認して、きちんとアップデートできたかどうか確認して下さい。yumの設定や、容量不足などでアップデートできていないこともあります。
プログラムのちからをあなたの力にしましょう!
コマンドを複数サーバに打つのは大変ですよね。一つ一つは小さな作業だとしても、10台、20台のサーバにコマンドを打っていくのは大変です。
少しプログラミングするだけで、一気に作業ができて、ログも残ります。同じような作業であれば、以降はとても楽に作業を追えることができます。その空いた時間にもっと価値のあることをしましょう!