さくらの
クラウドフォーメーション
with Chef
さくらのクラウド x Chef Meetup Kansai
!
XEgg 1st『クラウド未経験者向け
ITコミュニティ&クラウドベンダー合同勉強会』
!
!
@sawanoboly(HiganWorks LLC, Opsrock) 2014.02.15
コミュニティChef Meetup Kansai

• ChefやInfrastructure as Codeの話を
• 参加者全員が少しづつ発表する
• 主催者がよそのイベントでしゃべる
• 不定期開催

2
HiganWorks, OpsRockについて

• アプリケーションのためのプラットフォーム構
築/運用自動化をテーマに活動

• http://opsrock.in 共同開発・運営
• AWS OpsWorksとChef、インフラの

テストを取り扱うソリューションを提供

3
アンケート挙手のお願い
• セッション中、発表者から簡単な質問をする
ことがあります。

• ご遠慮なさらず、恥ずかしがらずに挙手いた
けると助かります。
!

• よろしくお願いいたします。

4
内容
1.Chefをざっくり説明
2.さわってみました『さくらのクラウド』
※コミュニティを代表する個人の感想です
3.Chefとインテグレーションしてみました
4.MongoDBクラスタをつくってみました
※Githubで公開、再現可能

5
1.Chef
Chefについて
• 米Chef社による構成管理フレームワーク
• Chef-Server(Enterprise/OpenSource)
• ノード(サーバ)情報の集約
• ポリシー配布のハブ
• Chef-Client
• ノード情報の収集
• レポーティング
• ポリシーの適用(リソース収束)
• 外部APIの操作
7
Infrastructure as Code
• 手順書、テスト仕様、構成管理等々を
• コードとして記述し、再現可能とする
• オブジェクトで表し、抽象化する
• その他いろいろ再利用可能なリソースに
• あと冪等性
!

• ちなみに、物理の知識はあるだけ有効
• ラック契約、電源容量、回線手配、スイッチ類、
サーバ、etc..

8
より詳しく
• ここだけの話ですが(以下省略

9
Chef x クラウド(IaaS)
• コンピュータリソースがAPI調達できる
• ノード作成/登録+Role適用(サーバ設定)
• Chef-ServerでノードをIDほか属性で管理
!

• または
• コンパネからサーバ作ってログインしてホスト名
とかつけてChefをインストールして設定して
Cookbookを用意してChefSoloを流して表計算
ソフトで管理してもいいとおもいます

10
2.さわってみました
『さくらのクラウド』
サインアップのコツ
• ありがとう田中社長

12
印象1:さくらのクラウド
• アカウント&ユーザのモデルがある
• 権限割り当てや複数環境の区別によい
• REST APIがあるのでプログラミングできそ
う

13
印象2:さくらのクラウド
• 組み合わせられる要素が沢山
• ストレージ(ディスクボリューム)
• サーバ※なんとディスクレスもOK
• スイッチ&ネットワーク
• ロードバランサ(DSR!)

14
とりえあずサーバを
動かすまでのAPIコール
1.ネットワーク確認
2.サーバ作成(NICをつける)
3.ディスク作成
•アーカイブ(テンプレート)から複製を待つ
4.ディスクを修正
•ログイン用にSSH公開

を書き込み

5.ディスクをサーバにアタッチ
6.ブート!

15
※写真引用元: 比企さんのFacebookタイムライン

総合印象:プラモデルっぽい
16
(Chef meetup視点で)
海外と比較
海外と比べてみる?
• APIつきなクラウド(IaaSやVPN)

18
海外なクラウドAPIの特徴
• シンプルなレスポンス
• 自由度はあまりない (※AWSは除こう)
• 高速なリソース確保
• 有り物を、使いたい時にすぐ用意したり廃棄
したり

• サービスに即投入

19
※写真引用元: 比企さんのFacebookタイムライン

総合印象:海外は完成品/傭兵
20
たとえばコンピュータリソース

• DigitalOcean, Joyentあたりは10∼30秒で
操作開始OK

• Infrastructure as Codeは、結構スクラップ
&ビルドでテストしたい

• 早いと嬉しい

21
プラモデル:
ガンダムさん達が
大地に立つまで一手間かける

傭兵:
ガンダムさん達
大地にもう立ってる

vs.

ホビー対傭兵な印象
22
使いづらいのかね?
さくら…
からスタート
• レスポンスが冗長
• APIの標準が日本語
• 結構503くれる
3.Chefと
インテグレーション
してみました
Chef x クラウド(IaaS)のフロー
1.APIでコンピュータリソース作成
2.『戻り値』のIPアドレスを使用してSSHでつつ
く、つつく
3.オンラインと同時にChef-Clientをインストー
ル&Chef-Serverに登録
4.Environment(環境), Role(役割)の割り当て
5.レシピが要るならその時に適用
6.ここまでコマンド(knife)1回の実行で実施

25
fog.io(クラウド共通ライブラリ)
26
fogについて
• 世界中で 良さ気 とされるパブリック/プラ

イベートクラウドを操作する為のライブラリ

• Compute、Storage、Network、DNSなど
が対象

• 各種プロバイダに対応
日本のないんか!!

27
作りました
(※クーポンくれたし)
本家マージを目指してプルリクエスト
(親切な)コードレビューの応酬
※ご覧のセッションは
Chefがテーマです

29
https://github.com/higanworks/fog/blob/pull_sakuracloud2/lib/fog/sakuracloud/docs/
getting_started.md

Getting Startedも作成
30
サーバ作成サンプル
require	
  'fog'	
  
compute	
  =	
  Fog::Compute::SakuraCloud.new(	
  
	
  	
  :sakuracloud_api_token	
  =>	
  'YOUR_API_TOKEN',	
  
	
  	
  :sakuracloud_api_token_secret	
  =>	
  'YOUR_API_TOKEN_SECRET'	
  
)	
  

!
!
server	
  =	
  compute.servers.create({	
  
	
  	
  :sakuracloud_api_token	
  =>	
  'YOUR_API_TOKEN',	
  
	
  	
  :sakuracloud_api_token_secret	
  =>	
  'YOUR_API_TOKEN_SECRET',	
  
	
  	
  :sshkey	
  =>	
  '11260003****',	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  #	
  Your	
  SSH	
  Key	
  id	
  
	
  	
  :serverplan	
  =>	
  '2001',	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  #	
  Server	
  Type	
  
	
  	
  :volume	
  =>	
  {	
  
	
  	
  	
  	
  :diskplan	
  =>	
  4,	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  #	
  Type	
  SSD	
  
	
  	
  	
  	
  :sourcearchive	
  =>	
  '112500463685'	
  	
  #	
  Ubuntu12.04	
  
※個人の印象です
	
  	
  },	
  
	
  	
  :boot	
  =>	
  true	
  
})

メソッド一発で準備OKの傭兵化が完了
31
使いやすいライブラリにしたら

• Ruby系のツールで組み込める
• Chef
• knife (plugin) ̶★
• test-kitchen
• Rake ̶★, Thor, etc…
!

★のツールで今回使用

32
knife sakura
• Fogのさくらクラウド拡張を使用して作成
• Chefの対IaaSフローを実装
• Chef-Server登録その他もろもろ
$ knife sakura help
!

** SAKURA COMMANDS **
sakura create (options)
https://github.com/higanworks/xegg2_chef

33
4.MongoDB
クラスタを
つくってみました
デモと解説
https://github.com/higanworks/xegg2_chef
ここまでのTry&Error
クーポン予算内でOK
やりのこし
• Fogの本家マージ(※ほぼOK、レビュー待ち)

・Switch等が未実装

メンテ協力者求む

• Knifeプラグインの単体公開

今はリポジトリのおまけ

• MongoDBはShard自動構築までしたかった

締め切りに間に合わず

37
さくらの
クラウドフォーメーション
(仮)
Chef Meetup Kansai x さくらの○⃝
!
XEgg 1st『クラウド未経験者向け
ITコミュニティ&クラウドベンダー合同勉強会』
!
!
@sawanoboly(HiganWorks LLC, Opsrock) 2014.02.15

終

さくらのクラウドフォーメーション with Chef [XEgg session]