Configure Configsets at the Project-Level

Project configsets can be added at the lono project-level.

Specifying Configsets

Here’s how you specify which configsets you want a blueprint to use. Example:

config/blueprints/ec2/configsets.rb:

configset("httpd", resource: "Instance")

This configuration tells Lono to add the http configset code to the compiled template in output/ec2/template.yml. Notice, how you do not have to edit the app/blueprints/ec2/template.rb code. This is why the configset is reusable, you can selectively control which configset you want Lono to add to the blueprint’s template.

Configset Variables

If the configset has configurable variables, you can configure them like so:

config/blueprints/ec2/configsets/vars/httpd.rb

@html = "some example html"

UserData cfn-init

You can make sure configsets are applied when instances are launched by calling the cfn-init script in UserData. Here’s an example UserData script.

#!/bin/bash
yum install -y aws-cfn-bootstrap # install cfn-init
/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource Instance --region ${AWS::Region}

The ${AWS::StackName} and ${AWS::Region} will be substituted for their actual values at CloudFormation runtime. The --resource Instance specifies which resource logical id in the CloudFormation template that has the metadata with configset instructions to apply.

Note: On AmazonLinux2 cfn-init is already installed.