>100 Views
April 09, 15
スライド概要
https://www.slideshare.net/higebu/20150409-core-osoemonniftycloud
のミラーです。
2015/04/09に開催されたCoreOS Meetup Tokyo #1の発表資料です。
https://coreos-meetup-tokyo.connpass.com/event/12596/
@higebu
CoreOS OEM on NIFTY Cloud CoreOS Meetup Tokyo #1 Yuya Kusakabe - @higebu NIFTY Corp. 2015/04/09 Copyright © NIFTY Corporation All Rights Reserved.
自己紹介 Twitter / GitHub:@higebu 仕事: ニフティクラウドのネットワークサービスの 設計・開発・運用、他 趣味: vyos-users.jp 爬虫類 Copyright © NIFTY Corporation All Rights Reserved. ・4/1 ニフティクラウド DRサービス with VMware vCloud® Air™ Technology ・VCP-DCVとVCP-NVを取得 ・最近VMware製品にまみれている Confidential 2
アジェンダ ニフティクラウドとは CoreOSのOEMとは CoreOSのOEMをするには ニフティクラウドでCoreOSを使えるよう になるまでの経緯 oem-niftycloudとniftycloud formatの中身 CoreOSをビルドするときのTips Copyright © NIFTY Corporation All Rights Reserved. Confidential 3
ニフティクラウドとは 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 4
CoreOSのOEMとは https://coreos.com/releases/#534.1.0 Copyright © NIFTY Corporation All Rights Reserved. Confidential 5
CoreOSのOEMとは https://coreos.com/docs/ Copyright © NIFTY Corporation All Rights Reserved. Confidential 6
CoreOSのOEMをするには 自分のプラットフォームで動くイメージを作成するため の修正をプルリクしてマージしてもらう http://alpha.release.core-os.net/amd64-usr/current/ でダウン ロード可能になる ドキュメントを書いてプルリクしてマージしてもらう 全てGitHub上で完結! ※ただし、CoreOS社の公式プラットフォームになるには 別途CoreOS社との調整が必要 Copyright © NIFTY Corporation All Rights Reserved. Confidential 7
ニフティクラウド上で動くOSイメージ VMware Tools サーバー起動・停止、IPアドレスの取得 SSHキー、起動時スクリプト受け渡し niftycloud_init スクリプト VMware ToolsからSSHキー、起動時スクリプ トを受け取って処理 CentOSなどでは/etc/init.d/niftycloud_init辺り にある Copyright © NIFTY Corporation All Rights Reserved. Confidential 8
ニフティクラウドでCoreOSが 使えるようになるまでの経緯 Copyright © NIFTY Corporation All Rights Reserved. Confidential
関係するリポジトリ一覧 coreos/coreos-overlay coreos/portage-stable repoでビルドするときのmanifest coreos/coreos-cloudinit ビルド、リリーススクリプト coreos/manifest 修正していないパッケージ coreos/scripts CoreOSが修正、または追加したパッケージを管理 CoreOSがカスタマイズしたcloud-init coreos/docs https://coreos.com/docs/ のソース Copyright © NIFTY Corporation All Rights Reserved. Confidential 10
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 11
1ヶ月後・・・ Copyright © NIFTY Corporation All Rights Reserved. Confidential
CoreOS上でVMware Toolsを ビルドできず一旦あきらめる Copyright © NIFTY Corporation All Rights Reserved. Confidential
2ヶ月後・・・ Copyright © NIFTY Corporation All Rights Reserved. Confidential
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 15
open-vm-toolsからifupを消す 2014/09/10 @crawford さんのブランチで open-vm-toolsが動くところまでできてい たが、少し足りなかったのでパッチを送る コミットはこれ: hooklift/coreosoverlay/commit/11f96ce87a357fc38ab53ebd4 068ea5f8b186135 crawfordさんのブランチは削除されているの で、プルリクは残っていない ifupコマンドないからifconfigでやるようにし ただけ Copyright © NIFTY Corporation All Rights Reserved. Confidential 16
すごいプルリクが出現 2014/10/03: @c4milo さんのプルリク coreos/coreos-overlay/pull/898 ここに自分の コミットが Copyright © NIFTY Corporation All Rights Reserved. Confidential 17
きれいなプルリクが出現 2014/10/09: @marineam さんのプルリク coreos/coreos-overlay/pull/907 @c4miloさんのプルリクをきれいにまとめて 少し修正したもの Copyright © NIFTY Corporation All Rights Reserved. Confidential 18
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 19
ニフティクラウドにCoreOSリリース(独自ビルド) Copyright © NIFTY Corporation All Rights Reserved. Confidential 20
1ヶ月後・・・ Copyright © NIFTY Corporation All Rights Reserved. Confidential
CoreOSが使えるようになるまでの経緯 2014/12/14: oem-niftycloudパッケージが 追加される coreos/coreos-overlay/pull/970 Copyright © NIFTY Corporation All Rights Reserved. Confidential 22
CoreOSが使えるようになるまでの経緯 2014/12/14: ニフティクラウド用のイメー ジをビルドするためのスクリプトも追加 coreos/scripts/pull/356 Copyright © NIFTY Corporation All Rights Reserved. Confidential 23
CoreOS 534.1.0リリース https://coreos.com/releases/#534.1.0 Copyright © NIFTY Corporation All Rights Reserved. Confidential 24
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 25
OVF化 2014/12/18: ニフティクラウド用イメージ のフォーマットをOVFに変更するプルリク coreos/scripts/pull/366 536.0.0からOVFが提供されている Copyright © NIFTY Corporation All Rights Reserved. Confidential 26
ドキュメント追加 2015/02/12: docsにプルリク coreos/docs/running-coreos/cloudproviders/niftycloud CoreOS初日本語ドキュメント Copyright © NIFTY Corporation All Rights Reserved. Confidential 27
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 28
oem-niftycloudと niftycloud formatの中身 Copyright © NIFTY Corporation All Rights Reserved. Confidential
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 30
oem-niftycloud coreos-overlay/coreos-base/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 Copyright © NIFTY Corporation All Rights Reserved. Confidential 31
cloud-config.yml /usr/share/oem/cloud-config.yml に置かれる open-vm-tools の起動 niftycloud-ssh-key の実行 coreos-overlay/app-emulation/open-vm-tools update-ssh-keys コマンドに渡す niftycloud-coreos-cloudinit の実行 user-data で受け取った cloud-config やスクリプトを coreoscloudinit に渡す user-dataは /var/lib/coreos-niftycloud/user-data に置かれる Copyright © NIFTY Corporation All Rights Reserved. Confidential 32
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 33
niftycloud format scripts/build_library/vm_image_util.sh VALID_IMG_TYPES と VALID_OEM_PACKAGES に niftycloud を追加 IMG_niftycloud_XXX を追加 ## niftycloud IMG_niftycloud_DISK_FORMAT=vmdk_scsi IMG_niftycloud_DISK_LAYOUT=vm IMG_niftycloud_CONF_FORMAT=niftycloud IMG_niftycloud_OEM_PACKAGE=oem-niftycloud _write_niftycloud_conf() を追加 scripts/build_library/niftycloud_ovf.sh _write_niftycloud_conf()内で呼ばれている ニフティクラウド用のOVFを作るスクリプト Copyright © NIFTY Corporation All Rights Reserved. Confidential 34
CoreOSをビルドするときのTips Copyright © NIFTY Corporation All Rights Reserved. Confidential
ビルド方法
ビルド方法については、CoreOS Developer SDK Guideを
ご参照ください
以前使っていたビルドスクリプトの一部↓
#!/bin/bash
# ./build_coreos.sh Alpha 494
CHANNEL=$1
VERSION=$2
git config --global color.ui false
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH="$PATH":`pwd`/depot_tools
mkdir coreos
pushd coreos
repo init -u ssh://[email protected]/higebu/manifest.git ¥
-b niftycloud-${VERSION} ¥
-g minilayout ¥
--repo-url https://chromium.googlesource.com/external/repo.git -m release.xml
repo sync
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" "${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
36
repoの色の表示設定 repo init時に色の表示をどうするか聞かれ るのを避ける % git config --global color.ui false Copyright © NIFTY Corporation All Rights Reserved. Confidential 37
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/amd64usr/latest" "--board=amd64-usr" "--prod_image" "--format" "niftycloud" Copyright © NIFTY Corporation All Rights Reserved. Confidential 38
アップデートできるようにする ./set_official でアップデート時に使われる officialの公開鍵をインストールする やらないとアップデート時にエラーになる % cros_sdk -- "./set_official“ Copyright © NIFTY Corporation All Rights Reserved. Confidential 39
手動アップデート アップデートのテストで使う 独自ビルドしていた頃、CoreOSの方に教 えてもらうまで知らなかった % update_engine_client -update Copyright © NIFTY Corporation All Rights Reserved. Confidential 40
最後に CoreOSを独自のプラットフォームで動か したい方の参考になれば幸いです ニフティクラウド上でのCoreOSの使い方 はCoreOSのドキュメントをご参照くださ い Copyright © NIFTY Corporation All Rights Reserved. Confidential 41
Copyright © NIFTY Corporation All Rights Reserved. Confidential 42