先日CentOS Atomic HostをVirtual Boxにインストールするというエントリを書きました。
Virtual Box上での作業はやはり少しやりにくいのでより気軽に、慣れたターミナルで
Atomic Hostを使いたいと思いvagrant box化しました。
環境
MacOS X: 10.9.5
vagrant: 1.6.3
前提
- Virtual Boxでの環境構築は済んでいる。
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へ追加します。
オプションで渡しているname
はVagrantfile
でconfig.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)
あとはご存知の通りVagrantfile
のconfig.vm.box
へsmile-0yen/centos7atomic
を指定して下さい。