Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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_recor...
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 :tc...
Kelbim
ELBをコードで定義する
https://bitbucket.org/winebarrel/kelbim
Kelbim
require 'other/elbfile'
# EC2 Classic
ec2 do
load_balancer "my-load-balancer" do
instances(
"cthulhu",
"nyar",
)
li...
すべてC社のプロダクション環境で
利用しています。
それCloudFormationで(ry
● 途中適用できない
● (ほとんどの場合)テンプレートと生死を共にす
る
● JSONはコードではない
● dry-runができない
● 無理矢理関数が気に入らない
なぜコードなのか?
● (やろうと思えば)何でもできる
● 変数・繰り返し・条件分岐
→やり過ぎは良くないが設定を圧縮できる
● 外部との連携
→ファイル・Web・etc...
操作から定義へ
●
●
●
●

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

AWSをコードで定義する

5,543 views

Published on

  • Login to see the comments

AWSをコードで定義する

  1. 1. AWSをコードで定義する クックパッド株式会社 菅原 元気
  2. 2. 自己紹介 菅原 元気 - @sgwr_dts ● ● ● ● クックパッド株式会社 インフラ部 https://github.com/winebarrel https://bitbucket.org/winebarrel
  3. 3. 宣伝 elasticfox-ec2tag 0.4.4.1を リリースしました。 http://elasticfox-ec2tag.s3-websiteap-northeast-1.amazonaws.com/ 世間ではオワコンですが C社では現役です。
  4. 4. Roadworker Roadworkerというツールを作りました 『Gitを使ったRoute53の管理』 http://www.slideshare.net/winebarrel/gitroute5325545015
  5. 5. 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
  6. 6. Roadworker ● Route53をコード(Ruby DSL)で定義する ● やっていること ○ APIで取得した情報とDSLを比較 ○ 差分を埋めるAPIを発行
  7. 7. このメソッドほかにも使えるんじゃね?
  8. 8. 作ってみた
  9. 9. Piculet Security Groupをコードで定義 https://bitbucket.org/winebarrel/piculet
  10. 10. 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(
  11. 11. Kelbim ELBをコードで定義する https://bitbucket.org/winebarrel/kelbim
  12. 12. 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
  13. 13. すべてC社のプロダクション環境で 利用しています。
  14. 14. それCloudFormationで(ry ● 途中適用できない ● (ほとんどの場合)テンプレートと生死を共にす る ● JSONはコードではない ● dry-runができない ● 無理矢理関数が気に入らない
  15. 15. なぜコードなのか? ● (やろうと思えば)何でもできる ● 変数・繰り返し・条件分岐 →やり過ぎは良くないが設定を圧縮できる ● 外部との連携 →ファイル・Web・etc...
  16. 16. 操作から定義へ ● ● ● ● Puppet/Chefから着想 APIは操作 操作の積み重ねで状態を表すのは困難 自動化は可能だが、 ツールはあるべき状態を定義してくれない ● 設定ファイルはGitと相性がいい
  17. 17. うはwwww夢がひろがりんぐwwwwwwww 応用範囲は広いと思います ● IAM ● DB Schema ● iptables ● HAPproxy等ミドルウェア →再起動を伴わない設定の変更
  18. 18. まとめ なにはともあれオペレーションは 楽になりました。 Please try it out!
  19. 19. 例のアレ

×