View
4.448
Download
1
Category
Preview:
Citation preview
Copyright © NIFTY Corporation All Rights Reserved.
CoreOS OEM on NIFTY Cloud
Yuya Kusakabe - @higebu
NIFTY Corp.
2015/04/09
CoreOS Meetup Tokyo #1
Copyright © NIFTY Corporation All Rights Reserved. Confidential 2
自己紹介
Twitter / GitHub:@higebu
仕事:
ニフティクラウドのネットワークサービスの設計・開発・運用、他
趣味:
vyos-users.jp
爬虫類
・4/1 ニフティクラウド DRサービスwith VMware vCloud® Air™ Technology
・VCP-DCVとVCP-NVを取得・最近VMware製品にまみれている
Copyright © NIFTY Corporation All Rights Reserved. Confidential 3
アジェンダ
ニフティクラウドとは
CoreOSのOEMとは
CoreOSのOEMをするには
ニフティクラウドでCoreOSを使えるようになるまでの経緯
oem-niftycloudとniftycloud formatの中身
CoreOSをビルドするときのTips
Copyright © NIFTY Corporation All Rights Reserved. Confidential 4
ニフティクラウドとは
2010/01/27リリース 5周年記念キャンペーン中(10万円まで無料)
http://cloud.nifty.com/promo/gogo/
IaaS、PaaS、SaaS全部やっている
VMwareベース
OpenStackのような独自のコントローラ
AWSに似たAPI
Copyright © NIFTY Corporation All Rights Reserved. Confidential 5
CoreOSのOEMとは
https://coreos.com/releases/#534.1.0
Copyright © NIFTY Corporation All Rights Reserved. Confidential 6
CoreOSのOEMとは
https://coreos.com/docs/
Copyright © NIFTY Corporation All Rights Reserved. Confidential 7
CoreOSのOEMをするには
自分のプラットフォームで動くイメージを作成するための修正をプルリクしてマージしてもらう
http://alpha.release.core-os.net/amd64-usr/current/ でダウンロード可能になる
ドキュメントを書いてプルリクしてマージしてもらう
全てGitHub上で完結!
※ただし、CoreOS社の公式プラットフォームになるには別途CoreOS社との調整が必要
Copyright © NIFTY Corporation All Rights Reserved. Confidential 8
ニフティクラウド上で動くOSイメージ
VMware Tools
サーバー起動・停止、IPアドレスの取得
SSHキー、起動時スクリプト受け渡し
niftycloud_init スクリプト
VMware ToolsからSSHキー、起動時スクリプトを受け取って処理
CentOSなどでは/etc/init.d/niftycloud_init辺りにある
Copyright © NIFTY Corporation All Rights Reserved. Confidential 10
関係するリポジトリ一覧
coreos/coreos-overlay CoreOSが修正、または追加したパッケージを管理
coreos/portage-stable 修正していないパッケージ
coreos/scripts ビルド、リリーススクリプト
coreos/manifest repoでビルドするときのmanifest
coreos/coreos-cloudinit CoreOSがカスタマイズしたcloud-init
coreos/docs https://coreos.com/docs/ のソース
Copyright © NIFTY Corporation All Rights Reserved. Confidential 11
Googleさんに先を越される
2014/5/23 Official CoreOS Images on
Google Compute Engine
ニフティクラウドでも使えるようにしたい
vmware_insecureイメージがあるが、VMware
Toolsが入っていなかった
VMware公式のVMware Toolsを入れるため、CoreOSをビルドし始める
Copyright © NIFTY Corporation All Rights Reserved. Confidential 15
open-vm-toolsを入れる方針に変更
2014/09/06 CoreOSにopen-vm-tools入れようというIssueがわりと進んでいることに気づき、open-vm-toolsを入れる方向で作業再開
coreos/coreos-overlay/issues/499
Copyright © NIFTY Corporation All Rights Reserved. Confidential 16
open-vm-toolsからifupを消す
2014/09/10 @crawford さんのブランチでopen-vm-toolsが動くところまでできていたが、少し足りなかったのでパッチを送る
コミットはこれ: hooklift/coreos-
overlay/commit/11f96ce87a357fc38ab53ebd4
068ea5f8b186135
crawfordさんのブランチは削除されているので、プルリクは残っていない
ifupコマンドないからifconfigでやるようにしただけ
Copyright © NIFTY Corporation All Rights Reserved. Confidential 17
すごいプルリクが出現
2014/10/03: @c4milo さんのプルリク
coreos/coreos-overlay/pull/898
ここに自分のコミットが
Copyright © NIFTY Corporation All Rights Reserved. Confidential 18
きれいなプルリクが出現
2014/10/09: @marineam さんのプルリク
coreos/coreos-overlay/pull/907
@c4miloさんのプルリクをきれいにまとめて少し修正したもの
Copyright © NIFTY Corporation All Rights Reserved. Confidential 19
CoreOS 471.1.0 リリース
2014/10/15: open-vm-toolsを含んだ、CoreOS 471.1.0リリース
https://coreos.com/releases/#471.1.0
しかし、まともに動くようになったのは、490.0.0
Copyright © NIFTY Corporation All Rights Reserved. Confidential 22
CoreOSが使えるようになるまでの経緯
2014/12/14: oem-niftycloudパッケージが追加される
coreos/coreos-overlay/pull/970
Copyright © NIFTY Corporation All Rights Reserved. Confidential 23
CoreOSが使えるようになるまでの経緯
2014/12/14: ニフティクラウド用のイメージをビルドするためのスクリプトも追加
coreos/scripts/pull/356
Copyright © NIFTY Corporation All Rights Reserved. Confidential 24
CoreOS 534.1.0リリース
https://coreos.com/releases/#534.1.0
Copyright © NIFTY Corporation All Rights Reserved. Confidential 25
OVF化
534.1.0ではVMX+VMDKだったため、ニフティクラウドにインポートするには、OVF ToolでOVF変換する必要があった
qemu-imgでVMwareで使えるstreamOptimizedなVMDKを作れるパッチを見つけてプルリク
coreos/scripts/pull/362
coreos/coreos-overlay/pull/1009
VMwareの方がopen-vmdkというツールを作ってプルリクしてきて解決(さすがVMwareさん・・・
coreos/scripts/pull/364
coreos/coreos-overlay/pull/1015
Copyright © NIFTY Corporation All Rights Reserved. Confidential 26
OVF化
2014/12/18: ニフティクラウド用イメージのフォーマットをOVFに変更するプルリク
coreos/scripts/pull/366
536.0.0からOVFが提供されている
Copyright © NIFTY Corporation All Rights Reserved. Confidential 27
ドキュメント追加
2015/02/12: docsにプルリク
coreos/docs/running-coreos/cloud-
providers/niftycloud
CoreOS初日本語ドキュメント
Copyright © NIFTY Corporation All Rights Reserved. Confidential 28
VMwareさんの公式サポート
2015/3/9: CoreOS Now Supported on
VMware vSphere 6 and VMware vCloud Air
vSphere 5.5以上
Stableのみサポート
最新情報は VMware Compatibility Guide
Copyright © NIFTY Corporation All Rights Reserved. Confidential 30
oem-niftycloudとniftycloud format
coreos-overlay/coreos-base/oem-niftycloud
scripts/build_library
vm_image_util.sh
niftycloud_ovf.sh
Copyright © NIFTY Corporation All Rights Reserved. Confidential 31
oem-niftycloud
% tree oem-niftycloud/
oem-niftycloud/
├── files
│ ├── cloud-config.yml # ニフティクラウド用の cloud-config
│ ├── coreos-setup-environment # /etc/environment を作成
│ ├── niftycloud-coreos-cloudinit # coreos-cloudinit を実行
│ └── niftycloud-ssh-key # SSHキーの設定
└── oem-niftycloud-0.0.1.ebuild
1 directory, 5 files
coreos-overlay/coreos-base/oem-niftycloud
Copyright © NIFTY Corporation All Rights Reserved. Confidential 32
cloud-config.yml
/usr/share/oem/cloud-config.yml に置かれる
open-vm-tools の起動
coreos-overlay/app-emulation/open-vm-tools
niftycloud-ssh-key の実行
update-ssh-keys コマンドに渡す
niftycloud-coreos-cloudinit の実行
user-data で受け取った cloud-config やスクリプトを coreos-
cloudinit に渡す
user-dataは /var/lib/coreos-niftycloud/user-data に置かれる
Copyright © NIFTY Corporation All Rights Reserved. Confidential 33
niftycloud format
--format niftycloud と指定したらニフティクラウド用のOVFができる
% cros_sdk
% cros_sdk --enter
% ./set_shared_user_password.sh
% echo amd64-usr > .default_board
% ./setup_board
% ./build_packages
% ./build_image prod --group alpha
% ./image_to_vm.sh --from=../build/images/amd64-usr/latest --
board=amd64-usr --prod_image --format niftycloud
% exit
Copyright © NIFTY Corporation All Rights Reserved. Confidential 34
niftycloud format
scripts/build_library/vm_image_util.sh
VALID_IMG_TYPES と VALID_OEM_PACKAGES にniftycloud を追加
IMG_niftycloud_XXX を追加
_write_niftycloud_conf() を追加
scripts/build_library/niftycloud_ovf.sh
_write_niftycloud_conf()内で呼ばれている
ニフティクラウド用のOVFを作るスクリプト
## niftycloud
IMG_niftycloud_DISK_FORMAT=vmdk_scsi
IMG_niftycloud_DISK_LAYOUT=vm
IMG_niftycloud_CONF_FORMAT=niftycloud
IMG_niftycloud_OEM_PACKAGE=oem-niftycloud
Copyright © NIFTY Corporation All Rights Reserved. Confidential 36
ビルド方法
ビルド方法については、CoreOS Developer SDK Guideをご参照ください
以前使っていたビルドスクリプトの一部↓#!/bin/bash
# ./build_coreos.sh Alpha 494
CHANNEL=$1VERSION=$2
git config --global color.ui false
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitexport PATH="$PATH":`pwd`/depot_tools
mkdir coreospushd coreosrepo init -u ssh://git@github.com/higebu/manifest.git ¥
-b niftycloud-${VERSION} ¥-g minilayout ¥--repo-url https://chromium.googlesource.com/external/repo.git -m release.xml
repo synccros_sdk --downloadcros_sdk -- "./set_shared_user_password.sh" "core"echo "amd64-usr" > src/scripts/.default_boardcros_sdk -- "./setup_board"cros_sdk -- "./build_packages“
cros_sdk -- "./set_official"cros_sdk -- "./build_image" "prod" "--group" "${CHANNEL,,}"cros_sdk -- "./image_to_vm.sh" "--from=../build/images/amd64-usr/latest" "--board=amd64-usr" "--prod_image" "--format" "niftycloud"VERSION=$(cros_sdk -- 'cat' '/etc/os-release' | grep VERSION_ID | awk -F'=' '{print $2}')popd
Copyright © NIFTY Corporation All Rights Reserved. Confidential 37
repoの色の表示設定
repo init時に色の表示をどうするか聞かれるのを避ける
% git config --global color.ui false
Copyright © NIFTY Corporation All Rights Reserved. Confidential 38
SDK chrootに入りたくない
cros_sdk -- “” で chroot に入らずにビルド
% cros_sdk --download
% cros_sdk -- "./set_shared_user_password.sh" “core"
% echo "amd64-usr" > src/scripts/.default_board
% cros_sdk -- "./setup_board"
% cros_sdk -- "./build_packages“
% cros_sdk -- "./set_official“
% cros_sdk -- "./build_image" "prod" "--group" "alpha"
% cros_sdk -- "./image_to_vm.sh" "--from=../build/images/amd64-
usr/latest" "--board=amd64-usr" "--prod_image" "--format"
"niftycloud"
Copyright © NIFTY Corporation All Rights Reserved. Confidential 39
アップデートできるようにする
./set_official でアップデート時に使われるofficialの公開鍵をインストールする
やらないとアップデート時にエラーになる
% cros_sdk -- "./set_official“
Copyright © NIFTY Corporation All Rights Reserved. Confidential 40
手動アップデート
アップデートのテストで使う
独自ビルドしていた頃、CoreOSの方に教えてもらうまで知らなかった
% update_engine_client -update
Copyright © NIFTY Corporation All Rights Reserved. Confidential 41
最後に
CoreOSを独自のプラットフォームで動かしたい方の参考になれば幸いです
ニフティクラウド上でのCoreOSの使い方はCoreOSのドキュメントをご参照ください
Recommended