SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
AWSをコードで定義する
クックパッド株式会社
菅原 元気
自己紹介
菅原 元気 - @sgwr_dts
●
●
●
●

クックパッド株式会社
インフラ部
https://github.com/winebarrel
https://bitbucket.org/winebarrel
宣伝
elasticfox-ec2tag 0.4.4.1を
リリースしました。
http://elasticfox-ec2tag.s3-websiteap-northeast-1.amazonaws.com/
世間ではオワコンですが
C社では現役です。
Roadworker
Roadworkerというツールを作りました
『Gitを使ったRoute53の管理』
http://www.slideshare.net/winebarrel/gitroute5325545015
Roadworker
require 'other/routefile'
hosted_zone "winebarrel.jp." do
rrset "winebarrel.jp.", "A" do
ttl 300
resource_records(
"127.0.0.1",
"127.0.0.2"
)
end
rrset "winebarrel.jp.", "MX" do
ttl 300
resource_records(
"10 mx.winebarrel.jp",
"10 mx2.winebarrel.jp"
)
end
end
Roadworker
● Route53をコード(Ruby DSL)で定義する
● やっていること
○ APIで取得した情報とDSLを比較
○ 差分を埋めるAPIを発行
このメソッドほかにも使えるんじゃね?
作ってみた
Piculet
Security Groupをコードで定義
https://bitbucket.org/winebarrel/piculet
Piculet
require 'other/groupfile'
ec2 do
security_group "default" do
description "default group"
ingress do
permission :tcp, 0..65535 do
groups(
"default"
)
end
permission :udp, 0..65535 do
groups(
"default"
)
end
permission :icmp, -1..-1 do
groups(
Kelbim
ELBをコードで定義する
https://bitbucket.org/winebarrel/kelbim
Kelbim
require 'other/elbfile'
# EC2 Classic
ec2 do
load_balancer "my-load-balancer" do
instances(
"cthulhu",
"nyar",
)
listeners do
listener [:http, 80] => [:http, 80]
end
health_check do
target "HTTP:80/index.html"
timeout 5
interval 30
healthy_threshold 10
すべてC社のプロダクション環境で
利用しています。
それCloudFormationで(ry
● 途中適用できない
● (ほとんどの場合)テンプレートと生死を共にす
る
● JSONはコードではない
● dry-runができない
● 無理矢理関数が気に入らない
なぜコードなのか?
● (やろうと思えば)何でもできる
● 変数・繰り返し・条件分岐
→やり過ぎは良くないが設定を圧縮できる
● 外部との連携
→ファイル・Web・etc...
操作から定義へ
●
●
●
●

Puppet/Chefから着想
APIは操作
操作の積み重ねで状態を表すのは困難
自動化は可能だが、
ツールはあるべき状態を定義してくれない
● 設定ファイルはGitと相性がいい
うはwwww夢がひろがりんぐwwwwwwww
応用範囲は広いと思います
● IAM
● DB Schema
● iptables
● HAPproxy等ミドルウェア
→再起動を伴わない設定の変更
まとめ
なにはともあれオペレーションは
楽になりました。
Please try it out!
例のアレ

Más contenido relacionado

Was ist angesagt?

Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Lambdaのscheduled eventで実現する運用視点のサーバレスパターンLambdaのscheduled eventで実現する運用視点のサーバレスパターン
Lambdaのscheduled eventで実現する運用視点のサーバレスパターンJin k
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch LogsについてSugawara Genki
 
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作SQLによるDynamoDBの操作
SQLによるDynamoDBの操作Sugawara Genki
 
はじめての Gatling
はじめての Gatlingはじめての Gatling
はじめての GatlingNaoya Nakazawa
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私a know
 
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Hidetoshi Hirokawa
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク LaravelMasashi Shinbara
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションMasashi Shinbara
 
Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]Masashi Shinbara
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係moai kids
 
画像処理をAWS LambdaのPythonで!
画像処理をAWS LambdaのPythonで!画像処理をAWS LambdaのPythonで!
画像処理をAWS LambdaのPythonで!Tomotsune Murata
 
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるLeap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるTsuyoshi Seino
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE辰徳 斎藤
 
1day cloud on_your_lab
1day cloud on_your_lab1day cloud on_your_lab
1day cloud on_your_labGo Chiba
 
Apache CloudStack -コントリビューションの手引き-
Apache CloudStack -コントリビューションの手引き-Apache CloudStack -コントリビューションの手引き-
Apache CloudStack -コントリビューションの手引き-Go Chiba
 

Was ist angesagt? (20)

No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
Lambdaのscheduled eventで実現する運用視点のサーバレスパターンLambdaのscheduled eventで実現する運用視点のサーバレスパターン
Lambdaのscheduled eventで実現する運用視点のサーバレスパターン
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch Logsについて
 
Kubernetes helm & helmc
Kubernetes helm & helmcKubernetes helm & helmc
Kubernetes helm & helmc
 
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
 
はじめての Gatling
はじめての Gatlingはじめての Gatling
はじめての Gatling
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私
 
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク Laravel
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
 
Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
 
AWS CLI Conference 2016
AWS CLI Conference 2016AWS CLI Conference 2016
AWS CLI Conference 2016
 
Vagrant体験入門
Vagrant体験入門Vagrant体験入門
Vagrant体験入門
 
画像処理をAWS LambdaのPythonで!
画像処理をAWS LambdaのPythonで!画像処理をAWS LambdaのPythonで!
画像処理をAWS LambdaのPythonで!
 
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるLeap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみる
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
1day cloud on_your_lab
1day cloud on_your_lab1day cloud on_your_lab
1day cloud on_your_lab
 
Amazon ECS事始め
Amazon ECS事始めAmazon ECS事始め
Amazon ECS事始め
 
Apache CloudStack -コントリビューションの手引き-
Apache CloudStack -コントリビューションの手引き-Apache CloudStack -コントリビューションの手引き-
Apache CloudStack -コントリビューションの手引き-
 

Ähnlich wie AWSをコードで定義する

Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth LINE Corporation
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみたKatsutoshi Nagaoka
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...VirtualTech Japan Inc.
 
201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcfIDC Frontier
 
SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01Haruhiko KAJIKAWA
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetupru pic
 
Spark Streaming Snippets
Spark Streaming SnippetsSpark Streaming Snippets
Spark Streaming SnippetsKoji Agawa
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"Masaya Aoyama
 
Cloud Foundryは何故動くのか
Cloud Foundryは何故動くのかCloud Foundryは何故動くのか
Cloud Foundryは何故動くのかKazuto Kusama
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使うMasashi Shinbara
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
私のEC2 2015振り返り
私のEC2 2015振り返り私のEC2 2015振り返り
私のEC2 2015振り返りKunihiro Morita
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)崇之 清水
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境Katsutoshi Nagaoka
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築Saito5656
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 

Ähnlich wie AWSをコードで定義する (20)

Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
 
201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf
 
SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01
 
Open Source x AI
Open Source x AIOpen Source x AI
Open Source x AI
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetup
 
Spark Streaming Snippets
Spark Streaming SnippetsSpark Streaming Snippets
Spark Streaming Snippets
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
Cloud Foundryは何故動くのか
Cloud Foundryは何故動くのかCloud Foundryは何故動くのか
Cloud Foundryは何故動くのか
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
私のEC2 2015振り返り
私のEC2 2015振り返り私のEC2 2015振り返り
私のEC2 2015振り返り
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 

Mehr von Sugawara Genki

2014 09-23 Mechanism of Gossip protocol
2014 09-23 Mechanism of Gossip protocol2014 09-23 Mechanism of Gossip protocol
2014 09-23 Mechanism of Gossip protocolSugawara Genki
 
ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいSugawara Genki
 
クックパッドの開発について
クックパッドの開発についてクックパッドの開発について
クックパッドの開発についてSugawara Genki
 
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Sugawara Genki
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較Sugawara Genki
 
EC2の天井を超える
EC2の天井を超えるEC2の天井を超える
EC2の天井を超えるSugawara Genki
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)Sugawara Genki
 
クックパッドでのVPC移行について
クックパッドでのVPC移行についてクックパッドでのVPC移行について
クックパッドでのVPC移行についてSugawara Genki
 
ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証Sugawara Genki
 
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-awsSugawara Genki
 
AWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αAWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αSugawara Genki
 
AWS移行に向けたクックパッドの取り組み
AWS移行に向けたクックパッドの取り組みAWS移行に向けたクックパッドの取り組み
AWS移行に向けたクックパッドの取り組みSugawara Genki
 
クックパッドのLVSについて
クックパッドのLVSについてクックパッドのLVSについて
クックパッドのLVSについてSugawara Genki
 
サーバー・クライアントの ボトルネック調査と高速化
サーバー・クライアントの ボトルネック調査と高速化サーバー・クライアントの ボトルネック調査と高速化
サーバー・クライアントの ボトルネック調査と高速化Sugawara Genki
 

Mehr von Sugawara Genki (17)

200k/sec
200k/sec200k/sec
200k/sec
 
2014 09-23 Mechanism of Gossip protocol
2014 09-23 Mechanism of Gossip protocol2014 09-23 Mechanism of Gossip protocol
2014 09-23 Mechanism of Gossip protocol
 
MHA on AWS+Rails
MHA on AWS+RailsMHA on AWS+Rails
MHA on AWS+Rails
 
ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしい
 
クックパッドの開発について
クックパッドの開発についてクックパッドの開発について
クックパッドの開発について
 
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
EC2の天井を超える
EC2の天井を超えるEC2の天井を超える
EC2の天井を超える
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
クックパッドでのVPC移行について
クックパッドでのVPC移行についてクックパッドでのVPC移行について
クックパッドでのVPC移行について
 
ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証
 
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
 
AWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αAWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+α
 
AWS移行に向けたクックパッドの取り組み
AWS移行に向けたクックパッドの取り組みAWS移行に向けたクックパッドの取り組み
AWS移行に向けたクックパッドの取り組み
 
クックパッドのLVSについて
クックパッドのLVSについてクックパッドのLVSについて
クックパッドのLVSについて
 
サーバー・クライアントの ボトルネック調査と高速化
サーバー・クライアントの ボトルネック調査と高速化サーバー・クライアントの ボトルネック調査と高速化
サーバー・クライアントの ボトルネック調査と高速化
 

AWSをコードで定義する