読者です 読者をやめる 読者になる 読者になる

Vagrantでec2にインスタンスを作る

vagrant

大まかな物は見つかるんだけど。 自分の要求通りにやっと情報が集められたから書いておく。

vagrant plugin install vagrant-aws
vagrant init

Vagrantファイルを作る

# 設定定義, あんま気にしてない
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    # defineについて調べる
    config.vm.define :amazonlinux do |amazonlinux|
        # ec2用のダミーbox
        amazonlinux.vm.box = "dummy"
        amazonlinux.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"
        # プロビジョニングをshellで行う
        config.vm.provision :shell, :path => "provision.sh"
        amazonlinux.vm.provider :aws do |aws, override|
        # instanceに名前を付ける
        aws.tags = {
            'Name' => 'make vagrant',
            'Description' => 'vagrant test'
        }
        # awsのインスタンスタイプ
        aws.instance_type = "t1.micro"
        # Amazon Linux AMI x86_64 EBS(amazon image)
        aws.ami = "ami-173fbf16"
        # awsのセキュリティグループ
        aws.security_groups = ["お好きなもの, defaultでも良いのかな"]
        # "Tokyo"
        aws.region = "ap-northeast-1" 
        aws.availability_zone = "ap-northeast-1a"
        # AWSへのアクセスキー設定
        aws.access_key_id = ENV['AWS_ACCESS_KEY_ID']
        aws.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
        # awsのキーペアネームを書く
        aws.keypair_name = "keypairname"
        # ec2で作業をするユーザー名にオーバーライドする, ec2に使う秘密鍵にする
        override.ssh.username = "ec2-user"
        override.ssh.private_key_path = '~/.ssh/hoge.pem'
        # sedでrequitettyのとこをコメントアウト
        aws.user_data = <<-USER_DATA
      # ググったら出て来た, プロビジョニングする際にsudoが出来ない問題を対処
      # user_dataという値にshellを書けるみたい, 実際は--provisionで起動しても
      # プロビジョニングが先に走ってしまうからエラーが出る、起動後にvagrant provisionする
      # あんまり良く無いと思う。。。
      # インデントすると動かないので注意
#!/bin/sh
sed -i -e 's/^\\(Defaults.*requiretty\\)/#\\1/' /etc/sudoers
      USER_DATA
        end
    end
end

中々ゴールにたどり着かなかったのは

  • プロビジョニングの前にsudoの設定を変える
  • awsのapi周りの設定

かな。

vagrant up amazonlinux --provider=aws #インスタンス起動, プロビジョニングでこけるけど気にしない
vagrant  amazonlinux provision # プロビジョニング実行
vagrant amazonlinux destroy # インスタンス破棄

楽しい楽しい。 次はchefだ。