LoginSignup
11
8

More than 5 years have passed since last update.

Atomic HostをオレオレVagrant BaseBoxにする

Last updated at Posted at 2015-09-15

Docker専用OSとしてメジャーになってきたAtomicHostを使おうと思ったら、Projectが公開しているboxを利用するのが簡単。

http://www.projectatomic.io/download/
ここからお好きなBox取得すると簡単にvagrant up出来ます。

しかし、Defaultで10GBの容量はもう少し増やしたいし、キーボードも日本語キーボードを利用したい、
とか、とかとか

と言う事で、Installable ISOでVirtualBoxへインストール、そしてBaseBoxを作成してみたいと思います。

今回はCentOS Atomic Hostで。

CentOS Atomic Host Installable ISO
http://cloud.centos.org/centos/7/atomic/images/CentOS-Atomic-Host-7-Installer.iso

上のISOをダウンロードしてVirtualBoxでインストールを実施します。
ポイントとしては、

  • Disk容量を30GB (標準は10GB)
  • rootパーティションを10GB(標準は3GB)
  • キーボード、タイムゾーンを日本語対応

但し、下記は実施しない。

  • Guest Additions のインストール
  • yumアップデート等 (そもそもyum入ってないし

因みに、Atomic Hostといっても、実際にはVirtualBoxのBaseBox作成の備忘と言う事で、AtomicHostに特化した内容はほとんど無いです。。。

さて、ではサクッと行きます。

前提環境

  • ホストマシン:MacBookAir OSX Yosemite(10.10.4)
  • VirtualBox:5.0.0r101573
  • Vagrant:1.7.4
  • CentOS AtomicHost:7.1.2

インストール前の準備(VirtualBoxでの作業)

新規仮想マシンの作成
名前:atomichost-base
メモリーサイズ
512MB
ハードディスク
仮想ハードディスクを作成する
タイプ:VDI
可変サイズ
ファイルサイズ:30GB
CDドライブ(コントローラIDE)
ダウンロードしたISOファイルを指定
ネットワーク
NAT
ポートフォワーディング
名前: SSH
プロトコル:TCP
ホストIP:127.0.0.1
ホストポート:2222
ゲストIP:10.0.2.15
ゲストポート:22


その他

USB無効

オーディオ無効

インストール開始

  • ディスク選択 スクリーンショット 2015-09-16 0.06.04.png  ※ここでパーティションをマニュアル設定してrootの容量を変更してもOK(今回は勉強を兼ねてインストール後に変更します)

  • ネットワーク スクリーンショット 2015-09-16 0.06.29.png ※デフォルトで表示される以外のNICは追加しない事  ※ボタンを「ON」にして起動時に利用可能なようにする
日本語キーボード、タイムゾーンja_JPを選択

アカウント:パスワード
root:vagrant
vagrant:vagrant

インストール開始

インストールが完了したら、ISOイメージを仮想CDドライブから抜き、再起動します。

インストール後の設定

ネットワーク設定

AtomicHostでは標準状態で以下のNICが設定されています。

[vagrant@localhost ~]$ sudo nmcli d
DEVICE   TYPE      STATE      CONNECTION 
docker0  bridge    connected  docker0    
enp0s3   ethernet  connected  enp0s3     
lo       loopback  unmanaged  --   

ネットワークの設定はBox化した後にVagrantfileで指定出来るので、BaseBoxは汎用性を持たせるためにこのままにします。


MACアドレスとUUIDを無効化

Vagrantfileでネットワークを設定する際に悪さをすることがあるので、以下を実行。

sed -i -e "s:HWADDR=.*::g" /etc/sysconfig/network-scripts/ifcfg-enp0s3
sed -i -e "s:UUID=.*::g" /etc/sysconfig/network-scripts/ifcfg-enp0s3

SSHの設定

  • UseDNSを無効化

sed -i -e "s:^#UseDNS yes:UseDNS no:" /etc/ssh/sshd_config


* vagrantユーザ用の公開鍵を配置

下記からvagrant公開鍵とプライベート鍵を取得
https://github.com/mitchellh/vagrant/tree/master/keys/

su - vagrant
mkdir ~/.ssh
chmod 0700 ~/.ssh
curl -L -o ~/.ssh/authorized_keys  https://github.com/mitchellh/vagrant/blob/master/keys/vagrant.pub
chmod 0600 ~/.ssh/authorized_keys

プライベート鍵はホストに設置

vagrantユーザーの権限

sudoをパスワード無しで実行出来るように変更
echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
requiretty を無効化
sed -i -e "s:^.*requiretty:#Defaults requiretty:" /etc/sudoers


rootパーティションの容量変更

参考:https://access.redhat.com/ja/node/1275093#storage_default

AtomicHostではdockerのイメージなどはdocker-pool と呼ばれるコンテナーイメージパーティションに保存されます。インストール時にパーティションを自動設定にした場合、rootパーティションに3GBが割り当てられ、残りが全てdocker-poolに割り当てられます。

(AtomicHostのファイル周りはとても面白いので、上記の参考ページやProject本家のページなどは一度読まれると良いかと思います。)

今回は30GBのDiskを生成したので、下記のようになっています。

bash-4.2# lvs
  LV          VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  docker-pool cah  twi-a-tz-- 25.12g             0.04   0.43                            
  root        cah  -wi-ao----  3.00g                                                    
  swap        cah  -wi-ao----  1.03g 

※VG(ボリュームグループ)はホスト名から自動で設定されます。ホスト名を指定していない場合は「cah」となります。


コンテナのビルドなどは別なマシンで行うか、docker hubからpullするだけであればこれでも問題は無いのですが、この仮想マシンでコンテナのビルドを行う場合などに、大きなファイルを解凍したり何か作業をした場合、以外と3GBは直ぐに一杯になってしまいます。
そこで、rootパーティションを拡張します。


インストール後にrootパーティションのサイズを変更する場合には以下の方法があります。

  • ストレージを追加
  • rootパーティションを拡張(docker-poolを縮小)

今回は2番目の方法でやってみます。
※但し、この方法の場合はdocker-poolの中身が削除されますので、既にコンテナイメージなどがある場合は、docker hubなどに退避して下さい。

# systemctl stop docker docker-storage-setup
# rm -rf /var/lib/docker/*
# lvm lvremove cah/docker-pool
# lvextend -L +7GB /dev/mapper/cah-root
# systemctl start docker-storage-setup
# systemctl start docker

最後のファイルシステムの拡張を忘れていました。。。

# xfs_growfs /dev/mapper/cah-root

※今回使用したのは7系のため、resize2fs ではだめで、xfs_growfs を利用します。

これで、rootパーティションが10GBになり、docker-poolがその分少なくなりました。

bash-4.2# lvs
  LV          VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  docker-pool cah  twi-aotz-- 18.27g             0.06   0.34                            
  root        cah  -wi-ao---- 10.00g                                                    
  swap        cah  -wi-ao----  1.03g



ここまででVirtualBoxでの作業は終了

BaseBoxの作成

上記で作成した仮想マシンからBaseBoxに変更します。
仮想マシンのvdiがあるディレクトリへ移動しパッケージ化

# cd ~/VirtualBox VMs/atomichost-base
# vagrant package --base atomichost-base --output atomichost-base.box

atomichost-base.boxと言うBaseBoxが出来上がりました。

後はいつもどおり、

# vagrant box add AtomicHost atomichost-base.box
# vagrant init AtomicHost
# vagrant up

として、ネットワーク、ホスト名、共有フォルダなどをVagrantfileで指定すれば出来上がりです。




※作成したBoxは圧縮とかしてもう少し整理したらどこかにアップしようと思います。


参考
http://d.hatena.ne.jp/banrui/20140702/1404311383
http://momijiame.tumblr.com/post/77460699382/vagrant-%E3%81%AE-virtualbox-%E7%94%A8-base-box-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%89%8B%E5%8B%95%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8