"The cnfdsl gem provides a simple DSL that allows you to write equivalent templates in a more friendly language and generate the correct json templates from the CLI"
CloudFormation { Description "Test" Parameter("One") { String Default "Test" MaxLength 15 } Output(:One,FnBase64( Ref("One"))) Resource("MyInstance") { Type "AWS::EC2::Instance" Property("ImageId","ami-14341342") } }
bash-3.2$ cfndsl /path/to/my/template.rb { "AWSTemplateFormatVersion": "2010-09-09", "Description": "Test", "Outputs": { "One": { "Value": { "Fn::Base64": { "Ref": "One" } } } }, "Parameters": { "One": { "Default": "Test", "MaxLength": 15, "Type": "String" } }, "Resources": { "MyInstance": { "Properties": { "ImageId": "ami-14341342" }, "Type": "AWS::EC2::Instance" } } }
Parameter "SQSRetentionPeriod" do String Description "The Retention period for the queues generated in this example" end queues = [ 'TestOne', 'TestTwo' ] queues.each do |name| Resource "#{name}Queue" do Type "AWS::SQS::Queue" Property "MessageRetentionPeriod", Ref("SQSRetentionPeriod") end end
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "SQSRetentionPeriod": { "Default": 300, "Description": "The Retention period for the queues generated in this example", "Type": "String" } }, "Resources": { "TestOneQueue": { "Properties": { "MessageRetentionPeriod": { "Ref": "SQSRetentionPeriod" } }, "Type": "AWS::SQS::Queue" }, "TestTwoQueue": { "Properties": { "MessageRetentionPeriod": { "Ref": "SQSRetentionPeriod" } }, "Type": "AWS::SQS::Queue" } } } end
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "SQSRetentionPeriod": { "Default": 300, "Description": "The Retention period for the queues generated in this example", "Type": "String" } }, "Resources": { "TestOneQueue": { "Properties": { "MessageRetentionPeriod": { "Ref": "SQSRetentionPeriod" } }, "Type": "AWS::SQS::Queue" }, "TestTwoQueue": { "Properties": { "MessageRetentionPeriod": { "Ref": "SQSRetentionPeriod" } }, "Type": "AWS::SQS::Queue" } } } end
The samples folder in the cfndsl repo has an example that builds the standard cloudformation autoscaling template:
gem install bbc-cosmos-tools bash-3.2$ bbc-cosmos-tools stack update election-data-renderer --env=test