Lono’s behavior can be tailored using a
settings.yml file. This file should be created at
config/settings.yml within the project. The options from the files get merged with the following precedence:
- current folder - The current folder’s
config/settings.ymlvalues take the highest precedence.
- user - The user’s
~/.lono/settings.ymlvalues take the second highest precedence.
- default - The default settings bundled with the tool takes the lowest precedence.
Let’s take a look at an example
# The base config is specially treated. It gets included the other environments automatically. base: # extract_scripts: # to: "/opt" # as: "ec2-user" # If s3_folder is set then the generated templates and app/scripts will automatically be uploaded to s3. # There are 2 formats for s3_folder: # Format 1: # s3_folder: mybucket/path/to/folder # simple string # Format 2: # s3_folder: # Hash options in order to support multiple AWS_PROFILEs # default: mybucket/path # aws_profile1: mybucket/path # aws_profile2: another-bucket/storage/path # randomize_stack_name: true # tack on a 3 char random string at the end of the stack name for lono cfn create # s3_endpoint: https://s3.us-east-1.amazonaws.com # Allows using a bucket in a different region than the stack. Gets rid of WARNING: S3 client configured for "us-east-1" but the bucket "xxx" is in "us-west-2"; Please configure the proper region to avoid multiple unnecessary redirects and signing attempts. development: # When you have AWS_PROFILE set to one of these values, ufo will switch to the desired # environment. This prevents you from switching AWS_PROFILE, forgetting to # also switch UFO_ENV, and accidentally deploying to production vs development. # aws_profiles: # - dev_profile1 # - dev_profile2 production: # aws_profiles: # - prod_profile
The table below covers what each setting does:
|aws_profiles||This provides a way to automatically map your
|randomize_stack_name||This is a convenience flag that results in lono automatically appending a random string to your stack name with the
|s3_folder||This allows you to specify the base folder telling lono where to upload files to s3. app/scripts files are uploaded in the scripts subfolder in here and templates when using lono with nested stacks are uploaded in the templates subfolder.|
|extract_scripts||This configures how the
The randomize_stack_name setting
randomize_stack_name is an option that was added after realizing a common development flow pattern that was being repeatedly used. When working with CloudFormation templates and developing the source code, we must often launch stacks over and over as we fine tune the stack. Since we cannot launch a stack with a duplicate name it is useful to use a command like this:
lono cfn create my-stack-$(date +%s) --template my-stack
This command automatically adds a random string to the end of the stack name but uses the template name without the random string. The
randomize_stack_name option automates this. So we can create multiple stacks with different names but the same source template rapidly. We can create multiple stacks in rapid-fire fashion and debug. When the option is enabled:
lono cfn create my-stack
Will create a “my-stack-[RANDOM]” using the my-stack template name. The random string is a short 3 character string.
Pro tip: Use the <- and -> arrow keys to move back and forward.