時と場合によりけり

日々のアップデートとイノベーションに翻弄され彷徨える IT エンジニアの覚書

Homebrew で Packer をインストールし Boxcutter で CentOS の box を作ってみる

概要

まず、macOS Sierra に Homebrew で Packer をインストールします。次に、Boxcutter を使って、Vagrant + VirtualBox 用の box を CentOS 6.8 の iso ファイルから作成します。

ハードウェア

  • マシン: Macbook Pro Early 2011
  • OS: macOS 10.12 Sierra
  • メモリ: 16 GB
  • ストレージ: SSD 512 GB

ソフトウェア

お手軽に box を入手するには

Pakcker を使う今回のやり方だと iso ファイルのダウンロードに4時間くらいかかります。 そんな暇はないという方は、以下のサイトにあるコマンドで Vagrant を起動すれば 加工済みの box を比較的、短時間で使用できます。

Vagrant box boxcutter/centos68 | Atlas by HashiCorp

% vagrant init boxcutter/centos68
% vagrant up --provider virtualbox

Packer

Packer とは

簡単にいうと、マシンイメージを作成するツール。VirtualBox + Vagrant の場合、iso ファイルから box イメージを作成してくれます。Vagrant を作成した HashiCorp 製です。AWSvm ware などでも使えるようです。

www.packer.io

インストール

まずは、検索してみます。

% brew search packer
packer
homebrew/completions/packer-completion   Caskroom/cask/texturepacker

packer ありました。詳細をみてみます。

% brew info packer
packer: stable 0.10.2 (bottled)
Tool for creating identical machine images for multiple platforms
https://packer.io
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/packer.rb
==> Dependencies
Build: go ✘
==> Requirements
Build: git ✔, mercurial ✘

インストールします。

% brew install packer
==> Downloading https://homebrew.bintray.com/bottles/packer-0.10.2.sierra.bottle
Already downloaded: /Users/shu/Library/Caches/Homebrew/packer-0.10.2.sierra.bottle.tar.gz
==> Pouring packer-0.10.2.sierra.bottle.tar.gz
==> Caveats
zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
🍺  /usr/local/Cellar/packer/0.10.2: 3 files, 33M

インストールされたバージョンを確認してみます。

% packer version
Packer v0.10.2

バージョン 0.10.2 が無事インストールされました。

Boxcutter から json ファイルを取得

Git クローンしてきましょう。

% git clone https://github.com/boxcutter/centos

クローンされたディレクトリに移動して、構成を確認してみましょう。

% cd centos
% ls
AUTHORS          bin         centos67.json       custom-script.sh
CHANGELOG.md        centos.json     centos68-desktop.json   floppy
LICENSE         centos511-i386.json centos68-i386.json  http
Makefile        centos511.json      centos68.json       script
README.md       centos67-desktop.json   centos72-desktop.json   test
VERSION         centos67-i386.json  centos72.json       tpl

CentOS のいろいろなバージョンの json ファイルがありますね。
次は、この中から centos68.json を編集していきます。

centos68.json 変更

% vim centos68.json
- "cpus": "1",
+ "cpus": "2",

- "iso_url": "http://mirrors.kernel.org/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-bin-DVD1.iso",
+ "iso_url": "http://ftp.riken.jp/Linux/centos/6/isos/x86_64/CentOS-6.8-x86_64-bin-DVD1.iso",

- "memory": "512"
+ "memory": "2048"

CPU のコア数を2に。
iso ファイルをダウンロードしてくるサイトを日本国内に。
メモリも 2048 に増やしました。

キックスタートファイル変更

キックスタートファイルを編集して、あらかじめ CentOS の基本設定をしておきます。

% vim http/ks6.cfg
- lang en_US.UTF-8
+ lang ja_JP.UTF-8

- keyboard us
+ keyboard jp106

- timezone UTC
+ timezone Asia/Tokyo

日本語、キーボード、タイムゾーンを変更します。

ビルド

これから長丁場の始まりです。以下のコマンドでビルドを開始してます。

% bin/box build centos68 virtualbox

なが〜い iso インストールが終わると VirtualBoxGUI が出てきて、処理をし始めます。

f:id:stangler:20161005132307p:plain

それらの処理が終わり、centos/box/virtualbox/ に、box ファイル centos68-2.0.16.box ができていれば、無事作業が終了です。