皆さん環境構築とか、システムの設定作業とかって、どのように作業していますか?
古きは環境構築手順書を使って行なっていましたが、昨今の自動化ブームに伴って、
chefやcapistrano、fabricなどのツールを検討されている方も多いと思います。
ただ、最近はやりの自動化ツールって、RubyとかPythonを多少知っている必要があったり、
独自DSLや特殊な用語を覚える必要があったりと、学習コストが高くてとっつきにくくないですか?
まわりにススメても「あー便利そうだねけど難しそうだね」で終わってしまうパターンが多々あります。
#そこでPacifistaですよ
Pacifistaは「環境構築をまるごとプログラミングする。それもシンプルに」を目的としたOSSの自動化ツールです。
Pacifistaには、以下の特徴があります。
- JavaScriptでコードを書く事が出来る。
- JavaScript以外にも、Ruby,Python,Groovyなど複数の言語に対応している。
- 対象となるサーバにSSHでコマンドを投げるので、エージェント不要。
- EC2やVirtualBox上での仮想マシン操作や、構築後のテストなど、機能が豊富。
- 仮想マシン起動→構築→テストを1ファイルでシンプルに書くことが出来る。
個人的には、社内の大抵の人が読み書き出来るJavaScriptで書けるというのがとても魅力でした。
#Pacifistaのセットアップ
Javaがインストールされた環境に、公式サイトからダウンロードしたファイルを展開するだけです。簡単。
#使ってみよう!
ではPacifistaを使って、サーバにApacheをインストールしてみます。
コードはJavaScriptで記述します。JavaScriptが何となく読める人だったら、容易に理解出来ると思います。
//対象のサーバに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、オススメです。興味ある方是非使ってみて下さい。