42
Copyright © NIFTY Corporation All Rights Reserved. CoreOS OEM on NIFTY Cloud Yuya Kusakabe - @higebu NIFTY Corp. 2015/04/09 CoreOS Meetup Tokyo #1

CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp

  • Upload
    -

  • View
    4.448

  • Download
    1

Embed Size (px)

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

ニフティクラウドでCoreOSが使えるようになるまでの経緯

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

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 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 20

ニフティクラウドにCoreOSリリース(独自ビルド)

Copyright © NIFTY Corporation All Rights Reserved. Confidential

1ヶ月後・・・

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

oem-niftycloudとniftycloud formatの中身

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

CoreOSをビルドするときのTips

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://[email protected]/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のドキュメントをご参照ください

Copyright © NIFTY Corporation All Rights Reserved. Confidential 42