O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
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!
例のアレ
Próximos SlideShares
Carregando em…5
×

AWSをコードで定義する

5.555 visualizações

Publicada em

  • Entre para ver os comentários

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. 例のアレ

×