でもboxが無いとダメだよね。何処にあるの?どうやって作るの?となります。
ググるとVagrantbox.esなどでboxが公開されていますが、作成者がハッキリしないものは使いたくないので作ることにしました。
VAGRANT DOCSを見ると、次の手順になるようです。
- VirtualBoxで仮想マシンを作り、OSをインストールしてexportする。
- vagrant packageコマンドでパッケージ化する。
で、色々やってくれるツールとしてVeeweeがあります。
Veeweeは、VirtualBoxだけでなくKVM、VMware Fusion、Parallelsの仮想マシンイメージを作ることができるようです。すばらしい。
インストールは、Veewee Installationに書かれているとおりで問題なくできました。
gemでもインストールできるようですが、最新のものでは無いようなのでソースからインストールしました。
私の環境では、rbenvを使用しているので、手順は次のようになります。
git cloneしてbundle installするだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | $ git clone https://github.com/jedi4ever/veewee.gitInitialized empty Git repository in /home/foo/work/veewee/.git/remote: Counting objects: 12661, done.remote: Compressing objects: 100% (4587/4587), done.remote: Total 12661 (delta 8416), reused 11992 (delta 7873)Receiving objects: 100% (12661/12661), 3.74 MiB | 1.30 MiB/s, done.Resolving deltas: 100% (8416/8416), done.$ cd veewee$ rbenv versions 1.8.7-p371* 1.9.3-p429 (set by /usr/local/rbenv/version) 2.0.0-p195$ rbenv local 1.9.3-p429$ bundle installFetching http://github.com/hh/em-winrm.gitremote: Counting objects: 144, done.remote: Compressing objects: 100% (100/100), done.remote: Total 144 (delta 68), reused 113 (delta 43)Receiving objects: 100% (144/144), 23.55 KiB, done.Resolving deltas: 100% (68/68), done.Fetching gem metadata from http://rubygems.org/........Fetching gem metadata from http://rubygems.org/..Resolving dependencies...Installing rake (10.1.0)Installing libxml-ruby (2.6.0) :Installing whichr (0.3.6)Using veewee (0.3.7) from source at /home/foo/work/veeweeYour bundle is complete!Gems in the group kvm were not installed.Use `bundle show [gemname]` to see where a bundled gem is installed.$$ rbenv rehash |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | $ bundle exec veeweeCommands: veewee fusion # Subcommand for Vmware fusion veewee help [COMMAND] # Describe available commands or one specific command veewee kvm # Subcommand for KVM veewee parallels # Subcommand for Parallels veewee vbox # Subcommand for VirtualBox veewee version # Prints the Veewee version information$ bundle exec veewee vboxCommands: veewee vbox build [BOX_NAME] # Build box veewee vbox copy [BOX_NAME] [SRC] [DST] # Copy a file to the VM veewee vbox define [BOX_NAME] [TEMPLATE] # Define a new basebox sta... veewee vbox destroy [BOX_NAME] # Destroys the virtualmach... veewee vbox export [BOX_NAME] # Exports the basebox to t... veewee vbox halt [BOX_NAME] # Activates a shutdown the... veewee vbox help [COMMAND] # Describe subcommands or ... veewee vbox list # Lists all defined boxes veewee vbox ostypes # List the available Opera... veewee vbox screenshot [BOX_NAME] [PNGFILENAME] # Takes a screenshot of th... veewee vbox sendkeys [BOX_NAME] [SEQUENCE] # Sends the key sequence (... veewee vbox ssh [BOX_NAME] [COMMAND] # SSH to box veewee vbox templates # List the currently avail... veewee vbox undefine [BOX_NAME] # Removes the definition o... veewee vbox up [BOX_NAME] # Starts a Box veewee vbox validate [BOX_NAME] # Validates a box against ... veewee vbox winrm [BOX_NAME] [COMMAND] # Execute command via winrmOptions: [--debug] # enable debugging -w, --workdir, [--cwd=CWD] # Change the working directory. (The folder containing the definitions folder). # Default: /home/hide/work/veewee$ |
まずは、使用するテンプレートを決めます。
CentOSのboxを使用することにして、次のようにしてテンプレートのリストを表示させます。
1 2 3 4 5 6 7 8 9 10 | $ bundle exec veewee vbox templates |grep -i centosveewee vbox define '<box_name>' 'CentOS-4.8-i386' --workdir=/home/foo/work/veeweeveewee vbox define '<box_name>' 'CentOS-5.5-i386-netboot' --workdir=/home/foo/work/veewee :veewee vbox define '<box_name>' 'CentOS-6.4-i386-minimal' --workdir=/home/foo/work/veeweeveewee vbox define '<box_name>' 'CentOS-6.4-i386-netboot' --workdir=/home/foo/work/veeweeveewee vbox define '<box_name>' 'CentOS-6.4-x86_64-minimal' --workdir=/home/foo/work/veeweeveewee vbox define '<box_name>' 'CentOS-6.4-x86_64-netboot' --workdir=/home/foo/work/veewee$</box_name></box_name></box_name></box_name></box_name></box_name> |
次に、「define」コマンドで定義ファイルを出力させます。
1 2 3 4 5 | $ bundle exec veewee vbox define 'CentOS-6.4-x86_64' 'CentOS-6.4-x86_64-minimal'The basebox 'CentOS-6.4-x86_64' has been successfully created from the template 'CentOS-6.4-x86_64-minimal'You can now edit the definition files stored in /home/foo/work/veewee/definitions/CentOS-6.4-x86_64 or build the box with:veewee vbox build 'CentOS-6.4-x86_64' --workdir=/home/foo/work/veewee$ |
1 2 3 4 5 6 | $ ls definitions/CentOS-6.4-x86_64$ ls definitions/CentOS-6.4-x86_64/base.sh cleanup.sh ks.cfg vagrant.sh vmfusion.shchef.sh definition.rb puppet.sh virtualbox.sh zerodisk.sh$ |
definition.rbが主設定ファイル、ks.cfgがkickstartファイル、*.shがインストール後に実行されるスクリプトという感じのようです。
今回は、次のようにISOイメージのダウンロードサイトと、キックスタートでの言語、キーボード、タイムゾーンだけ変更してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | $ diff -uw definitions/CentOS-6.4-x86_64/{definition.rb.original,definition.rb}--- definitions/CentOS-6.4-x86_64/definition.rb.original 2013-07-13 21:35:08.719699339 +0900+++ definitions/CentOS-6.4-x86_64/definition.rb 2013-07-14 11:27:50.263552526 +0900@@ -6,7 +6,7 @@ :hostiocache => 'off', :os_type_id => 'RedHat6_64', :iso_file => "CentOS-6.4-x86_64-minimal.iso", :iso_md5 => "4a5fa01c81cc300f4729136e28ebe600", :iso_download_timeout => 1000, :boot_wait => "10",$$ diff -uw definitions/CentOS-6.4-x86_64/{ks.cfg.original,ks.cfg}--- definitions/CentOS-6.4-x86_64/ks.cfg.original 2013-07-13 21:35:08.719699339 +0900+++ definitions/CentOS-6.4-x86_64/ks.cfg 2013-07-14 11:28:32.210553491 +0900@@ -1,13 +1,13 @@ install cdrom-lang en_US.UTF-8-keyboard us+lang ja_JP.UTF-8+keyboard jp106 network --bootproto=dhcp rootpw --iscrypted $1$damlkd,f$UC/u5pUts5QiU3ow.CSso/ firewall --enabled --service=ssh authconfig --enableshadow --passalgo=sha512 selinux --disabled-timezone UTC+timezone Asia/Tokyo bootloader --location=mbr text |
「build」コマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | $ bundle exec veewee vbox build 'CentOS-6.4-x86_64'Downloading vbox guest additions iso v 4.2.14 - http://download.virtualbox.org/virtualbox/4.2.14/VBoxGuestAdditions_4.2.14.isoChecking if isofile VBoxGuestAdditions_4.2.14.iso already exists.Full path: /home/foo/work/veewee/iso/VBoxGuestAdditions_4.2.14.isoThe isofile VBoxGuestAdditions_4.2.14.iso already exists.Building Box CentOS-6.4-x86_64 with Definition CentOS-6.4-x86_64:- debug : false- cwd : /home/foo/work/veewee- force : false- nogui : false- auto : false- checksum : false- redirectconsole : false- postinstall_include : []- postinstall_exclude : []We did not find an isofile here : /home/foo/work/veewee/iso/CentOS-6.4-x86_64-minimal.iso.The definition provided the following download information:- Md5 Checksum: 4a5fa01c81cc300f4729136e28ebe600Download? (Yes/No) YesChecking if isofile CentOS-6.4-x86_64-minimal.iso already exists.Full path: /home/foo/work/veewee/iso/CentOS-6.4-x86_64-minimal.isoMoving /tmp/open-uri20130713-9671-3i1bbnotoo/home/foo/work/veewee/iso/CentOS-6.4-x86_64-minimal.iso| 343M 6.1MB/s ETA: 0:00:00Creating vm CentOS-6.4-x86_64 : 480M - 1 CPU - RedHat_64Creating new harddrive of size 10140, format VDI, variant StandardAttaching disk: /home/foo/VirtualBox VMs/CentOS-6.4-x86_64/CentOS-6.4-x86_641.vdiMounting cdrom: /home/foo/work/veewee/iso/CentOS-6.4-x86_64-minimal.isoMounting guest additions: /home/foo/work/veewee/iso/VBoxGuestAdditions_4.2.14.isoFinding unused TCP port in range: 7222 - 7262Selected TCP port 7222Finding unused TCP port in range: 7222 - 7262Selected TCP port 7222Waiting 10 seconds for the machine to bootFinding unused TCP port in range: 7122 - 7199Selected TCP port 7122Starting a webserver :7122Typing:[1]: <tab> text ks=http://10.0.2.2:7122/ks.cfg<enter>Error: We executed a shell command and the exit status was not 0- Command :VBoxManage controlvm "CentOS-6.4-x86_64" keyboardputscancode 0f.- Exitcode :1.- Output :VBoxManage: error: Guest not running$</enter></tab> |
しばらく待ってもプロンプトが帰ってこないので、CTRL+Cで抜けました。
ちなみに、途中「Download? (Yes/No)」の箇所で正しく「Yes」と入力しないと、手動でダウンロードするように言われます。
1 2 3 4 5 6 | Download? (Yes/No) YYou have selected manual download:curl -C - -L 'http://ftp.riken.jp/Linux/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-minimal.iso' -o 'iso/CentOS-6.4-x86_64-minimal.iso'md5 'iso/CentOS-6.4-x86_64-minimal.iso'$ |
0 件のコメント:
コメントを投稿