出、出〜、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を選択
# 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
(∩´∀`)∩ワーイ
ね、眠たい・・・・
失敗談とか後で追記していく・・・( ˘ω˘ )ゴーツーオフトゥン