LoginSignup
6
4

More than 5 years have passed since last update.

CloudFormationのテンプレートをrubyで記述できるツールとしてkumogata(kumogata2)SparkleFormationを触ってみた。
自分なりに比較してみて結果をメモしておく。

とりあえずは過去の資産がないのでSparkleFormation使ってみるかなあ。

テンプレート記述の機能比較

基本的にテンプレート記述に関する機能に関してはそこまで差はない感じ。
ただし、SparkleFormationはjsonからの変換ができないのでそのままでは過去の資産が利用できない印象。

機能 SparkleFormation kumogata2
ruby => json変換
json => ruby変換 ×
テンプレート分割

テンプレートの記述

一般的なテンプレートの記述としてはそこまで違いがない。
(SparkleFormationの方が多少rubyチックに書ける)

  • kumogata2
template do
  AWSTemplateFormatVersion "2010-09-09"

  Resources do
    Vpc do
      Type "AWS::EC2::VPC"
      CidrBlock "10.0.0.0/16"
      Tags [ {"Key" => "Name", "Value" => "test"} ]
    end
  end
end
  • SparkleFormation
SparkleFormation.new(:test, provider: :aws) do
  AWSTemplateFormatVersion '2010-09-09'

  resources do
    vpc do
      properties do
        cidr_block "10.0.0.0/16"
        tags!("Name" => "test")
      end
    end  
  end  
end

複雑なテンプレートを書こうとすると関数が用意されているSparkleFormationの方が書きやすい。

  • kumogata2(ちょっと書き方を間違えるとエラーとなって辛い)
  Conditions do
    ["Parameter1", "Parameter2"].each do |param|
      _("#{param}Exist") do
        Fn__Not do |*|
          Fn__Equals [ _{ Ref param }, "" ]
       end
     end
  end
  • SparkleFormation
  conditions do
    ["Parameter1", "Parameter2"].each do |param|
      set!("#{param}Exist", not!(equals!(ref!(param), "")))
    end
  end

テンプレート実行ツール

どちらもrubyのテンプレートをそのままCloudFormationのスタックとして実行できるツールを持っている。
rubyからJSONへの変換はどちらも行えるので自分で実行ツールを実装することも可能。

kumogataはcloudformationの基本的な機能をラップしただけのような印象。

SparkleFormationはPolicyをテンプレート内に記述したりコンパイルパラメータが指定できたりと+αの機能を有している。
ただし、実装不足やバグ?で十分に動作しない機能やドキュメント不足でコードを読まなければいけない場合がある。

ドキュメント充実度

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4