たまごかける日報

ここにAA貼りたい

出、出〜、Vagrant用Box作奴〜wwwww

経緯

色々細かいことは置いておいて、
Vagrantでさくっとchefのテストをしたかったんだけど、社内のリポジトリを見てるBase Boxが見当たらなかったので作ることにした。

設定色々

順番としては
VirtualBoxにお好みのOS入れる
Vagrant連携用の設定を入れる
お好みの設定を入れる(今回の場合僕は社内のリポジトリを見るようにしました)
BaseBoxに仕立て上げる

意外とさっくり作れるからさくっとやってみよう

OS Install

Cent6.4のminimalをここから取ってきてVirtualBoxでインストールしてね

Network設定

そのまんまインストールしてるとeth1がONBOOT="no"になってるからyesにしてね。

# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO="dhcp"

# /etc/init.d/network restart

ビルド用のパッケージとか、アップデートとか

# yum install ruby ruby-devel gcc gcc-c++ automake autoconf make rubygems kernel-devel
# yum update
# reboot

Virtual Box Guest Additions

ファイル共有とかポートフォワーディングとか使うためにVirtual Box Guest Additionsを入れてくよ
VirtualBox
Devices>Install Guest Additionsを選択


f:id:kakerukaeru:20130728033034p:plain


# mkdir /media/cdrom
# mount /dev/cdrom /media/cdrom
# sh /mnt/VBoxLinuxAdditions.run 
Installing the Window System drivers                       [失敗]
(Could not find the X.Org or XFree86 Window System.)

X環境が入ってないよって言われて怒られるけど、まぁ入れてないしね。
入ってなくてもいいしそのまま続行

本当に出来てるか確認してみよう

# VBoxControl --version
# VBoxService --version

Vagrant用の設定

vagrant用ユーザーとsudo権限を付けるよ

# useradd -m vagrant
# usermod -aG wheel vagrant
# echo vagrant | passwd vagrant --stdin
# echo "vagrant ALL=(ALL) ALL" >> /etc/sudoers
# echo "%wheel ALL=NOPASSWD: ALL" >> /etc/sudoers
# echo "Defaults env_keep=\"SSH_AUTH_SOCK\"" >> /etc/sudoers

ssh経由のsudoを許可するためにrequirettyフラグを折ってあげよう

Default !requiretty

vagrantのpublickeyを登録

# mkdir -m 0700 /home/vagrant/.ssh
# curl -s https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub > \
> /home/vagrant/.ssh/authorized_keys
# chown -R vagrant:vagrant /home/vagrant/.ssh
# chmod -R 0600 /home/vagrant/.ssh/*

Chef入れる

$ sudo su -
# curl -L http://www.opscode.com/chef/install.sh | bash

お好みの設定を入れる

今回は社内のリポジトリを見るようの設定を入れたかったので、

# vi /etc/yum.repos.d/CentOS-Base.repo
お好みの設定を入れてね
# yum clean all

base box化

vagrant package --base TestBox(今回VirtualBoxで作ったインスタンスの名前)
[TestBox] Clearing any previously set forwarded ports...
[TestBox] Creating temporary directory for export...
[TestBox] Exporting VM..

そうすると、package.boxがカレントディレクトリにできるので、それをbox addしてあげる
ちなみに、対象イメージが起動中だとboxを作れないから先にshutdownしてあげよう

# vagrant box add TestBox package.box
vagrant] Downloading with Vagrant::Downloaders::File...
[vagrant] Copying box to temporary location...
[vagrant] Extracting box...


あとは、お好みに使ってね
以上で、終了

ちなみに

使うまでも一応書いておくね

# vagrant init TestBox
# vim Vagrantfile
僕が使ってたのはこんな感じ↓
Vagrant::Config.run do |config|
      config.vm.box = "TestBox"
#     config.vm.box = "CentOS-6.2-x86_64"
      config.vm.forward_port 80, 8080
      config.vm.customize do |vm|
            vm.memory_size = 1024
      end
      config.vm.provision :chef_solo do |chef|
            chef.cookbooks_path = "~/chef_2/public/cookbooks"
            chef.add_recipe "test::test"
      end
end
 

あとは起動して入るだけ

# vagrant up
# vagrant ssh


(∩´∀`)∩ワーイ

ね、眠たい・・・・
失敗談とか後で追記していく・・・( ˘ω˘ )ゴーツーオフトゥン