SlideShare a Scribd company logo
1 of 51
Download to read offline
さくらのインフラコード 
‘Code the Clouds Mix-up Vol.1’ 
Oct. 03. 2014 
! 
@sawanoboly(HiganWorks LLC, Opsrock LLC)
HiganWorks, Opsrockについて 
•アプリケーションのためのプラット 
フォーム構築/運用自動化をテーマに 
活動 
•ChefやServerspec等、インフラコード 
を取り扱うソリューションを提供 
2
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 
※https://github.com/ryotarai/itamae 
11
そのへん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 --help 
usage: 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
fluentd x 4 で冗長 
Forwarder 
Subnet1 
48 
Forwarder 
Subnet2 
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

More Related Content

What's hot

Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
Takeshi Komiya
 

What's hot (20)

Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
僕の考えた最強の開発環境(笑)
僕の考えた最強の開発環境(笑)僕の考えた最強の開発環境(笑)
僕の考えた最強の開発環境(笑)
 
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
 
DevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSHDevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSH
 
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
 
Terraformをいじってみて
TerraformをいじってみてTerraformをいじってみて
Terraformをいじってみて
 
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割
 
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
BOSHで始めるImmutable Infrastructure
BOSHで始めるImmutable InfrastructureBOSHで始めるImmutable Infrastructure
BOSHで始めるImmutable Infrastructure
 
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたい
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 

Viewers also liked

Viewers also liked (20)

chefからitamaeに乗り換えた話
chefからitamaeに乗り換えた話chefからitamaeに乗り換えた話
chefからitamaeに乗り換えた話
 
長野市 駐輪所ナビ
長野市 駐輪所ナビ長野市 駐輪所ナビ
長野市 駐輪所ナビ
 
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
 
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
 
Maatkitの紹介
Maatkitの紹介Maatkitの紹介
Maatkitの紹介
 
MacでTensorFlow on Dockerを 使って見る
MacでTensorFlow on Dockerを 使って見る MacでTensorFlow on Dockerを 使って見る
MacでTensorFlow on Dockerを 使って見る
 
CentOSでつくる神Plesk
CentOSでつくる神PleskCentOSでつくる神Plesk
CentOSでつくる神Plesk
 
シェフから板前になった話
シェフから板前になった話シェフから板前になった話
シェフから板前になった話
 
serverspecでサーバ環境のテストを書いてみよう
serverspecでサーバ環境のテストを書いてみようserverspecでサーバ環境のテストを書いてみよう
serverspecでサーバ環境のテストを書いてみよう
 
Chef Casual Talks 出張版京セラドーム公演 (JAWS FESTA Kansai 2013内イベント)
Chef Casual Talks 出張版京セラドーム公演 (JAWS FESTA Kansai 2013内イベント)Chef Casual Talks 出張版京セラドーム公演 (JAWS FESTA Kansai 2013内イベント)
Chef Casual Talks 出張版京セラドーム公演 (JAWS FESTA Kansai 2013内イベント)
 
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
 
Chef_Casual_Talks_Kansai_Vol1_Infrastructure_as_Code
Chef_Casual_Talks_Kansai_Vol1_Infrastructure_as_CodeChef_Casual_Talks_Kansai_Vol1_Infrastructure_as_Code
Chef_Casual_Talks_Kansai_Vol1_Infrastructure_as_Code
 
JAWSUG初心者向けトラック 【Deploy&Ops】
JAWSUG初心者向けトラック 【Deploy&Ops】JAWSUG初心者向けトラック 【Deploy&Ops】
JAWSUG初心者向けトラック 【Deploy&Ops】
 
さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]
 
Building document with the Sphinx public edtion
Building document with the Sphinx public edtionBuilding document with the Sphinx public edtion
Building document with the Sphinx public edtion
 
mocloud カスタムDockerイメージ ハンズオン
mocloud カスタムDockerイメージ ハンズオンmocloud カスタムDockerイメージ ハンズオン
mocloud カスタムDockerイメージ ハンズオン
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 
aws_opsworks
aws_opsworksaws_opsworks
aws_opsworks
 
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
 
Chef meetup vol2_higanwoks
Chef meetup vol2_higanwoksChef meetup vol2_higanwoks
Chef meetup vol2_higanwoks
 

Similar to さくらのインフラコード

Similar to さくらのインフラコード (20)

あるインフラエンジニアの過去と未来
あるインフラエンジニアの過去と未来あるインフラエンジニアの過去と未来
あるインフラエンジニアの過去と未来
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
 
Mk network programmability-03
Mk network programmability-03Mk network programmability-03
Mk network programmability-03
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うか
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
Fcp
FcpFcp
Fcp
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
 
Node platforms
Node platformsNode platforms
Node platforms
 
130207 kyotorb
130207 kyotorb130207 kyotorb
130207 kyotorb
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティングIT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 

More from Yukihiko SAWANOBORI

Physical to Iaas(Instance), case of VIP.
Physical to Iaas(Instance), case of VIP.Physical to Iaas(Instance), case of VIP.
Physical to Iaas(Instance), case of VIP.
Yukihiko SAWANOBORI
 

More from Yukihiko SAWANOBORI (16)

DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
 
2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code2014年のChefとInfrastructure as code
2014年のChefとInfrastructure as code
 
MarketPlaceのAMIをPackerで作る時、 Chefは3度配膳する
MarketPlaceのAMIをPackerで作る時、 Chefは3度配膳するMarketPlaceのAMIをPackerで作る時、 Chefは3度配膳する
MarketPlaceのAMIをPackerで作る時、 Chefは3度配膳する
 
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
 
はかどるChefの小ネタ集
はかどるChefの小ネタ集はかどるChefの小ネタ集
はかどるChefの小ネタ集
 
Chef(Server)と AWS OpsWorks(tm)の比較
Chef(Server)と AWS OpsWorks(tm)の比較Chef(Server)と AWS OpsWorks(tm)の比較
Chef(Server)と AWS OpsWorks(tm)の比較
 
What is chef
What is chefWhat is chef
What is chef
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 
Lxc on cloud
Lxc on cloudLxc on cloud
Lxc on cloud
 
The Chef integrations Z Cloud(Joyent)
The Chef integrations Z Cloud(Joyent)The Chef integrations Z Cloud(Joyent)
The Chef integrations Z Cloud(Joyent)
 
Physical to Iaas(Instance), case of VIP.
Physical to Iaas(Instance), case of VIP.Physical to Iaas(Instance), case of VIP.
Physical to Iaas(Instance), case of VIP.
 
Redmine backlogs beginning
Redmine backlogs beginningRedmine backlogs beginning
Redmine backlogs beginning
 
Aws glacier
Aws glacierAws glacier
Aws glacier
 
0808 jawsug-kobe | スポットインスタンスを使った EC2でのスケーラブル負荷検証
0808 jawsug-kobe | スポットインスタンスを使ったEC2でのスケーラブル負荷検証0808 jawsug-kobe | スポットインスタンスを使ったEC2でのスケーラブル負荷検証
0808 jawsug-kobe | スポットインスタンスを使った EC2でのスケーラブル負荷検証
 
Sensu impression
Sensu impressionSensu impression
Sensu impression
 
cURL base_simple_publishing - part of Giraffi
cURL base_simple_publishing - part of GirafficURL base_simple_publishing - part of Giraffi
cURL base_simple_publishing - part of Giraffi
 

さくらのインフラコード