2013年3月29日金曜日

vagrant-awsを使ってAWSインスタンを立ち上げる

Virtual Boxの便利なクライアントラッパーとして有名だったvagrantが、version1.1以降ではAWSやRackspaceなど有名なクラウド環境もサポートするようになりました。

AWSについては、vagrant-aws というプラグインを導入することで、vagrantからaws instanceの立ち上げ〜廃棄を行うことができます。

◯install
vagrantについては以下のサイトなどから適当に(1.1以上必須)。
http://www.vagrantup.com/

vagrant-awsについては以下のコマンドで追加できます。
$ vagrant plugin install vagrant-aws

$ vagrant plugin list
vagrant-aws (0.1.2)
◯init
$ vagrant init
まず"vagrant init"によってVagrantfileのひな形を作成します。
ここではawsのインスタンスを立ち上げる事を目標としているので、Vagrantfileをaws向けの設定に書き換えます。
vgrant-awsのREADMEを引用すると以下のような書式になります。
Vagrant.configure("2") do |config|
  config.vm.box = "dummy"

  config.vm.provider :aws do |aws|
    aws.access_key_id = "YOUR KEY"
    aws.secret_access_key = "YOUR SECRET KEY"
    aws.keypair_name = "KEYPAIR NAME"
    aws.ssh_private_key_path = "PATH TO YOUR PRIVATE KEY"

    aws.ami = "ami-7747d01e"
    aws.ssh_username = "ubuntu"
  end
end
まず 、"Vagrant.configure("2")"はおまじないみたいなもので、vagrantの1.1を使用する、という宣言です。
続いて、config.vm.boxで使用するboxを指定します。awsの場合、ec2側で登録されているamiを使用する形になるので、本来はこの設定は不要です。ただ、vagrant的には値の設定が必要なようなので、dummyのboxを指定します。
なおdummyのboxはvagrant-awsのgit上に用意されているので、あらかじめvagrantにaddしておきましょう。
vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box   
aws provider周りの設定については、それぞれの項目に応じて設定します。あらかじめaccess keyやsecret access keyなどの値を控えておきましょう。
詳細な項目についてはvagrant-awsのREADMEの”Configuration"の項を参照ください。
https://github.com/mitchellh/vagrant-aws

なお、security group についてはssh portが空いているものを設定する必要があります。sshが接続できないとvagrantからコントロールすることが出来ず、インスタンスだけ立ち上がるけれどvagrant側はエラーになりdestroyできなくなる、という状況に陥ります。
※ 設定で嵌りそうな点についてはこの辺のブログなどを参照してください。
http://d.hatena.ne.jp/naoya/20130315/1363340698

◯operation
ひと通り設定が終わったら、vagrant upを実行します。provider情報として"aws"を指定する必要があります。
$ vagrant up --provider=aws
ec2のインスタンスが立ち上がったら、Virtual Boxの時と同じようにssh接続することができます。
$ vagrant ssh
使用が終わったら、destroyをすると立ち上げたインスタンスがterminateされます。
$ vagrant destroy
なお、私が試した環境では、"vagrant halt"が上手く動作しませんでした。イメージ的にはインスタンスがstopされて欲しいのですが…

◯所感
vagrant経由で簡単にawsをハンドリングする事ができるので、手軽にec2のインスタンスを立ち上げ、アプリケーションや構成管理ツール(chefなど)の動作確認を行うには非常に便利なツールだと思います。
ただ、ユースケースとしては、あくまで検証向きだと思います。本番環境の複数台のサーバーに対してvagrantで管理する、というイメージがあまり持てないので、検証領域での使用に留めるのが妥当かなと思っています。






0 件のコメント:

コメントを投稿