AWSをコードで定義する

3,782 views

Published on

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,782
On SlideShare
0
From Embeds
0
Number of Embeds
2,037
Actions
Shares
0
Downloads
4
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

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

×