さくらのインフラコード

Preview:

DESCRIPTION

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

Citation preview

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

Oct. 03. 2014 !

@sawanoboly(HiganWorks LLC, Opsrock LLC)

HiganWorks, Opsrockについて

2

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

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

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

3

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

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

5

?

Infrastructure as Codeの傾向

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

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

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

7

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

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

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

!

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

10

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

11

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

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

Cloud x Codeを楽しもう

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

14

バグがあったら…

バージョン更新…

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

結局どうすれば…?

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

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

16

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

17

抽象化のためFogへ

18

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

•compute.servers.create(options…)

19

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

20

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

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

http://www.terraform.io

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

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

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

23

$ ./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!

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

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

25

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

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

!

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

26

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

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

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

27

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

28

※祝 Version2 リリース(今日)

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

The Chef-Solo is Dying…30

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

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

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

31

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

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

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

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

32

で、Knife-Zero

33

Qiitaに移動して説明

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

以上をふまえて次!

???????form & Demo

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

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

!

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

38

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

40

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

42

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

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

43

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

https://github.com/higanworks/sakurraform

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

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

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

ロジェクトサイズ

45

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

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

47

Subnet1

fluentd x 4 で冗長

48

Subnet2

Forwarder

Forwarder

Aggregater

Aggregater

APP

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

49

(please) Let’s try Sakurraform!

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

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

Oct. 03. 2014

さくらのインフラコード

Recommended