LoginSignup
11
10

More than 5 years have passed since last update.

Pacifistaで簡単自動化! Amazon EC2編

Last updated at Posted at 2013-10-21

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

Pacifistaとは?

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

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オブジェクトを参照ください。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10