Edited at

Pacifistaで簡単自動化! Amazon EC2編

More than 5 years have passed since last update.

先日書いたPacifista入門がとても好評だったので、またPacifista関連のTipsを書いてみました。


Pacifistaとは?

複数の言語で書ける、とてもシンプルな自動化ツールです。詳細は以下参照。

http://qiita.com/uchiunyo/items/07d1e066c677df4cfb6e


PacifistaでEC2を起動する

Pacifistaには、仮想マシンを扱うオブジェクトがあり、数行のコードでEC2を起動する事が出来ます。

では早速、EC2を起動して、適当にunameあたりを実行するコードをJavaScriptで書いてみます。


setupEC2.js

//EC2を操作することのできるHostオブジェクトを、web01という名前で取得する。

var host = VirtualMacine.getHost("AWS", "web01");

//runtimeオブジェクトを使って環境変数からAWSのキーを取得する
var accessKey = runtime.getEnv("AWS_ACCESS_KEY_ID");
var secretKey = runtime.getEnv("AWS_SECRET_ACCESS_KEY");

//EC2を起動する為のパラメータを作成してHostオブジェクトにセット。パラメータは & で繋ぐ
var param = "accessKey="+accessKey+"&secretKey="+secretKey
host.setParameters(param);

//EC2への接続情報を持ったオブジェクトを作成。ここでssh鍵も生成される。
var sshAddress = host.create();

//ホストを起動
host.boot();

var remote = Remote.create();

//鍵を使ってEC2にssh接続する
remote.connectWithAuthFile(sshAddress.getHost(), sshAddress.getPort(), "ec2-user",sshAddress.getKeyPath());

//テキトーにコマンド流してみる
remote.call("uname -a");


作成したファイルは例の如く、scriptsディレクトリ以下に配置します。

script名を指定して実行する事も出来ますので、setupEC2.jsを指定して実行してみましょう。

$ bin/pacifista scripts/setupEC2.js

#uname -a
Linux ip-10-238-154-141 3.4.43-43.43.amzn1.x86_64 #1 SMP Mon May 6 18:04:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

はい、ちゃんとuname通りましたね。Management Consoleからも、web01が作成された事が確認出来ました。

そして、前述の通り、数行でEC2を起動することが出来ました。うーん、シンプルですね。

今回はunameしか実行していませんが、同じ流れで、EC2起動+インフラの設定を自動化出来そうですね!


補足

今回作成したScriptでは、setParametersでAWSのキーしかセットしていません。

この場合、作成されたEC2は自動的に以下のように設定されます。


  • リージョンはVirginiaとなる

  • EC2生成に使用するAMIはami-05355a6cが指定される

  • Instance typeはt1.microとなる

  • SecurityGroupsはweb01(getHostで指定した名前)_s_Security_Groupが作成/設定される

  • 作成されたweb01_s_Security_groupはssh(22/tcp)がsource 0.0.0.0/0で設定される

  • Key pairはweb01(getHostで指定した名前)_s_Key_Nameが作成/設定される

上記の項目については、setParametersのオプションで指定可能です。

指定可能なオプションについては、Pacifista公式サイトのHostオブジェクトを参照ください。