Vagrant
å æ¥ Vagrant ã触ã£ã¦ã¿ãã便å©ããã¦é¼»è¡ãåºã¾ããããã°ããè¦ãªããã¡ã«è²ã é²ãã§ãããã§ããããããã¯ãåã£ã¡ããã¾ããã
Vagrant ã¯ä»®æ³ãã·ã³ã® VirtualBox ã®ããã³ãã¨ã³ãã«ç¸å½ãããruby ã§æ¸ããããã¼ã«ã§ããvagrant ã³ãã³ããªã©ã使ã£ã¦ã³ãã³ãã©ã¤ã³ããç°¡åã«æ°ãã VM ãä½ããã
% gem install vagrant % vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.3-x86_64-v20130101.box % vagrant init centos % vagrant up
ããã ãã§ CentOS ã® Linux box ããã¼ã«ã«ãã·ã³å ã«ç«ã¡ä¸ãããã¨ãã§ããã*1 *2ããªã«ãããããã
% vagrant ssh
ã§ãã²ã¹ãOSã«ãã°ã¤ã³ã
Vagrant 㯠chef ã puppet ãªã©ã®èªååãã¼ã«ã¨ã®é£æºããããããªã£ã¦ã¦ãVM ç«ã¡ä¸ãã®ãã OSãã¢ããªã±ã¼ã·ã§ã³ã®ç°å¢æ§ç¯ã¾ã§ã䏿°éé¢ã§èªååãããã¨ãæ³å®ããã¦ã¾ãã
ã¡ãã£ã¨ãããã¹ãã®ããã«å£ãã¦ãããç°å¢ã欲ããã¨ããã®ã«ããã¡ãã使ãã¾ãããæ¹ã ãè¦ã¦ããã¨çµç¹ã®ä¸ã§æ¨æºåãããéçºç°å¢ãå ¨éçºè ã«é å¸ããã¨ããªããã«ã使ããã¦ããããã§ãããèªå㯠EC2 ã§ãã¹ããã¦ããã¹ãã¼ã¸ã³ã°ãµã¼ãã¼ã¸ chef-solo ãæµãåã« vagrant ã§èª¿æ´ãã¦ãåé¡ãªããã°ã¹ãã¼ã¸ã³ã°ã«ã chef ãé©ç¨ããã®ã«ä½¿ã£ã¦ã¾ãã
ãã詳ããå°å ¥æ¹æ³ã¯ Vagrantで簡単仮想マシン構築 | Ryuzee.com ããããã©ããã
vagrant sandbox ã¨ã
Vagrant == ããã°ã©ããã«ã§ãã¼ã¿ãã«ãª VMããã®è¾ºãå£éè¦ããä¾ãã
Sahara ã¨ãããµã¼ããã¼ãã£ã©ã¤ãã©ãªã¯ Vagrant ã« commit & rollback ãã§ããæ©è½ã追å ãã¾ããvagrant ä¸ã§ãããã使¥ãã¦ãã¾ãã¡ã ãªãã¨ããã£ãã vagrant sandbox roollback ããã¨ç°å¢ãå·»ãæ»ããã¨ãã§ãããããã¾ããããã
# sandbox ã¢ã¼ãã«å ¥ã % vagrant sandbox on # sandbox ã¢ã¼ã on ã«å ¥ã£ãæç¹ã¾ã§å·»ãæ»ã! % vagrant sandbox rollback # 夿´ãç¢ºå® % vagrant sandbox commit
vagrant sahara ã¯ä»¥ä¸ã§å ¥ãã¾ãã
% vagrant gem install sahara
Amazon EC2 ã®ã¹ãããã·ã§ããã®ããã«ãä»»æã®ã¿ã¤ãã³ã°ã® OS ã®ã¹ãããã·ã§ãããåå¾ãã¦ãããããå¥ã®ã¤ã³ã¹ã¿ã³ã¹ãè¤è£½ãããªãã¦ãã¨ãã§ãããvagrant package ã使ãã
% vagrant package % ls -la package.box -rw-r--r-- 1 naoya staff 545475584 2 5 04:33 package.box % vagrant box add my_box package.box % vagrant init my_box % vagrant up
ãããªæãã§ãåã« VM ãç°¡åã«èµ·åã§ãããã¼ä»¥ä¸ã®ä¾¿å©ãããvagrant ã«ã¯åãã£ã¦ãã¾ãã
Vagrant + chef-solo ã§ç°å¢æ§ç¯ã®èªåå
ã¯ã³ã¹ãããã§ VM ãç«ã¡ä¸ãããããªãããã®å¾ã®ã½ããã¦ã§ã¢ã®ç°å¢æ§ç¯ã chef-solo ã§èªååãããã¨ããã®ã¯å½ç¶ã®ãã¨ã試ãã¦ã¿ãæããç´è¿ã ã¨ä»¥ä¸ã®äºã¤ã®æ¹æ³ã®ãããããè¯ãããã
knife-solo 㯠開発メモ#5 : Amazon Linux で knife-solo を使って chef-solo 実行 - naoyaのはてなダイアリー ã§ãç´¹ä»ãã chef-solo ã®ããã³ãã¨ã³ããã¼ã«ãvagrant ã§ãç¡çãªãã¹ã ã¼ãºã«ä½¿ãããBerkshelf 㯠chef ç¨ã® Bundlr ã¿ãããªãã®ã« Vagrant ã¨ã®é£æºæ©è½ãã¤ãããã®ã
knife-solo
knife-solo ã§ vagrant ã« chef-solo ããæé ãè¨ãã¦ããã¾ãããã
% gem install knife-solo
ã§ knife-solo ãã¤ã³ã¹ãã¼ã«ã
% vagrant up
ã§ VM ãç«ã¡ä¸ãããå¼ãç¶ããã¼ã«ã«ãã·ã³ã§
% knife solo init chef-repo % cd chef-repo % knife solo prepare [email protected]
ãå®è¡ããã192.168.50.2 㯠VM ã®ã¢ãã¬ã¹ãäºåã« ssh ãéãããã« ~/.ssh/config ã«
Host 192.168.50.*
IdentityFile ~/.vagrant.d/insecure_private_key㨠vagrant ã® private key ãæå®ãã¦ããã¨ã¹ã ã¼ãºã
knife solo prepare ãå®è¡ããã¨ãVM ä¸ã® OS ã§ chef-solo ãå®è¡ã§ããããã«èª¿æ´ãã¦ããããé¢åãªã¤ã³ã¹ãã¼ã«ä½æ¥ãè¨å®ã¯ä¸åå¿ è¦ãªãã
ãã¨ã¯ãã¤ãéã json ãã¡ã¤ã«ãã¬ã·ãã®ç·¨éãè¡ã£ã¦
% knife solo cook [email protected]
ã§ okãrsync ã§ã¬ã·ããã²ã¹ãOSã«è»¢éãã㦠chef-solo ãå®è¡ããããããã¾ã§ VM ä¸ã® OS ã«ã¯ä¸åãã°ã¤ã³ãã¦ãªãã¨ããããã¤ã³ãã§ããã
Berkshelf
knife-solo ã使ãå ´åã¯ãVagrant ã¨ã¯ç¬ç«ãã knife ã¨ããå¥ã®ãã¼ã«ãå·§ã使ã£ã¦ããæãã§å ã®ã¨ã³ããªã§ãæ¸ããããã« EC2 ã§ãåãæ¹æ³ã使ãããªã©ç°å¢ãé¸ã°ãªãã
䏿¹ã次㯠Berkshelf ã®æ¹ããã¡ãã¯ãã Vagrant ã¨å¯ã«é£æºã§ãããã¼ã«ãBundlr çã«ã¬ã·ããåæãã¦ããã¨ãªã¢ã¼ãããåã£ã¦ãã¦ã»ããã¢ãããã¦ããã¤ã¤ VM ç«ã¡ä¸ãæã«ãããã chef-solo ãã¦ãããã
% gem install berkshelf
ã§ã¤ã³ã¹ãã¼ã«ãberks ã³ãã³ãã使ããããã«ãªããberks cookbook ããã¨
% berks cookbook sandbox
create sandbox/files/default
create sandbox/templates/default
create sandbox/attributes
create sandbox/definitions
create sandbox/libraries
create sandbox/providers
create sandbox/recipes
create sandbox/resources
create sandbox/recipes/default.rb
create sandbox/metadata.rb
create sandbox/LICENSE
create sandbox/README.md
create sandbox/Berksfile
create sandbox/chefignore
create sandbox/.gitignore
run git init from "./sandbox"
create sandbox/Gemfile
create sandbox/Vagrantfile
Using sandbox (0.1.0) at path: '/Users/naoya/work/sandbox/sandbox'ã¨ããæãã§ãä¸å¯§ã« chef ã®ã¯ãã¯ããã¯ãä½ã£ã¦ git init ã¾ã§ãã¦ããããvagrant ã Bundler ã§åããç¨ã«ãGemfile ãã
% cd sandbox % bundle
次㫠Berksfile ã«ããªã¢ã¼ãããæã£ã¦ãããã¬ã·ããåæãããããã§ã¯ä¾ã¨ã㦠opscode ã® yum ãæã£ã¦ã㦠EPEL ãæå¹ã«ãã¦ã¿ãã
site :opscode metadata cookbook 'yum'
次ã«ãã²ãªå½¢ã¨ãã¦çæããã¦ãã Vagrantfile ãç·¨éã使ã boxããããã¯ã¼ã¯ã¢ãã¬ã¹ã®ç·¨éã®ä»ã« chef ã«ã¾ã¤ããè¨è¿°ãããããã㯠Berkshelf ã®æ©è½ã§ã¯ãªã Vagrant ã® chef 飿ºæ©è½ã§ chef ãªãã¸ã§ã¯ãã« chef ã® JSON ç¸å½ã®ãã¼ã¿ã渡ããã¨ã§ chef-solo å®è¡å 容ãæå®ãããã¨ãã§ããã
require 'berkshelf/vagrant' Vagrant::Config.run do |config| config.vm.host_name = "sandbox-berkshelf" config.vm.box = "centos" config.vm.network :hostonly, "192.168.50.5" # chef ã®å®è¡ config.vm.provision :chef_solo do |chef| chef.run_list = [ "recipe[sandbox::default]", "recipe[yum::epel]" ] end end
ããã§æºåã¯å®äºã
% bundle exec vagrant up
ã¨ããã¨ããªã¢ã¼ããã yum ã¬ãã¸ããªãåã£ã¦ã㦠chef-solo ãèµ°ã
[default] Importing base box 'centos'⦠[default] Matching MAC address for NAT networking... [default] Clearing any previously set forwarded ports... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [Berkshelf] installing cookbooks... [Berkshelf] Using sandbox (0.1.0) at path: '/Users/naoya/work/sandbox/sandbox' [Berkshelf] Using yum (2.1.0) [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! [default] Configuring and enabling network interfaces... [default] Setting host name... [default] Mounting shared folders... [default] -- v-root: /vagrant [default] -- v-csc-1: /tmp/vagrant-chef-1/chef-solo-1/cookbooks [default] Running provisioner: Vagrant::Provisioners::ChefSolo... [default] Generating chef JSON and uploading... [default] Running chef-solo...
% bundle exec vagrant ssh Welcome to your Vagrant-built virtual machine. [vagrant@sandbox-berkshelf ~]$
ãè¦äºã
knife-solo ã®å ´å㯠VM ã®ç«ã¡ä¸ã㨠knife-solo ã®å®è¡ã¯åé¢ããã¦ãããã©ããã¡ã㯠vagrant up ä¸åã§ã¯ã³ã¹ããããã¾ããã®ã¸ã㯠Berkshelf ã®æ©è½ã¨ãããã㯠Vagrant ã® chef-solo 飿ºã®é¨åã§ããã
ãªããchef-solo ãããã«å®è¡ããå ´åã¯ãã¡ãã¡ VM ãåã㦠vagrant up ã¨ãããªãã¦ã
% bundle exec vagrant provision
ã§ chef-solo ã ããèµ°ãããã«ãªã£ã¦ã¾ãã
Berkshelf ãåç¬ã§ä½¿ã
Berkshelf ã¯ä¾¿å©ã§ãããVagrant ã¨ãã£ã¤ãã¦ããæããªã®ããchef-solo ãä»ç°å¢ã§å®è¡ãããã¨ãèããã¨ãã«è¥å¹²å¾®å¦ã§ã¯ãããBundlr çãªé¨åã ãã使ããããã¨ããå ´åã¯èªåã§ chef ã¬ãã¸ããªå ã« Berksfile ãç¨æãã¦
% berks install --path vendor/cookbooks
ã¨ããã¨ãBerksfile å ã«åæããã¬ã·ãã vendor/cookbooks å ã«å ¥ãã
ãã¾ã : rbenv ç°å¢ã® chef
knife-solo ã§ chef ãå®è¡ãã㨠knife prepare ã§å ¥ãã®ã¯ Omibus Chef Packaging ã® chefãruby ã¯ããã±ã¼ã¸ã«çµã¿è¾¼ã¿ã®ãã®ãBerkshelf ã®å ´å㯠Vagrant box ã«çµã¿è¾¼ã¾ãã chef-soloã
åæã®ã»ããã¢ããã® chef-solo ã¯ãããã使ãã¨ãã¦ãbootstrap ãå®äºããã rbenv 㪠ruby ã§ chef-solo ããã・・・ã¨ãããã¨ããããããããªãããã®è¾ºãã®ãµã³ãã«ã¨æé ã以ä¸ã«ã¾ã¨ãã¦ããã¾ããã
knife-solo ã使ãå ´åå°ã hack ããªãã¨ãããªãã®ããé£ç¹ã
ã¾ã¨ã
Vagrant ãã³ãª! (ã¾ã¨ã¾ã£ã¦ãªã)
å£ããã£ã¦å ¨ãçããªããã¹ãã10ç§ã§æã«å ¥ãããã«ãªã£ã¦ããããã試è¡é¯èª¤ããããããªãã¾ãããã¨ãããããchef ã¬ã·ãã®èª¿æ´ã楽ã«ãªã£ã¦ã¨ã¦ãæºè¶³ã§ãããã¾ãã
åèURL
*1:VirtualBox ããããããã¤ã³ã¹ãã¼ã«ãã¦ããå¿ è¦ãããã¾ãã
*2:ãã®å¾ã® update ã§ vagrant ã gem ããå ¥ããã®ã¯éæ¨å¥¨ã«ãªãã¾ãããhttp://downloads.vagrantup.com/ ã®ããã±ã¼ã¸ã§ããã¦ããã¨ã®ãã¨
