51
さくらのインフラコード ‘Code the Clouds Mix-up Vol.1’ Oct. 03. 2014 @sawanoboly(HiganWorks LLC, Opsrock LLC)

さくらのインフラコード

Embed Size (px)

DESCRIPTION

Code the Clouds Mix-up Vol.1 Oct. 03. 2014

Citation preview

Page 1: さくらのインフラコード

さくらのインフラコード‘Code the Clouds Mix-up Vol.1’

Oct. 03. 2014 !

@sawanoboly(HiganWorks LLC, Opsrock LLC)

Page 2: さくらのインフラコード

HiganWorks, Opsrockについて

2

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

•ChefやServerspec等、インフラコードを取り扱うソリューションを提供

Page 3: さくらのインフラコード

Chefの本を書いたりしました

3

Page 4: さくらのインフラコード

さくらさんとは 特に接点ありません

Page 5: さくらのインフラコード

本日の内容•Infrastructure as Code の傾向 •クラウドサービスとAPI、その中のIaaS •Cloud x Codeを楽しもう •Terraform(HashiCorp) •Knife-Zero •???????form & Demo

5

?

Page 6: さくらのインフラコード

Infrastructure as Codeの傾向

Page 7: さくらのインフラコード

サーバ・インフラ自動構築から• 色々とコード(世代管理)に落としてみるよ

うになっている • APIで調達するインフラの設計と調達後

の状態 • プロビジョナの最終実行状態 • これ前振りその1

7

Page 8: さくらのインフラコード

クラウドサービスとAPI、その中のIaaS

Page 9: さくらのインフラコード

クラウドリソース => エンドユーザにサービスを提供するために調達

Page 10: さくらのインフラコード

IaaSで調達できるリソースは欠陥品•『クラウド』で区分されるサービスは、たいていAPIで作成すれば完了するリソースを提供。(SaaS,PaaS) • 例:AWSの多くのサービスはEC2が`ベース`

!

•自由度が高い? がそれなりの手当が必要

10

Page 11: さくらのインフラコード

IaaSリソースを完成品にするには?•固める • 構築済イメージ(AMIとかISOとか) • コンテナ(Docker) • Provisionerツールを使う • Ansible, Chef, Itamae(※), Puppet • これ前振りその2

11

※https://github.com/ryotarai/itamae

Page 12: さくらのインフラコード

そのへんSoftlayerは いいとこついてるとおもいます

Page 13: さくらのインフラコード

Cloud x Codeを楽しもう

Page 14: さくらのインフラコード

公開APIやツールが多いけど…

14

バグがあったら…

バージョン更新…

なんか要件に合わない… 使いにくい…

結局どうすれば…?

Page 15: さくらのインフラコード

解答例:自分の土俵に 引きずり込む

Page 16: さくらのインフラコード

例:さくらのクラウド API•2014年2月のイベント •さくらのクラウドで一発芸やれと

16

Page 17: さくらのインフラコード

生のAPIは何でも出来すぎて 使いにくいと思った

17

Page 18: さくらのインフラコード

抽象化のためFogへ

18

Page 19: さくらのインフラコード

他クラウドと同じインターフェースに•compute = Fog::Compute[:sakuracloud] !

•compute.servers.create(options…)

19

Page 20: さくらのインフラコード

余談:よそでの国産ツール例•クックパッドのインフラコード現状確認会(今日)でも、自分の土俵にしている好例が •Roadwoker(Route53) •kumogata(CloudFormation) •itamae(Chef) •Ridgepole(ActiveRecord?) •Serverspec(RSpec)

20

Page 21: さくらのインフラコード

ついでにもう一つ例で 流行Pickup

Page 22: さくらのインフラコード

インフラを整える Terraform(HashiCorp)

http://www.terraform.io

Page 23: さくらのインフラコード

Providers [Terraform]•多分HashiCorpがよく使う一式に対応

•サービスプラットフォームのデザインパターンがありそう

•これらを彼らのワークフローに適用しやすくツール化?

23

Page 24: さくらのインフラコード

$ ./bin/terraform --helpusage: terraform [--version] [--help] <command> [<args>]!

Available commands are: apply Builds or changes infrastructure graph Create a visual graph of Terraform resources output Read an output from a state file plan Generate and show an execution plan refresh Update local state file against real resources show Inspect Terraform state or plan version Prints the Terraform version!

Page 25: さくらのインフラコード

設計・状態保存(※前振りその1より)

•plan •設計を確認 •apply • 設計を適用、状態をキャッシュ

25

resource "aws_instance" "example" { ami = "ami-aa7ab6c2" instance_type = "t1.micro" key_name = "opsrock"}

Page 26: さくらのインフラコード

他ツールとのインテグレーション•output (refresh), show, graph •リソースの関係をデータ交換しやすく出力

!

•でもちょっと形式が内部DSLな。。

26

Page 27: さくらのインフラコード

Provisioners [Terraform]•ビルトインのProvisionerはとてもシンプル

•多分結合度を高めるとややこしいから?

•他のツールを呼ぶには十分

27

Page 28: さくらのインフラコード

他のツールと組み合わせやすければ•このへんとインフラ情報を交換しながら使うとよさげ

28

※祝 Version2 リリース(今日)

Page 29: さくらのインフラコード

サーバを調整、状態収穫 Knife-Zero

Page 30: さくらのインフラコード

The Chef-Solo is Dying…30

Page 31: さくらのインフラコード

ChefSoloと私•ChefはSoloからスタートしたらしい

•スクリプトと変わらん。冪等とか当たり前。

• Serverで集約・連携 • 連携できるってエライ • 構造化(Ohai)&集約イイね採用

31

Page 32: さくらのインフラコード

Local Mode登場•Chef-Soloの制約(Server比)解消

• これでいい環境も多いやん !

• knife-soloの存在 • 実は嫌いだったのでLocalmode派生で

滅ぼせないだろうかと思案

32

Page 33: さくらのインフラコード

で、Knife-Zero

33

Page 34: さくらのインフラコード

Qiitaに移動して説明

http://qiita.com/sawanoboly/items/218a7b03ddec6be45e34

Page 35: さくらのインフラコード

以上をふまえて次!

Page 36: さくらのインフラコード

???????form & Demo

Page 37: さくらのインフラコード

そういえば さくらのクラウドの 話をするんでした

Page 38: さくらのインフラコード

これまでの前振り•インフラ設計、構築状態をコードで管理したい •ついでにProvisionerの結果もコードで •土俵

!

•さくらのクラウドでやるには。。?

38

Page 39: さくらのインフラコード
Page 40: さくらのインフラコード

ツールのローカライズしてもいいのよ良さげなツールがあったら? ✕ ドキュメント日本語訳 ◯ マイワークフロー、理解できる範囲で、 エッセンスパクリを流用

40

Page 41: さくらのインフラコード
Page 42: さくらのインフラコード

Sakurraform概要•planのファイルを元にインフラ設計 •applyで構築 & 更新 (今は追加のみ) •stateで状態をキャッシュ&同期 •bsサブコマンドさくらのBASE STORAGEを触る

42

Page 43: さくらのインフラコード

Sakurraformのリソース•Network(Subnet)とServerにそれぞれ •configuration => インフラ設計 •cached_state => 状態キャッシュ •remote_state => リアルタイム状態 !

•configurationが出揃うように色々実行する

43

Page 44: さくらのインフラコード

GithubのREADMEを ベースに解説&Getting Started

https://github.com/higanworks/sakurraform

Page 45: さくらのインフラコード

インテグレーションについて•Chef(Knife-Zero)も組み込もうか迷ったが • ひとつを上手くやれば十分 • あと、地味にGemがコンフリクトしてしんどい。

Vagrant(Ruby) => packer,terraform(Go)の理由が分かった気がする。

• DNS系も入れるか悩んだ(Provider選択系 • 先にテスト作らないとそろそろ危ないプ

ロジェクトサイズ

45

Page 46: さくらのインフラコード

デモ(リプレイ)https://github.com/higanworks/sakurraform-demo

Page 47: さくらのインフラコード

構成ネタ元•サーバ/インフラエンジニア養成読本 ログ収集~可視化編

47

Page 48: さくらのインフラコード

Subnet1

fluentd x 4 で冗長

48

Subnet2

Forwarder

Forwarder

Aggregater

Aggregater

APP

Page 49: さくらのインフラコード

デモ段取り•Sakurraformでインフラ調達 & sakurraform map •subnet x2, Server x4 •DozensにAレコード登録 (Live?) •*.sakurraform.net •Knife-ZeroでFruentd構築 •fluent-catでデータ投入 (Live!) •Base Storageで確認&削除 (Live!)

49

Page 50: さくらのインフラコード

(please) Let’s try Sakurraform!

でもさくらのクラウドはお金がかかるし。。。

Page 51: さくらのインフラコード

終‘Code the Clouds Mix-up Vol.1’

Oct. 03. 2014

さくらのインフラコード