Edited at

JavaScriptで自動化!Pacifista入門

More than 5 years have passed since last update.

皆さん環境構築とか、システムの設定作業とかって、どのように作業していますか?

古きは環境構築手順書を使って行なっていましたが、昨今の自動化ブームに伴って、

chefやcapistrano、fabricなどのツールを検討されている方も多いと思います。

ただ、最近はやりの自動化ツールって、RubyとかPythonを多少知っている必要があったり、

独自DSLや特殊な用語を覚える必要があったりと、学習コストが高くてとっつきにくくないですか?

まわりにススメても「あー便利そうだねけど難しそうだね」で終わってしまうパターンが多々あります。


そこでPacifistaですよ

Pacifistaは「環境構築をまるごとプログラミングする。それもシンプルに」を目的としたOSSの自動化ツールです。

http://pacifista.ukiuni.org/

Pacifistaには、以下の特徴があります。


  • JavaScriptでコードを書く事が出来る。

  • JavaScript以外にも、Ruby,Python,Groovyなど複数の言語に対応している。

  • 対象となるサーバにSSHでコマンドを投げるので、エージェント不要。

  • EC2やVirtualBox上での仮想マシン操作や、構築後のテストなど、機能が豊富。

  • 仮想マシン起動→構築→テストを1ファイルでシンプルに書くことが出来る。

個人的には、社内の大抵の人が読み書き出来るJavaScriptで書けるというのがとても魅力でした。


Pacifistaのセットアップ

Javaがインストールされた環境に、公式サイトからダウンロードしたファイルを展開するだけです。簡単。


使ってみよう!

ではPacifistaを使って、サーバにApacheをインストールしてみます。

コードはJavaScriptで記述します。JavaScriptが何となく読める人だったら、容易に理解出来ると思います。


apacheinstall.js

//対象のサーバにssh接続するための設定

var host = "192.168.10.100"
var sshPort = "22"
var user = "user"
var password = "pass"

//対象のサーバに接続
var remote = Remote.create();
remote.connect(host, sshPort, user, password);

//rpm -q httpdを実行し、Apacheがインストールされていればエラー終了する
if (remote.execute("rpm -q httpd").contains("httpd")) {
throw "httpd is already installed"
}

//Apacheのインストールと起動
remote.call("sudo yum install -y httpd");
remote.call("sudo /etc/init.d/httpd start");
remote.call("sudo /sbin/chkconfig httpd on");

//80番ポートに接続できるかテスト
var tester = Tester.create(remote);
tester.assertPortOpen(80);


作成したコードは、Scriptsフォルダに配置しましょう。JavaScriptで記述しているので、拡張子は.jsにします。

作成したコードを実行する際は、以下のようにコマンドを実行します。

$ bin/pacifista

#sudo yum install -y httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.jaist.ac.jp
* extras: ftp.jaist.ac.jp
* updates: ftp.jaist.ac.jp
base | 3.7 kB 00:00
extras | 3.5 kB 00:00
updates | 3.4 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.i686 0:2.2.15-29.el6.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
httpd i686 2.2.15-29.el6.centos updates 828 k

Transaction Summary
================================================================================
Install 1 Package(s)

Total download size: 828 k
Installed size: 2.8 M
Downloading Packages:
httpd-2.2.15-29.el6.centos.i686.rpm | 828 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : httpd-2.2.15-29.el6.centos.i686 1/1
Verifying : httpd-2.2.15-29.el6.centos.i686 1/1

Installed:
httpd.i686 0:2.2.15-29.el6.centos

Complete!
#sudo /etc/init.d/httpd start
httpd を起動中: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
#sudo /sbin/chkconfig httpd on

はい、サックリとApacheがインストール出来ました!!

コード書いてコマンド一発と、とてもシンプルですね。今回試してみて、ハマりどころゼロでした。

事例はとても少ないですが、公式サイトの情報だけで十分に使いこなせます。

というわけで、Pacifista、オススメです。興味ある方是非使ってみて下さい。