Vagrantでec2にインスタンスを作る
大まかな物は見つかるんだけど。 自分の要求通りにやっと情報が集められたから書いておく。
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だ。