OpenShift Origin 3
とKubernetesを試していると、同じRedHatのProject Atomicも気になりAtomic Host
上で動かしたくなります。イメージはGet Started with Atomicからダウンロードできるので、VirtualBoxですぐに試すことができます。
Atomic Host
はCoreOSと比較され、SELinuxとrpm-ostreeがgeard特徴です。Fedoraはほとんど使ったことがないのでCoreOS vs. Project Atomic: A Reviewを読みながら勉強していきます。
rpm-ostreeをちょっと調べた
rpm-ostreeは、RPMパッケージで構成されたOSをgit fetch
とgit merge
のように管理できる仕組みです。
中央リポジトリからアップグレードをfetch && mergeして、reboot後は新しい/rootで起動する感じです。
Gitのように新しいOSの複製と配布がとても簡単になり、この辺りがatomic
らしいです。
Fedora20の準備
CentOS 7でもAtomic Host
のビルドができるようになったそうですが、手順通りにFedora20で作業することにします。
IDCFクラウドの標準テンプレートにはFedora20がないので、ISOをアップロードしてからインスタンスを作成します。
SELinuxをdisabled
イメージのビルド作業のために、SELinuxをdisabledにします。
#SELINUX=enforcing |
一度rebootします。
# reboot |
パッケージのダウンロード
Atomic Host
ビルド用リポジトリをgit clone
し、必要なパッケージをインストールします。
# yum install -y git |
設定ファイルの編集
/etc/nsswitch.confのバックアップをします。
# cp /etc/nsswitch.conf{,.orig} |
passwd:
とgroup:
の行を編集します。
#passwd: files |
/etc/libvirt/qemu.confのバックアップをします。
# cp /etc/libvirt/qemu.conf{,.orig} |
user = "root"
の行をアンコメントします。
user = "root" |
libvirtdをrestartします。
# systemctl restart libvirtd |
rpm-ostreeのリポジトリ
Atomic Host
のRPMをアップデートするため、rpm-ostreeのリポジトリを作成します。
# mkdir -p /srv/rpm-ostree/repo && cd /srv/rpm-ostree/ && sudo ostree --repo=repo init --mode=archive-z2 |
Atomic Hostイメージビルド
Atomic Host
イメージをビルドします。rpm-ostree-toolboxを使いqcow2ファイルを作成します。
# cd /root/byo-atomic/f20 |
vmdkファイルにコンバート
qemu-imgコマンドを使い、qcow2ファイルをvmdkファイルにコンバートします。
# qemu-img convert -f qcow2 /root/byo-atomic/f20/f20-atomic.qcow2 -O vmdk c7-atomic.vmdk |
config-driveの作成
config-driveは仮想マシン起動時に読み込んで利用する、OSの設定情報を格納したISOファイルです。
ISOファイルを仮想マシン起動時に接続すると、meta-data
とuser-data
を読み込み設定をしてくれます。
Atomic Host
はrootのパスワードや公開鍵を記述します。この辺りはCoreOSと同じです。
meta-data
にはホスト名を指定します。
instance-id: Atomic0 |
user-data
にはパスワードと公開鍵を指定します。
#cloud-config |
genisoimageコマンドを使いISOファイルを作成します。
$ genisoimage -output atomic0-cidata.iso -volid cidata -joliet -rock -input-charset utf-8 user-data meta-data |
VMware Playerでvmdkをアタッチして起動
Fedora20で作成したc7-atomic.vmdkファイルを、Window7の作業マシンにダウンロードします。
以下の手順で仮想マシンを作成します。ディスクイメージを作成したvmdkファイルと入れ替えます。
VMware Player
を起動- 新規仮想マシンの作成
- 後でOSをインストールを選択
- Linux, 他のLinux 3.xカーネル 64ビットを選択
- 仮想マシン名に、AtomicHost
- 1GBで、仮想ディスクを単一ファイルとして格納
- c7-atomic.vmdkを
Virtual Machines
のAtomicHostフォルダにコピー - 仮想マシンの設定の編集
- 既存のハードディスクを削除
- 既存の仮想ディスクを使用からc7-atomic.vmdkを選択、既存の形式を保持
config-drive
のISOファイルをCD/DVD(IDE)にセットし、起動時に接続にチェックを入れる- 仮想マシンを起動
VMware Playerコンソール
VMware Player
コンソールからAtomic Host
の仮想マシンにログインします。
- login: fedora
- passwd: atomic
パスワードはconfig-driveに設定した値を使います。
IDCFクラウドではconfig-driveが使えない
ovftoolを使いOVAにコンバートしてからIDCFクラウドのテンプレートに登録します。
OVAテンプレートからVMを作成するときに、config-driveのISOファイルをマウントします。
残念ながらIDCFクラウドでは仮想マシンの起動時にconfig-driveを読み込んでくれません。user-data
を取得できずにOSの設定が完了しないためログインできなくなります。
まとめ
Atomic Host
をビルドしながらrpm-ostree
の役割やrpm-ostree-toolbox
コマンドを使ったディスクイメージの作り方など勉強することができました。
config-drive
も便利な仕組みです。仮想マシン起動時にuser-data
を渡してOSの構成管理を初回で終わらせてしまう方法はCoreOSと同じです。cloud-config
でOSを作成した後のパッケージ管理は中央リポジトリと同期され、個別に設定ファイルの書き換えやパッケージの追加ができなくなります。Project Atomic
ではyumの廃止やそれに伴いPythonもインストールしないことも検討されているようです。
Webスケールで使い捨て可能なインフラが必要な環境では、ChefなどのCMツールを使わずにcloud-config
を使った構成管理が今後主流になると思うので慣れておきたいです。
次回はビルド済みのAtomic Host
のダウンロードを使ってIDCFクラウドにデプロイしてみます。