Vagrant 1.1 ã§ EC2 ã vagrant up
Vagrant 1.1 ããªãªã¼ã¹ããã¾ããã Vagrant ã¯ä»®æ³ãµã¼ãã¼ã®ããã³ãã¨ã³ãã®ãã¼ã«ã詳ãã㯠Vagrant - naoyaのはてなダイアリー ããããã
ã§ããã® 1.1 ã 1.0 â 1.1 ã¨ããå²ã«çµæ§å¤§ããªã¢ãããã¼ãã§æ°ãã VM ã« VirtualBox 以å¤ã®ãã®ã鏿ã§ããããã«ãªã£ããããªãã¡ãVirtualBox ã®ããã³ãã¨ã³ã = Vagrantããããå種仮æ³ãã·ã³ã®ããã³ãã¨ã³ã = Vagrantãã¨ãã風ã«ã¢ãããã¼ããããã
ä»åã® 1.1 ããVMãæä½ããproviderããã©ã°ã¤ã³æ§é ã¨ãªããVirtualBoxã ããªãããå ¬å¼ã§æä½ã§ãã対象ãå¢ãã¾ããã
- VirtualBox
- VMware Fusion
- Amazon EC2 + VPC
- Rackspace Cloud
VMware Fusion以å¤ã¯ãªã¼ãã³ã½ã¼ã¹ã§å ¬éããã¦ãã¾ãã
ã¿ããªããã£ãã¨åå¿ããã ããç¹ããã®ä»®æ³ãã·ã³ã¨ããã®ããã¼ã«ã«ã®ã¿ãªãã Amazon EC2 ã Rackspace ã«å¯¾å¿ãã¦ããããã¼ãã¾ããããvagrant up ã§ EC2 ã¤ã³ã¹ã¿ã³ã¹ãç«ã¡ã¡ããããã§ãããè¸ç±!
ããã«ä¼´ãããã¥ã¡ã³ãã v.1.1 åãã«ã¢ãããã¼ããããããã§ãã
v2 ã¨ããã¿ã°ãã¤ãã¦ããããã«ããã¼ã¸ã§ã³ã¯ v1.1 ã§ãå é¨çã«ã¯ 2 ã¨ããæ±ãã¿ããã
Version 1.1 ã§ã®æ³¨æç¹
æ©éãã£ã¦ã¿ã¾ãããã®åã«2ç¹ã»ã©
- Vagrant ã®é
å¸ã rubygems ã§ã¯ãªããªãããã±ã¼ã¸å½¢å¼ã«ãªã£ãã
gem install vagrantã¯ããå¤ããã v1.1 使ãå ´åã¯åé¤ãã¦ããã±ã¼ã¸çãå ¥ãããã¨ã®ãã¨ã§ã - Vagrantfile ã®æ¸ãæ¹ãå°ãå¤ãã£ããå
·ä½çã«ã¯
Vagrant.configure("2")ã¨ãã¼ã¸ã§ã³çªå·ãæå®ããã以åã®ããã«Vagrant::Config.runããå ´å㯠v1.0 ç³»ã®å¾æ¹äºæã¢ã¼ãã«ãªã- 詳ãã㯠http://docs.vagrantup.com/v2/vagrantfile/version.html ãã®ã¸ã
ãããã«æ³¨æã
å人çã«ã¯ããã¾ãã·ã¹ãã ã¯ã¤ããªãã¹ã«å ¥ããããªããã ãã©ãã¾ããããããªããã¨ããããã§
$ /usr/sbin/vagrant -v Vagrant version 1.1.0
ãã¼ã¸ã§ã³ 1.1 ã§ãããã¾ãã
Vagrant ã§ EC2 ã¤ã³ã¹ã¿ã³ã¹ãç«ã¡ä¸ãã
ã¾ãã»ã¼ README.md ã«æ¸ãã¦ãã¨ãããªãã§ããã©ããçµæ§ã¯ã¾ã£ãããããã®ã§ãç´¹ä»ãã¦ãããã
ã¾ã㯠AWS Provider ãå ¥ããããã©ã°ã¤ã³ã§ã (ãããããããã®ä½æ¥å¿ è¦ãªãã®ãããããªã)
$ vagrant plugin install vagrant-aws $ vagrant plugin list vagrant-aws (0.1.0)
EC2 ã Provider ã«ä½¿ãå ´å㯠OS ã®ã¤ã¡ã¼ã¸ã¯ãããªããã©ãBox ãä½ããªãã¨ã ããªã®ã§ããã¼ã®ããã box add ãããã¨ãããã¨ã ããã§ãã
$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box $ vagrant box list Berkshelf-CentOS-6.3-x86_64-minimal (virtualbox) base (virtualbox) dummy (aws)
ç¶ã㦠Vagrantfile ã調æ´ãã¦ããã¾ãããã
$ vagrant init
ã§ä½æãã¦
Vagrant.configure("2") do |config| config.vm.box = "dummy" config.vm.provider :aws do |aws| aws.access_key_id = ENV['AWS_ACCESS_KEY_ID'] aws.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY'] aws.keypair_name = "naoya's keys" aws.ssh_username = "ec2-user" aws.ssh_private_key_path = "~/.ssh/aws-naoyaskeys.pem" aws.instance_type = "t1.micro" aws.region = "ap-northeast-1" aws.ami = "ami-a3af2ba2" aws.security_groups = [ 'webserver' ] end end
ã¨æ¸ãã
èªå㯠AWS ã® API ãã¼ã¯ã·ã§ã«ã®ç°å¢å¤æ°ã«å ¥ãã¦ãã®ã§ããããåã£ã¦ã¾ãã
ssh_usernameãªã©ãã¡ããã¨æå®ããªãã¨è¯ãæãã« ssh ã¯ãã¦ãããªãinstance_typeãæå®ããªãã¨ããããã« m1.small ãèµ·ã¡ä¸ãã£ãããã¦èª²éçã«ã¤ããsecurity_groupsãæå®ããªãã¨å¯¾è±¡ã default ã«ãªããEC2 ã® default 㯠ssh port ã空ãã¦ãªãã®ã§åµã
ãªã©ãªã©ããã®ã§ãã¡ãã£ã¨é¢åã§ããå種é
ç®ã¯ä¸å¯§ã«ã¡ããã¨è¨å®ãã¾ãããããªããconfig.vm.network ãããã¯ä»ã®ã¨ãããµãã¼ããã¦ããªãããã§ãããVPC ã®ã¢ãã¬ã¹ãè¨å®ã§ããé
ç®ãããã®ã§åé¡ãªãã§ãããã
ããã«ã¦æºåå®äºãvagrant up ã«ãããã¾ãã--provider=aws ã§ Provider ã鏿ããã¨ããããã
$ vagrant up --provider=aws Bringing machine 'default' up with 'aws' provider... [default] Warning! The AWS provider doesn't support any of the Vagrant high-level network configurations (`config.vm.network`). They will be silently ignored. [default] Launching an instance with the following settings... [default] -- Type: t1.micro [default] -- AMI: ami-a3af2ba2 [default] -- Region: ap-northeast-1 [default] -- Keypair: naoya's keys [default] -- Security Groups: ["webserver"] [default] Waiting for instance to become "ready"... [default] Waiting for SSH to become available... [default] Machine is booted and ready for use! [default] Rsyncing folder: /Users/naoya/vagrant/ec2berks/ => /vagrant
ã¤ã³ã¹ã¿ã³ã¹ãããã§èµ·ã¡ä¸ããã
$ vagrant ssh
vagrant ssh
Last login: Fri Mar 15 08:52:46 2013 from â¦
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2012.09-release-notes/
There are 11 security update(s) out of 20 total update(s) availableãããã¼ãpublic DNS ãè¦ããªãã¦ã ssh ã§ããã®ãå°å³ã«å¬ããã
$ vagrant destroy
ããã§ã¤ã³ã¹ã¿ã³ã¹ã Terminate ããã¾ããvagrant halt ã ã¨ãããããµã¹ãã³ãã§ã¯ãªããã¨æãã¾ãã
Chef ã§ãããã¸ã§ãã³ã°
EC2 ã¤ã³ã¹ã¿ã³ã¹ã Vagrant ã§ç«ã¡ä¸ãããããã¨ããã ãã ã¨ã¾ãããã¾ã§æ¨ã¿ã¯æããããªãã®ã§ããä¾ãã°è¤æ° VM ãã¾ã¨ãã¦ä½æãã ãã«ãVM æ©è½ã使ã£ãã Chef ã Puppet ãªã©ã®ãããã¸ã§ãã³ã°ãã¼ã«ã¨é£æºã㦠vagrant up æã«ãããã¸ã§ãã³ã°ãèµ°ããã¦ãã¾ã・・・ã¨ãã Vagrant ã®ä»å æ©è½ã使ã£ã¦ããã¨ãEC2 ã Vagrant ã§ç®¡çããæå³ãåºã¦ããã
Chef Solo ã§ãããã¸ã§ãã³ã°ããã£ã¦ã¿ã¾ãããã
Vagrant.configure("2") do |config| config.vm.box = "dummy" config.ssh.username = "ec2-user" # ãããªãã¨ããã config.vm.provider :aws do |aws| # ãã£ãã¨åã end # ãããã¸ã§ãã³ã°ã®è¨å® config.vm.provision :chef_solo do |chef| chef.add_recipe "sandbox" end end
ã¨ããå
·åãChef Solo ã使ãå ´åä¾ã«ãã£ã¦ rsync + ssh ã§ã¬ã·ã転é㨠chef-solo å®è¡ãè¡ãããã§ããããã®éã« config.ssh.username ãæå®ãã¨ããªã㨠vagrant ã¦ã¼ã¶ã¼ã§æä½ãããã¨ãã¦è½ã¡ã¾ãããããã¯ã¾ã£ã¦ vagrant ã®ã½ã¼ã¹èªãã¯ãã«ï½¥ï½¥ï½¥ã
ãã¨ã¯ãã¤ãã©ãããããã¸ã§ãã³ã°ã®è¨å®ããã¦ãããä¸è¨ã® chef ãªãã¸ã§ã¯ãã¯ã»ã¼ãChef Solo ã® JSON ãã¡ã¤ã«ã«è¨è¿°ãã Node Object ç¸å½ã§ãã
ã¯ãã¯ããã¯ã®é ç½®å ´æã¯ Vagrantfile ã®ãããã¹ã® cookbooks ãã£ã¬ã¯ããªãæé»ã«æå¾ ããã¦ããã
$ tree
.
âââ Vagrantfile
âââ cookbooks
âââ sandboxã®ã§ Vagrantfile ã®ããå ´æã§
$ knife cookbook create sandbox -o cookbooks
ã§ä½æããã
ããã§ã¯è©¦ãã« Template ã使ã£ã¦ Ohai ããEC2é¢é£ã®å¤ãåå¾ãããã¡ã¤ã«ãæ¸ãåºãã¦ã¿ããã
# recipes/default.rb template "/tmp/vagrant_test.txt" do mode 0644 end
# templates/default/vagrant_test_txt.erb <%= node[:ec2][:ami_id] %> <%= node[:ec2][:instance_type] %> <%= node[:ec2][:placement_availability_zone] %>
ãã§ã« vagrant up æ¸ã¿ãªã®ã¨ããããã¸ã§ãã³ã°ã ãé©ç¨ããã«ã¯ vagrant provision ã§ãã
$ vagrant provision [default] Rsyncing folder: /Users/naoya/vagrant/ec2berks/ => /vagrant [default] Rsyncing folder: /Users/naoya/vagrant/ec2berks/cookbooks/ => /tmp/vagrant-chef-1/chef-solo-1/cookbooks [default] Running provisioner: VagrantPlugins::Chef::Provisioner::ChefSolo... Generating chef JSON and uploading... Running chef-solo... [2013-03-15T08:52:35+00:00] INFO: *** Chef 10.18.2 *** â¦
$ vagrant ssh $ cat /tmp/vagrant_test.txt ami-a3af2ba2 t1.micro ap-northeast-1a
ã¯ãã䏿ã«ç¼ãã¾ããã
ã¨ããããã§ EC2 ã¤ã³ã¹ã¿ã³ã¹ã Vagrant ã§æä½ã§ããããã«ãªã£ãããã£ã¦ã¿ãã¨ãä¾ãã° EC2 ã¤ã³ã¹ã¿ã³ã¹ãç«ã¡ä¸ããã¹ã¯ãªãããæ¸ã㦠knife-solo ã§ Chef Solo ãæµãã¦ããã¿ãããªãã®ãªã®ã§ããã¾ã§ããããï¼ãã¨ãã話ã§ã¯ãªãã®ãããããªãããã©ãVagrantfile ã«ãã¤ã³ã¹ã¿ã³ã¹ã®ç¶æ ããè¨è¿°ãã¦ç®¡çã§ããç¹ããããã¸ã§ãã¼ã¨ã»ããã«ããã°çµ±ä¸ããã EC2 ä¸ã®è©¦é¨ç°å¢ã®é å¸ã楽ã«ãªãç¹ãªã©ã常ç¨ãã¦ãããããªã¨ãããã¤ã³ãã¯ã¡ãã»ãããããã«æãã¾ããã
éã«ãã«ãVMããããã¸ã§ãã³ã°é£æºã使ããªãã¨ãªãã¨ããããªã«å¬ãããã©ãããèªåã§ EC2 ã¤ã³ã¹ã¿ã³ã¹ç«ã¡ä¸ãã¹ã¯ãªãããæ¸ãããããªãã¦ãããã¨ãããããã§ããããä»å¾ Vagrant Sahara ãªã©ã®ãã©ã°ã¤ã³ã¨ã¡ããã¨é£æºãã¦ãããã©ããã¨ããæ°ã«ãªãã¨ããã§ã¯ããã¾ãã
以ä¸ãVagrant 1.1 ãã£ããã¢ããã§ãããããChef ã®ä½¿ãæ¹ã¨ãè¯ãåãããªã? ãªãã»ã©ããã§ã¯
ããããããã¦ããã¾ããã
