私はこれでjsonをやめました〜あるいはawsの設定をコード化するとはどういうことか〜...
TRANSCRIPT
2
Cloud Formation
3
インフラをJSONテンプレート化 再利用可能な再現性のあるインフラ 自動化された一括デプロイメント 大量にあるAWSのサービス・機能の大部分をカバー
近ではGUIで図から作れる機能なんかも出ましたね
4
5
Masashi Terui @ marcy_teruiI’m a Developer and Cloud Architect.
I’m a full-time employee at JIG-SAW Inc. But, I’m a part-time freelancer. I’m a member of JAWS-UG and GCPUG and MyNA←New!!
I’m around 30 years old. I’m a father of my son and daughter. https://willy.works/
6
7
JSON is
ツラい
8
人に優しくない構文
オブジェクトは必ず中括弧で囲む
要素間はカンマが必要だが、末尾には付けてはいけない等など 静的な記述
JSONはInfrastructure as Codeなのか? 表現力に限りがある
CloudFormation専用の特殊な記述(RefとかFn::Hogeとか)
9
10
11
12
13
Chef is 何
14
Infrastructure as Codeブームの火付け役
サーバの設定をコード化
Ruby DSLによる優れた表現力
高い再利用性
抽象化 ※概念や周辺ツールが多くて複雑みたいな話はここでは置いておこう
15
16
Kumogata
17
CloudFormationをJSON以外で書いて、相互変換を行う
Ruby DSL
YAML
JavaScript, Coffee Script etc…
デプロイするためのコマンドラインツールとしての機能が付属
現在はVersion 2へ移行
Change Sets(プレビュー的な機能)対応
Plugin方式でフォーマットを増やせる
18
require './funtions'
Resources do VPC do Type "AWS::EC2::VPC" Properties do CidrBlock "10.0.0.0/16" EnableDnsHostnames true Tags [env_tag("production")] end end _include 'subnets.rb' _include 'gateway.rb' _include 'routetable.rb' end
19
色々 あるよ
21
Dry runで差分プレビューできるのがめっちゃ便利(Kumogataは無いけど、v2ならChange Setsで代替) よく変更するものほどメリットが高いと思います とりあえず、自分でよく使うやつ Roadworker - Route53 Piculet - Security Groups Miam - IAM
何が 嬉しい?
22
プルリクマージで反映等といった自動化フローが作りやすい
複数のファイルに分割可能
複雑な記述や冗長な記述を回避できる
変数やメソッドを利用して簡易な表現に こういうのがInfrastructure as Codeって言うんちゃう?
23
24
25
作った 動機
27
API Gatewayの設定が面倒
Swagger取り込みでだいぶマシになるが、冗長な表現も多い
俺達(俺)は書いたコードをサクッと上げてサクッとAPI公開
したいだけなんだ!!1
詳しくは→ http://marcy.hatenablog.com/entry/2016/06/02/133228
まとめ
28
JSONの手書きツラい
JSON以外で書くという選択肢
便利なツールはシェアしよう。そして、作ってみよう。
CloudFormationをdisってるわけではない
むしろ、誰かがツール作ることを見越してJSONなのでは?