はじめに
- 【Mac】Packer で CentOS6 の VirtualBox 仮想マシンを作成する手順 – oki2a24
Pakcer を使って一度コードを書けば次回からは毎回自動的に作成♪ - 【Vagrant】【CentOS7 Minimal】スクラッチからの新しいボックスの生成 – oki2a24
こちらは毎回手動で作成する必要あり><。
上記の 2 つの投稿で、自動化されていないものもございますけれども、スクラッチで CentOS 6、CentOS 7 の Vagrant Box を作成してまいりました。
今回は、Packer を使用した、CentOS 5 の Vagrant Box 作成の自動化を行いました。その手順を残しますわ♪
大まかな手順
- VirtualBox、Vagrant、Packer を Windows にインストール
- テンプレートファイルを作成
- テンプレート JSON
- キックスタートファイル
- 初期設定、VirtualBox Guest Additions をインストールするシェルファイル
packer build machine.json
テンプレートファイルの内容
テンプレート JSON
- iso_url がローカルのパスとなっている。何度も試行錯誤したため予めダウンロードしたものを使用した。これは ISO を配布している URL を指定してよい。
- チェックサムはダウンロードページのものを使用する。が、自己責任で自分で計算してもよい。
- 【Windows 7】ファイルの md5 ハッシュ値を得るコマンド – oki2a24
{ "builders": [{ "type": "virtualbox-iso", "guest_os_type": "RedHat_64", "iso_url": "C:/Users/username/iso/CentOS-5.11-x86_64-bin-DVD-1of2.iso", "iso_checksum": "2deb566098aa21ebfd829ff147a1f71c", "iso_checksum_type": "md5", "vm_name": "packer-centos-5-x86_64", "ssh_pty": true, "http_directory": "./", "boot_wait": "5s", "boot_command": [ "<esc>", "<wait>", "linux ks=http://{{.HTTPIP}}:{{.HTTPPort}}/anaconda-ks.cfg", "<enter>" ], "ssh_wait_timeout": "60m", "ssh_username": "vagrant", "ssh_password": "vagrant", "shutdown_command": "sudo poweroff" }], "provisioners": [{ "type": "shell", "scripts": "scripts.sh" }], "post-processors": [{ "type": "vagrant", "output": "centos-5-x86_64.box" }] }
- 【Windows 7】ファイルの md5 ハッシュ値を得るコマンド – oki2a24
キックスタートファイル
- 言語は日本語
- キーボードは日本語キーボード
- sudo 設定は外部ファイルを読み込む設定となっていないため、読みこむよう設定を追加し、配置ディレクトリ /etc/sudoers.d/ を作成
install text cdrom reboot lang ja_JP.UTF-8 keyboard jp106 timezone --utc Asia/Tokyo rootpw vagrant user --name=vagrant --groups=vagrant --password=vagrant services --disabled=iscsi,iscsid,lvm2-monitor,netfs,rawdevices zerombr clearpart --all part /boot --size=200 part swap --recommended part / --size=1 --grow bootloader %packages --nobase @core @japanese-support curl openssh-clients sudo -Deployment_Guide-ja-JP -desktop-file-utils -udftools %post --erroronfail yum -y update sed -i -e 's/Defaults requiretty/#Defaults requiretty/' /etc/sudoers cat >> /etc/sudoers <<EOF #includedir /etc/sudoers.d EOF mkdir /etc/sudoers.d cat <<EOF > /etc/sudoers.d/vagrant Defaults:vagrant !requiretty vagrant ALL=(ALL) NOPASSWD: ALL EOF chmod 440 /etc/sudoers.d/vagrant sed -i -e 's/^timeout=.*$/timeout=1/' /boot/grub/grub.conf cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF DEVICE="eth0" BOOTPROTO="dhcp" ONBOOT="yes" TYPE="Ethernet" EOF
初期設定、VirtualBox Guest Additions をインストールするシェルファイル
- VirtualBox Guest Additions のインストール時、
sudo yum -y install kernel-devel
を除いた。dkms インストールで既にインストールされていたため。 - cleanup 部分はいらないかも。参考リポジトリからそのまま拝借して検証していない部分。
#!/bin/bash set -e set -x # 不要な inittab 無効化 sudo sed -i -e 's,^.*:/sbin/mingetty\s\+tty[2-6],#\0,' /etc/inittab # vagrant insecure private key 設定 date | sudo tee /etc/vagrant_box_build_time mkdir ~/.ssh chmod 700 ~/.ssh/ curl -fsSLo ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub chmod 600 ~/.ssh/authorized_keys chown -R vagrant ~/.ssh # sshd 設定 sudo sed -i -e 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config # VirtualBox Guest Additions のインストール # リポジトリ導入、無効化 curl -L -O https://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-5 sudo rpm --import RPM-GPG-KEY-EPEL-5 rm RPM-GPG-KEY-EPEL-5 curl -L -O https://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm sudo yum -y install epel-release-5-4.noarch.rpm rm epel-release-5-4.noarch.rpm sudo sed -i -e 's/^enabled=1/enabled=0/' /etc/yum.repos.d/epel.repo sudo yum -y install bzip2 sudo yum -y --enablerepo=epel install dkms sudo yum -y install make sudo yum -y install perl sudo mount -o loop,ro ~/VBoxGuestAdditions.iso /mnt/ sudo /mnt/VBoxLinuxAdditions.run || : sudo umount /mnt/ rm -f ~/VBoxGuestAdditions.iso # locale sudo find /usr/lib/locale -mindepth 1 -maxdepth 1 -type d -not -name ja_JP.utf8 -exec rm -r {} + sudo /usr/sbin/build-locale-archive sudo rm -r /usr/lib/locale/ja_JP.utf8 # cleanup if rpm -q --whatprovides kernel | grep -Fqv $(uname -r); then rpm -q --whatprovides kernel | grep -Fv $(uname -r) | xargs sudo yum -y remove fi sudo yum --enablerepo=epel clean all sudo tee /var/log/yum.log < /dev/null # minimize sudo dd if=/dev/zero of=/EMPTY bs=1M || : sudo rm /EMPTY
おわりに
参考ページです。ありがとう存じます!特に、kaorimatz/packer-templates リポジトリには、大変お世話になりました♪
以上です。