https://www.virtualbox.org/wiki/Downloads
VirtualBox-4.2.16-86992-Win.exe
※Ver4.3はvirtualboxが動作しないバグあり
http://www.vagrantup.com/
Vagrant Archive
http://downloads.vagrantup.com/
Vagrant_1.2.4.msi
http://www.vagrantbox.es/
セットアップ済みのOSイメージ
VMWareとVirtualBOXの2種類あるが、VirtualBOX使用。
$ vagrant box add {title} {url} $ vagrant init {title} $ vagrant up
C:\Users\*****>vagrant -h Usage: vagrant [-v] [-h] command [<args>] -v, --version Print the version and exit. -h, --help Print this help. Available subcommands: box destroy halt init package plugin provision reload resume sandbox ssh ssh-config status suspend up For help on any individual command run `vagrant COMMAND -h`
C:\Users\*****>vagrant -v Vagrant version 1.2.4
C:\Users\*****>vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.3-x86_64-v20130101.box
標準ではC:\Users\*\.vagrant.d\boxes配下にダウンロードされる
ダウンロード後に作成される「C:\Users\*\.vagrant.d\boxes\centos\virtualbox\Vagrantfile」に
アプリのインストールなど共通処理を記述しておくと、セットアップ時に自動実行される
C:\Users\*****>vagrant init centos
コマンド実行時のディレクトリ(標準ではC:\Users\*\)に設定ファイル「Vagrantfile」が作成される
C:\Users\*****>vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Importing base box 'centos'... [0K[default] Matching MAC address for NAT networking... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Fixed port collision for 22 => 2222. Now on port 2200. [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2200 (adapter 1) [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! [default] Mounting shared folders... [default] -- /vagrant
C:\Users\*****>vagrant status Current machine states: default running (virtualbox) The VM is running. To stop this VM, you can run `vagrant halt` to shut it down forcefully, or you can run `vagrant suspend` to simply suspend the virtual machine. In either case, to restart it again, simply run `vagrant up`.
C:\Users\*****>vagrant ssh `ssh` executable not found in any directories in the %PATH% variable. Is an SSH client installed? Try installing Cygwin, MinGW or Git, all of which contain an SSH client. Or use the PuTTY SSH client with the following authentication information shown below: Host: 127.0.0.1 Port: 2200 Username: vagrant Private key: C:/Users/*****/.vagrant.d/insecure_private_key
デフォルトのユーザ/パスワードは「vagrant/vagrant」
login as: vagrant vagrant@127.0.0.1's password:(vagrant) Welcome to your Vagrant-built virtual machine. [vagrant@localhost ~]$ sudo su - [root@localhost ~]#
vagrant up
vagrant halt
vagrant destroy
プロジェクト名:samplePJ
vm名:sampleVM
ipアドレス:192.168.10.199
C:\Users\*****>mkdir samplePJ
C:\Users\*****>cd samplePJ
C:\Users\*****\samplePJ>vagrant init centos A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
C:\Users\*\samplePJ\Vagrantfileを編集
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "centos" config.vm.define :sampleVM do |sampleVM| sampleVM.vm.network :private_network, ip: "192.168.10.199" end end
C:\Users\*****\samplePJ>vagrant init centos A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
C:\Users\*****\samplePJ>vagrant up sampleVM Bringing machine 'sampleVM' up with 'virtualbox' provider... [sampleVM] Importing base box 'centos'... [0K[sampleVM] Matching MAC address for NAT networking... [sampleVM] Setting the name of the VM... [sampleVM] Clearing any previously set forwarded ports... [sampleVM] Fixed port collision for 22 => 2222. Now on port 2200. [sampleVM] Creating shared folders metadata... [sampleVM] Clearing any previously set network interfaces... [sampleVM] Preparing network interfaces based on configuration... [sampleVM] Forwarding ports... [sampleVM] -- 22 => 2200 (adapter 1) [sampleVM] Booting VM... [sampleVM] Waiting for VM to boot. This can take a few minutes. [sampleVM] VM booted and ready for use! [sampleVM] Configuring and enabling network interfaces... [sampleVM] Mounting shared folders... [sampleVM] -- /vagrant
C:\Users\*****\samplePJ\.vagrant\machines C:\Users\*****\samplePJ\.vagrant\machines\sampleVM\virtualbox\id
0c17f8bf-e56f-4a1b-8f7c-6c94bb587415
C:\Users\*****\VirtualBox VMs\~
samplePJ_1390202702ディレクトリが作成されて、配下にvm保存
C:\Users\*****\samplePJ>vagrant status Current machine states: sampleVM running (virtualbox) The VM is running. To stop this VM, you can run `vagrant halt` to shut it down forcefully, or you can run `vagrant suspend` to simply suspend the virtual machine. In either case, to restart it again, simply run `vagrant up`.
C:\Users\*****\samplePJ>vagrant ssh sampleVM `ssh` executable not found in any directories in the %PATH% variable. Is an SSH client installed? Try installing Cygwin, MinGW or Git, all of which contain an SSH client. Or use the PuTTY SSH client with the following authentication information shown below: Host: 127.0.0.1 Port: 2200 Username: vagrant Private key: C:/Users/*****/.vagrant.d/insecure_private_key
putty
login as: vagrant vagrant@192.168.10.199's password:(vagrant) Welcome to your Vagrant-built virtual machine. [vagrant@localhost ~]$ sudo su - [root@localhost ~]#
「db01-disk001.vdi」という5GBのファイルを作成して、アタッチする。
Vagrant.configure(2) do |config| config.vm.define :db01 do |node| node.vm.box = "chef/centos-6.6" node.vm.hostname = "db01.dev" node.vm.network "private_network", ip: "192.168.56.211" node.vm.provider "virtualbox" do |vm| ext_disk = 'db01-disk001.vdi' unless File.exists?(ext_disk) vm.customize ['createhd', '--filename', ext_disk, '--size', 5 * 1024] end vm.customize ['storageattach', :id, '--storagectl', 'IDE Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', ext_disk] end end end
C:\Users\*****\samplePJ>vagrant plugin install sahara
C:\Users\*****\samplePJ>vagrant sandbox on sampleVM 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:\Users\*****>vagrant sandbox status [sampleVM] Sandbox mode is on
vmでphpをインストールする
[root@localhost ~]# yum list installed | grep php [root@localhost ~]# yum install -y php ~省略~ Complete! [root@localhost ~]# yum list installed | grep php php.x86_64 5.3.3-27.el6_5 @updates php-cli.x86_64 5.3.3-27.el6_5 @updates php-common.x86_64 5.3.3-27.el6_5 @updates
vagrantからロールバックコマンドを実行する
C:\Users\*****>vagrant sandbox rollback sample 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
vmでphpがインストールされていない(される前に戻っている)事を確認
[root@localhost ~]# yum list installed | grep php
C:\Users\*****>vagrant sandbox commit sample 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[root@localhost ~]# yum list installed | grep mysql
[root@localhost ~]# yum install -y mysql
~省略~
Complete!
C:\Users\*****>vagrant sandbox off sample 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
※commitされていない処理はcommitされる
C:\Users\*****>vagrant sandbox status [sample] Sandbox mode is off
[root@localhost ~]# yum list installed | grep mysql mysql.x86_64 5.1.71-1.el6 @base mysql-libs.x86_64 5.1.71-1.el6 @base
C:\Users\*>vagrant plugin install vagrant-global-status
Installing the 'vagrant-global-status' plugin. This can take a few minutes…
Installed the plugin 'vagrant-global-status (0.1.4)'!
C:\Users\*>vagrant global-status -a
文字化け。。。
C:\Users\*>vagrant status
Current machine states:
sample inaccessible (virtualbox)
This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.
C:\Users\*>“C:\Program Files\Oracle\VirtualBox\VBoxManage.exe” list vms
“<inaccessible>” {4f131712-d950-4f4c-bf08-d9b80d89abe9}
C:\Users\*>“C:\Program Files\Oracle\VirtualBox\VBoxManage.exe” unregistervm {4f131712-d950-4f4c-bf08-d9b80d89abe9}
C:\Users\*>vagrant status
Current machine states:
sample not created (virtualbox)
This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.
==> cen: Mounting shared folders... cen: /vagrant => C:/centos/web/ Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was: mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant The error output from the last command was: /sbin/mount.vboxsf: mounting failed with the error: No such device
# /etc/init.d/vboxadd setup Removing existing VirtualBox non-DKMS kernel modules [ OK ] Building the VirtualBox Guest Additions kernel modules The headers for the current running kernel were not found. If the following module compilation fails then this could be the reason. The missing package can be probably installed with yum install kernel-devel-2.6.32-504.23.4.el6.x86_64 Building the main Guest Additions module [FAILED] (Look at /var/log/vboxadd-install.log to find out what went wrong) Doing non-kernel setup of the Guest Additions [ OK ]
# yum -y install gcc perl kernel-devel-2.6.32-504.23.4.el6.x86_64 # /etc/init.d/vboxadd setup