vagrant、全く使えていないのだけど、流行ってるので。
でも、誰が作ったかわからないvagrantのboxを使うのがなんか嫌だったので。
環境はこれ。
Windows 7 64bit
VirtualBox 4.2.16
vagrant 1.1.4 (最新は1.2.7.)
DHCP環境あり
VirtualBoxで適当にVMを作る。スペックは何でもヨシ。
NATで使う場合、ポートフォワーディング設定して接続できるようにしておくと使い慣れたSSH端末から操作できて楽。
ホスト | 指定なし |
ホストPort | 2222 |
ゲスト | 指定なし |
ゲストPort | 22 |
OSは CentOS 6.4 Minimal x64_86 を入れます。
OSのセットアップ手順は省略。
rootでログインしたら、まずはネットワーク起動
ifup eth0
以降はSSH経由(localhost:2222)で作業できます。
eth0を自動的に起動するようにしておく
sed -i 's/ONBOOT=.*/ONBOOT="yes"/' /etc/sysconfig/network-scripts/ifcfg-eth0
yum updateと使いそうなパッケージを入れておく
yum -y update yum -y install sudo
古いkernelの除去(yum list kernel とかで調べる)
yum remove kernel-2.6.32-358.el6
kernelの更新のため、再起動
reboot
vagrantユーザの作成
groupadd vagrant --gid 900 useradd vagrant -g vagrant --uid 900 echo "vagrant" | passwd --stdin vagrant
sudoersの書き換え。vagrantグループを特別扱いする
cat << __EOF__ >> /etc/sudoers %vagrant ALL=(ALL) NOPASSWD: ALL Defaults:%vagrant !requiretty Defaults:%vagrant env_keep="SSH_AUTH_SOCK" __EOF__
以降、vagrantで操作
su - vagrant
SSH鍵を登録しておく。決められた鍵があり、それで接続できるようになっている。
mkdir /home/vagrant/.ssh chmod 0700 /home/vagrant/.ssh curl -s https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub > /home/vagrant/.ssh/authorized_keys chmod 0600 /home/vagrant/.ssh/authorized_keys
sshd_configの書き換え。(相変わらずこの辺りの設定を忘れる)
sudo cat << __EOF__ | sudo tee /etc/ssh/sshd_config # SSH2のみ許容 Protocol 2 # ログレベル SyslogFacility AUTHPRIV # RSA鍵を使った認証を有効 RSAAuthentication yes # 公開鍵認証を有効 PubkeyAuthentication yes # 公開鍵ファイルの場所。(/home/[user]/.ssh/authorized_keys) AuthorizedKeysFile .ssh/authorized_keys # 空パスワードは無効 PermitEmptyPasswords no # パスワード認証は無効 PasswordAuthentication no # パスワード認証を無効にするのに必要 ChallengeResponseAuthentication no # GSSAPI GSSAPIAuthentication yes GSSAPICleanupCredentials yes # PAM認証も不要 UsePAM no # デフォルトの設定をそのまま。 AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS X11Forwarding no # ログイン時にお知らせ PrintMotd no # ログイン時に前回ログインしたときの日時を表示 PrintLastLog yes # DNSを使い、IPからホスト名を求め(逆引き)、得たホスト名からIPを求め(正引き)られるか確認する。いらないので無効。 UseDNS no # ログイン中に表示するバナー。ファイルの内容を出力するが、不要なのでnone. Banner none # デフォルトの設定をそのまま。 Subsystem sftp /usr/libexec/openssh/sftp-server # 鍵接続できるようにするユーザとグループを制限 AllowGroups vagrant users AllowUsers vagrant __EOF__
SSHd再起動
sudo service sshd restart
VirtualBox Guest Additionsの導入。(これは無くてもよさそうな気もする)
VirtualBox 4.2.16だとOpenGL辺りでビルドが通らない問題は解消されてた。
sudo yum -y install make gcc perl kernel-devel
sudo mount /dev/cdrom /mnt
sudo sh /mnt/VBoxLinuxAdditions.run
umount /mnt
Installing the Window System drivers のところで失敗するが、気にしなくてよい。
終わったら再起動。
sudo reboot
デフォルトになかった特に要らないものは削除
sudo yum -y remove make gcc perl kernel-devel
sudo yum clean all
udevのMACアドレスとデバイス(eth0)を紐付けるファイルを削除し、作成できないようにする
sudo rm /etc/udev/rules.d/70-persistent-net.rules sudo mkdir /etc/udev/rules.d/70-persistent-net.rules sudo chmod 0600 /etc/udev/rules.d/70-persistent-net.rules
DHCPにより割り当てられたIPに関する情報を削除しておく
sudo rm /var/lib/dhclient/dhclient-eth0.leases
シャットダウン
sudo halt
vagrantを導入した端末に戻り、boxを作る。
vagrant package --base "CentOS6.4-minimal" --output "CentOS6.4-minimal-vagrant.box"
作ったboxを登録。適当にTestMachineで。
vagrant box add TestMachine CentOS6.4-minimal-vagrant.box
登録したboxを使い実行してみる
vagrant init TestMachine vagrant up
うまくいくと、こんな感じにログが流れる。
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'TestMachine'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (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] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant
(SSHクライアントがあれば)これで接続できる。
vagrant ssh
puttyの場合は鍵をputtyで使える形式に変換して使う。
ssh-configがほしい場合はこっち。
vagrant ssh-config > ssh.config
あとはvagrantを外部に公開しないように注意しながらいじって遊ぶだけ?
タグを[vagrant]とか[virutalbox]とかちゃんと付けたいけども、これ1回で終わりそうだし、悩みもの・・・