CentOS Atomic HostをVagrant Box化してみた

  • 8
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

先日CentOS Atomic HostをVirtual Boxにインストールするというエントリを書きました。
Virtual Box上での作業はやはり少しやりにくいのでより気軽に、慣れたターミナルで
Atomic Hostを使いたいと思いvagrant box化しました。

環境

MacOS X: 10.9.5
vagrant: 1.6.3

前提

vagrantユーザー追加

ユーザーの追加

ユーザー追加

$ sudo useradd vagrant

ユーザーのグループ追加
必須ではないのですがあくまでお試し環境ですので利便性のために以下のグループへ追加し、
ひと通りの権限を与えます。

$ sudo usermod -G adm,wheel,systemd-journal vagrant

公開鍵の設置

ディレクトリ作成

$ sudo -u vagrant mkdir /home/vagrant/.ssh/
$ sudo -u vagrant chmod 700 /home/vagrant/.ssh

鍵の設置
vagrantのデフォルト公開鍵はgitに上がっています。リンク先の鍵を設置して下さい。公開鍵gitリンク

/home/vagrant/.ssh/authorized_keys

前回init.isoを作るときに読み込ませたuser-dataの公開鍵に設定するとcentosユーザの公開鍵として
/home/centos/.ssh/authorized_keysに設置されるため、VM内のコピーで事足ります。

sudo権限の追加

vagrantユーザにはパスワード無しのsudo権限が必要です。/etc/sudoersを修正します。

$ sudo visudo

次の3行を追加します。

Defaults:vagrant !requiretty
vagrant ALL=(ALL) NOPASSWD:ALL
%vagrant ALL=(ALL) NOPASSWD:ALL

vagrant box作成

VMを起動しているMBPのターミナルからbaseとするVMの名前(VirtualBoxでVMを作成するときに
つけた名前)を指定して次のコマンドを実行します。

$ vagrant package --base centos7atomic
==> centos7atomic: Exporting VM...
==> centos7atomic: Compressing package to: /hoge/package.box

するとカレントディレクトリにpackage.boxができますのでこれをVagrantへ追加します。
オプションで渡しているnameVagrantfileconfig.vm.boxに指定する名前です。

$ vagrant box add package.box --name centos7atomic

これで完成しました!

注意点

今回の手順ですと少なくとも下記2つの制約があります。その他にもあるかもしれません。
なお、vagrant sshできるので当然ですがポートフォワーディングは問題ありません。

  • Vagrantfileのconfig.vm.hostnameの設定はうまく動きません。
  • 公式の手順にあるVirtualBox Guest Additionsを今回の手順では入れていません(入りませんでした...)
    • ホストOSとのファイル共有はできません。*これはVirtualBoxでも同じ。
    • 他にも機能に制限が発生していると考えられます。

サンプル

Vagrantfile

Vagrant.require_version ">= 1.6.3", "< 1.9.9"
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.boot_timeout = 60

  # box add済みなのでconfig.vm.box_urlは不要
  config.vm.box = "centos7atomic"

  # 共有フォルダは設定しない。
  config.vm.synced_folder ".", "/vagrant", disabled: true

  config.vm.post_up_message = "Welcome to CentOS 7 Atomis Host"
  config.vm.network "forwarded_port", guest: 8080, host: 9000

end

立ち上げて中身を見てみます。

$ vagrant up

デフォルトでインストール済のDockerはrpm-ostree upgradeで1.4.1になっています。

$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8/1.4.1
OS/Arch (client): linux/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8/1.4.1

同じくデフォルトで入るkubernetesは0.7です。

$ kube-controller-manager -version
Kubernetes v0.7.0-18-g52e165a4fd720d

Project Atomicで採用されているUI、cockpitはバージョン0.27です。

$ rpm -qa | grep cockpit
cockpit-0.27-1.el7.centos.x86_64
cockpit-assets-0.27-1.el7.centos.noarch

これで、さらに簡単に諸々試せる環境が揃えられたかと思います。

私家版BOX

私の作ったboxもvagrant cloudにあげましたのでもし使いたい方がいれば以下の通りご利用下さい。
dockerを使い込むことを考え、公式の「Configuring the New Drive」に従って/var/lib/docker
30GB追加しています。

vagrant cloud(Atlas)にアカウントがあるものとします。登録は無料です。

$ vagrant login
$ vagrant box add --insecure smile-0yen/centos7atomic
$ vagrant box list  # 確認
smile-0yen/centos7atomic (virtualbox, 0.1) (virtualbox, 0.1)

あとはご存知の通りVagrantfileconfig.vm.boxsmile-0yen/centos7atomicを指定して下さい。

リンク