doridoridoriand’s diary

主に技術的なことを書いていく予定(たぶん)

AWSをVagrantから使ってみる

卒研とか引っ越しとかで忙しくてねえ。。(言い訳)

AWS便利すぎて値段が割高というデメリットが完全に霞んでいる感ありますね。個人的にはもう少しGoogleCloudPlatform使いたいんですけど。 でも結局GCPあんま使ってないっていう

・・・

vagrant-awsというプラグインを利用することによって、AWSをあたかもVagrantVirtualboxなりVMWareなりのVMを立ち上げているかのように使えるということで、試しに使ってみました。 作者のページを見れば当たり前ですが詳しく書かれているのでどうぞ

まあまずプラグインをインストールしないことには始まりませんので、インストールします。(あ。VagrantAWSを普段そこそこ使用している方向けの記事ですので、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

これでvagrant-awsを利用する下準備が出来ました。

次に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を立てることが出来ました。

AWS上でもインスタンスが稼働していることがわかります

Vagrant全ての機能を使えるわけではありませんが、気軽に実際にサーバーを立てて検証するには良いと思いました。個人的にはMulti-VMモードで複数起動出来るか試してみようと思います。