AWSをVagrantから使ってみる
卒研とか引っ越しとかで忙しくてねえ。。(言い訳)
AWS便利すぎて値段が割高というデメリットが完全に霞んでいる感ありますね。個人的にはもう少しGoogleCloudPlatform使いたいんですけど。 でも結局GCPあんま使ってないっていう
・・・
vagrant-aws
というプラグインを利用することによって、AWSをあたかもVagrantでVirtualboxなりVMWareなりのVMを立ち上げているかのように使えるということで、試しに使ってみました。
作者のページを見れば当たり前ですが詳しく書かれているのでどうぞ
まあまずプラグインをインストールしないことには始まりませんので、インストールします。(あ。VagrantやAWSを普段そこそこ使用している方向けの記事ですので、Vagrantって何ぞやって方はまず普通にVagrantを使ってみてください)
$ vagrant plugin install vagrant-aws
次にvagrantが利用するboxをインポートします。そもそもVagrantはローカルにVMを立てて使うものなので、どうしてもVMのイメージが必要となります。
$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
次にAWSに接続するために必要な情報を集めます。今回はAWSに接続するためにアクセスキーIDとシークレットアクセスキーが必要となります。しかし、ルート権限を持った状態でのこの2つの発行は出来ないことになっているのでIAMユーザーを作成し、 そのユーザーのアクセスキーIDとシークレットアクセスキーを用いて接続することにします。
まずAWSのコンソールにログインし、上のメニューバーを[サービス] -> [IAM]の順にクリックしていきます。
するとこのような画面が現れます。
ここでVagrantから操作する専用のIAMユーザーを作成しましょう。 [個々のIAMユーザーの作成] -> [ユーザーの管理] -> [新規ユーザーの作成] とクリックしていきます。ユーザー名は任意で大丈夫です。ここで重要なのは、画面下に設置してある[ユーザーごとにアクセスキーを生成]のチェックボックスにちゃんとチェックが入っているかどうかです。 これにチェックしていないとちゃんとアクセスキーが発行されませんので注意してください。
これで無事作成すると、[これは、これらのユーザーセキュリティ認証情報をダウンロードできる最後の機会です。]などという文言と共にアクセスキーIDとシークレットアクセスキーが表示されると思います。 これをどっかにメモっておきましょう。
これでAWS側の準備は整いました。ではVagrantfileを作成してゆきましょう。
任意のフォルダでvagrant init
を実行します。
最初に書かれているサンプルをさくっと削除して、次の内容を書き込みます。
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "dummy" config.vm.provider :aws do |aws, override| aws.access_key_id = "さっき取得したアクセスキーID" aws.secret_access_key = "さっき取得したシークレットアクセスキー" aws.keypair_name = "いつも使用しているリージョンの公開鍵の名前" aws.tags = {'Name' => 'Vagrant'} # AWSのEC2に名前を付けられる。とりあえずVagrantにした aws.ami = "ami-a21529cc" # Ubuntu14.04LTS HVMのイメージ aws.instance_type = "t2.micro" #インスタンスのサイズはご自由に # セキュリティグループの設定がうまくいかない #aws.security_groups = {'groupId' => 'セキュリティグループID'} aws.region = "ap-northeast-1" override.ssh.username = "ubuntu" override.ssh.private_key_path = "公開鍵の絶対パス" end end
以上の状態でvagrant up
を実行します。するとこのようにAWS上にVagrantを立てることが出来ました。
Vagrant全ての機能を使えるわけではありませんが、気軽に実際にサーバーを立てて検証するには良いと思いました。個人的にはMulti-VMモードで複数起動出来るか試してみようと思います。