環境が変わっても、Vagrantの使い心地が変わらないようにメモ。
VagrantPlugin
- vagrant-vbguest
- vagrant-winnfsd
vagrant plugin install vagrant-vbguest vagrant-winnfsd
Vagrantfile
############################################# # Vagrantfile [Example CentOS6.5] ############################################# Vagrant.configure("2") do |config| config.vm.box = "example-centos65"; config.vm.box_url = 'https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box'; # 初回起動時のプロビジョニング設定(shellscript/ansible/chef/ファイル転送とか色々ある) # 後述のprovision.shを実行するやつ config.vm.provision :shell, path: "provision.sh", privileged: true config.ssh.username = "root"; config.ssh.password = "vagrant"; config.vm.synced_folder ".", "/vagrant", disabled: true # config.vm.synced_folder 'C:/hoge/data/source/web', '/var/www/html/', type: "nfs" config.vm.network "forwarded_port", guest: 80, host: 80 config.vm.network "forwarded_port", guest: 443, host: 443 config.vm.network "forwarded_port", guest: 5432, host: 5432 config.vm.network "forwarded_port", guest: 8080, host: 8080 config.vm.network "forwarded_port", guest: 9000, host: 9000 config.vm.network "private_network", ip: "192.168.56.10" # config.vm.network "private_network", type: "dhcp" config.vm.provider "virtualbox" do |vb| vb.memory = 1024; # メモリ容量(MB) vb.cpus = 2; # CPU数 vb.gui = false; # falseだとヘッドレス vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] end
provision.sh
プロビジョニング(初回起動時に実行される)用のシェルスクリプト。Vagrantfileのconfig.vm.provision
config.vm.provision :shell, path: "provision.sh", privileged: true
で指定したファイルが実行されるので、Vagrantfileと同じディレクトリに置いておけばOK。
以下の例はboxに対して以下の処理を行っている。(CentOS6.5のbox向けなので注意)
- SELinuxの無効化
- iptablesの無効化
- システム時刻のタイムゾーンをJSTに変更
- yumのremiリポジトリを登録
- yum updateでパッケージ最新化
- 再起動
- ※その他、ミドルウェアを入れたりすることも可能
今更Chefを覚える気力ないので、複雑なことをやらない限りはシェルスクリプトでゴリゴリしてもよいと思う。
#!/bin/bash # disable SELinux sed -ie 's/^SELINUX=.\+$/SELINUX=disabled/g' /etc/sysconfig/selinux # disable iptalbes service iptables stop chkconfig iptables off # set Timezone of SystemClock cat << TIME > /etc/sysconfig/clock ZONE="Asia/Tokyo" UTC="false" TIME source /etc/sysconfig/clock /bin/cp -f /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # add yum repository [remi] rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sed -i -e "s/^enabled=1/enabled=0/g" /etc/yum.repos.d/remi.repo # update all packages yum update -y reboot
コマンドのショートカット
一発でvagrantのディレクトリをカレントディレクトリにしてコンソールを開くやつ。地味便利。
以下のようにショートカットのパスを書き換えてあげればよい。
- GitBashの場合
"C:\Program Files\Gitgit-bash.exe" "--cd=C:\vm\vagrant"
- コマンドプロンプトの場合
cmd.exe /s /k pushd C:\vm\vagrant