lono 4.2.7 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.cody/README.md +6 -0
- data/.cody/acceptance.sh +30 -0
- data/.cody/buildspec.yml +21 -0
- data/.cody/demo.rb +38 -0
- data/.cody/project.rb +12 -0
- data/.cody/role.rb +1 -0
- data/.gitignore +2 -0
- data/.gitmodules +6 -3
- data/.travis.yml +7 -0
- data/CHANGELOG.md +10 -0
- data/Gemfile +0 -1
- data/LICENSE.txt +1 -22
- data/README.md +46 -55
- data/lib/lono.rb +20 -27
- data/lib/lono/app_file.rb +5 -0
- data/lib/lono/app_file/base.rb +19 -0
- data/lib/lono/app_file/build.rb +78 -0
- data/lib/lono/app_file/registry.rb +14 -0
- data/lib/lono/app_file/registry/item.rb +46 -0
- data/lib/lono/app_file/upload.rb +39 -0
- data/lib/lono/autoloader.rb +22 -0
- data/lib/lono/aws_services.rb +46 -0
- data/lib/lono/aws_services/util.rb +49 -0
- data/lib/lono/blueprint.rb +113 -0
- data/lib/lono/blueprint/find.rb +90 -0
- data/lib/lono/blueprint/helper.rb +18 -0
- data/lib/lono/blueprint/info.rb +10 -0
- data/lib/lono/blueprint/list.rb +14 -0
- data/lib/lono/blueprint/root.rb +43 -0
- data/lib/lono/cfn.rb +31 -19
- data/lib/lono/cfn/aws_service.rb +16 -0
- data/lib/lono/cfn/base.rb +244 -261
- data/lib/lono/cfn/create.rb +36 -32
- data/lib/lono/cfn/current.rb +1 -1
- data/lib/lono/cfn/delete.rb +2 -2
- data/lib/lono/cfn/deploy.rb +11 -0
- data/lib/lono/cfn/diff.rb +1 -1
- data/lib/lono/cfn/preview.rb +3 -3
- data/lib/lono/cfn/rollback.rb +26 -0
- data/lib/lono/cfn/status.rb +2 -203
- data/lib/lono/cfn/suffix.rb +67 -0
- data/lib/lono/cfn/update.rb +61 -53
- data/lib/lono/cli.rb +42 -23
- data/lib/lono/completer.rb +0 -2
- data/lib/lono/configure.rb +37 -0
- data/lib/lono/configure/aws_services.rb +18 -0
- data/lib/lono/configure/base.rb +94 -0
- data/lib/lono/configure/helpers.rb +128 -0
- data/lib/lono/conventions.rb +11 -0
- data/lib/lono/core.rb +42 -12
- data/lib/lono/core/config.rb +5 -4
- data/lib/lono/default/settings.yml +0 -11
- data/lib/lono/file_uploader.rb +9 -4
- data/lib/lono/help.rb +1 -2
- data/lib/lono/help/blueprint.md +46 -0
- data/lib/lono/help/cfn.md +5 -4
- data/lib/lono/help/cfn/create.md +14 -9
- data/lib/lono/help/cfn/deploy.md +92 -0
- data/lib/lono/help/cfn/diff.md +0 -1
- data/lib/lono/help/cfn/update.md +16 -15
- data/lib/lono/help/completion.md +3 -3
- data/lib/lono/help/generate.md +0 -1
- data/lib/lono/help/new.md +40 -34
- data/lib/lono/help/param.md +1 -1
- data/lib/lono/help/param/generate.md +1 -1
- data/lib/lono/help/template.md +2 -2
- data/lib/lono/help/xgraph.md +1 -1
- data/lib/lono/inspector.rb +1 -1
- data/lib/lono/inspector/base.rb +26 -10
- data/lib/lono/inspector/graph.rb +7 -3
- data/lib/lono/inspector/summary.rb +15 -3
- data/lib/lono/md5.rb +46 -0
- data/lib/lono/new.rb +40 -28
- data/lib/lono/new/helper.rb +2 -3
- data/lib/lono/param.rb +12 -11
- data/lib/lono/param/generator.rb +96 -42
- data/lib/lono/project_checker.rb +27 -8
- data/lib/lono/s3.rb +23 -0
- data/lib/lono/s3/bucket.rb +123 -0
- data/lib/lono/script.rb +4 -8
- data/lib/lono/script/base.rb +7 -2
- data/lib/lono/script/build.rb +7 -8
- data/lib/lono/script/upload.rb +4 -20
- data/lib/lono/sequence.rb +19 -16
- data/lib/lono/setting.rb +19 -27
- data/lib/lono/template.rb +22 -26
- data/lib/lono/template/base.rb +13 -0
- data/lib/lono/template/context.rb +4 -56
- data/lib/lono/template/context/loader.rb +70 -0
- data/lib/lono/template/dsl.rb +15 -151
- data/lib/lono/template/dsl/builder.rb +60 -0
- data/lib/lono/template/dsl/builder/base.rb +14 -0
- data/lib/lono/template/dsl/builder/condition.rb +26 -0
- data/lib/lono/template/dsl/builder/fn.rb +114 -0
- data/lib/lono/template/dsl/builder/helper.rb +64 -0
- data/lib/lono/template/dsl/builder/mapping.rb +24 -0
- data/lib/lono/template/dsl/builder/output.rb +37 -0
- data/lib/lono/template/dsl/builder/parameter.rb +39 -0
- data/lib/lono/template/dsl/builder/resource.rb +38 -0
- data/lib/lono/template/dsl/builder/section.rb +12 -0
- data/lib/lono/template/dsl/builder/syntax.rb +58 -0
- data/lib/lono/template/erb.rb +82 -0
- data/lib/lono/template/evaluate.rb +39 -0
- data/lib/lono/template/generator.rb +29 -0
- data/lib/lono/template/helper.rb +7 -29
- data/lib/lono/template/post_processor.rb +69 -0
- data/lib/lono/template/template.rb +4 -9
- data/lib/lono/template/upload.rb +103 -133
- data/lib/lono/template/util.rb +48 -0
- data/lib/lono/upgrade.rb +5 -3
- data/lib/lono/upgrade/upgrade5.rb +55 -0
- data/lib/lono/user_data.rb +4 -4
- data/lib/lono/version.rb +1 -1
- data/lib/templates/blueprint/%blueprint_name%.gemspec.tt +44 -0
- data/lib/templates/blueprint/.gitignore +14 -0
- data/lib/templates/blueprint/.lono/config.yml.tt +3 -0
- data/lib/templates/blueprint/.meta/config.yml.tt +3 -0
- data/lib/templates/blueprint/CHANGELOG.md +7 -0
- data/lib/templates/blueprint/Gemfile +4 -0
- data/lib/templates/blueprint/README.md +37 -0
- data/lib/templates/blueprint/Rakefile +6 -0
- data/lib/templates/blueprint/setup/configs.rb +54 -0
- data/lib/templates/blueprint_configs/configs/%blueprint_name%/params/base.txt +2 -0
- data/lib/{starter_projects/skeleton/app/definitions/base.rb → templates/blueprint_configs/configs/%blueprint_name%/params/development.txt} +0 -0
- data/lib/templates/blueprint_configs/configs/%blueprint_name%/variables/base.rb +2 -0
- data/lib/templates/blueprint_configs/configs/%blueprint_name%/variables/development.rb +0 -0
- data/lib/templates/blueprint_types/dsl/app/templates/%blueprint_name%.rb +37 -0
- data/lib/templates/blueprint_types/dsl/app/user_data/bootstrap.sh +2 -0
- data/lib/templates/blueprint_types/erb/app/definitions/base.rb.tt +1 -0
- data/lib/templates/blueprint_types/erb/app/templates/%blueprint_name%.yml +8 -0
- data/lib/{starter_projects/autoscaling → templates/skeleton}/.gitignore +1 -0
- data/lib/templates/skeleton/Gemfile +3 -0
- data/lib/{starter_projects/autoscaling → templates/skeleton}/Guardfile +2 -2
- data/lib/templates/skeleton/README.md +58 -0
- data/lib/templates/skeleton/configs/settings.yml +17 -0
- data/lib/templates/upgrade5/blueprints/main/.lono/config.yml +3 -0
- data/lib/templates/upgrade5/blueprints/main/.meta/config.yml +3 -0
- data/lono.gemspec +12 -8
- data/vendor/cfn-status/CHANGELOG.md +10 -0
- data/vendor/cfn-status/Gemfile +4 -0
- data/vendor/cfn-status/LICENSE.txt +21 -0
- data/vendor/cfn-status/README.md +56 -0
- data/vendor/cfn-status/Rakefile +6 -0
- data/vendor/cfn-status/bin/console +14 -0
- data/vendor/cfn-status/bin/setup +8 -0
- data/vendor/cfn-status/cfn-status.gemspec +30 -0
- data/vendor/cfn-status/lib/cfn-status.rb +1 -0
- data/vendor/cfn-status/lib/cfn/aws_service.rb +51 -0
- data/vendor/cfn-status/lib/cfn/status.rb +219 -0
- data/vendor/cfn-status/lib/cfn/status/version.rb +5 -0
- data/vendor/cfn-status/spec/cfn/status_spec.rb +81 -0
- data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +1080 -0
- data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +1080 -0
- data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +1086 -0
- data/vendor/cfn-status/spec/spec_helper.rb +14 -0
- data/vendor/cfn_camelizer/CHANGELOG.md +20 -0
- data/vendor/cfn_camelizer/Gemfile +4 -0
- data/vendor/cfn_camelizer/LICENSE.txt +21 -0
- data/vendor/cfn_camelizer/README.md +40 -0
- data/vendor/cfn_camelizer/Rakefile +6 -0
- data/vendor/cfn_camelizer/bin/console +14 -0
- data/vendor/cfn_camelizer/bin/setup +8 -0
- data/vendor/cfn_camelizer/cfn_camelizer.gemspec +32 -0
- data/vendor/cfn_camelizer/lib/camelizer.yml +37 -0
- data/vendor/cfn_camelizer/lib/cfn_camelizer.rb +94 -0
- data/vendor/cfn_camelizer/lib/cfn_camelizer/version.rb +3 -0
- data/vendor/cfn_camelizer/spec/cfn_camelizer_spec.rb +86 -0
- data/vendor/cfn_camelizer/spec/spec_helper.rb +14 -0
- metadata +189 -62
- data/.circleci/bin/commit_docs.sh +0 -26
- data/.circleci/config.yml +0 -72
- data/bin/release +0 -9
- data/lib/lono/help/import.md +0 -54
- data/lib/lono/importer.rb +0 -134
- data/lib/lono/new/message.rb +0 -35
- data/lib/starter_projects/autoscaling/Gemfile +0 -3
- data/lib/starter_projects/autoscaling/README.md +0 -118
- data/lib/starter_projects/autoscaling/app/definitions/base.rb +0 -2
- data/lib/starter_projects/autoscaling/app/templates/autoscaling.yml +0 -682
- data/lib/starter_projects/autoscaling/config/params/base/autoscaling.txt +0 -6
- data/lib/starter_projects/autoscaling/config/settings.yml +0 -33
- data/lib/starter_projects/ec2/.gitignore +0 -2
- data/lib/starter_projects/ec2/Gemfile +0 -3
- data/lib/starter_projects/ec2/Guardfile +0 -12
- data/lib/starter_projects/ec2/README.md +0 -86
- data/lib/starter_projects/ec2/app/definitions/base.rb +0 -2
- data/lib/starter_projects/ec2/app/definitions/development.rb +0 -1
- data/lib/starter_projects/ec2/app/definitions/production.rb +0 -1
- data/lib/starter_projects/ec2/app/helpers/my_custom_helper.rb +0 -17
- data/lib/starter_projects/ec2/app/partials/user_data/bootstrap.sh +0 -4
- data/lib/starter_projects/ec2/app/templates/example.yml +0 -430
- data/lib/starter_projects/ec2/config/params/base/example.txt +0 -2
- data/lib/starter_projects/ec2/config/params/development/example.txt +0 -3
- data/lib/starter_projects/ec2/config/params/production/example.txt +0 -2
- data/lib/starter_projects/ec2/config/settings.yml +0 -33
- data/lib/starter_projects/ec2/config/variables/base.rb +0 -3
- data/lib/starter_projects/ec2/config/variables/development.rb +0 -2
- data/lib/starter_projects/ec2/config/variables/production.rb +0 -2
- data/lib/starter_projects/ec2/welcome.txt +0 -8
- data/lib/starter_projects/skeleton/.gitignore +0 -2
- data/lib/starter_projects/skeleton/Gemfile +0 -3
- data/lib/starter_projects/skeleton/Guardfile +0 -12
- data/lib/starter_projects/skeleton/README.md +0 -53
- data/lib/starter_projects/skeleton/config/settings.yml +0 -33
- data/lib/starter_projects/skeleton/welcome.txt +0 -7
- data/vendor/plissken/Gemfile +0 -14
- data/vendor/plissken/LICENSE.txt +0 -20
- data/vendor/plissken/README.md +0 -46
- data/vendor/plissken/Rakefile +0 -56
- data/vendor/plissken/VERSION +0 -1
- data/vendor/plissken/lib/plissken.rb +0 -1
- data/vendor/plissken/lib/plissken/ext/hash/to_snake_keys.rb +0 -45
- data/vendor/plissken/plissken.gemspec +0 -61
- data/vendor/plissken/spec/lib/to_snake_keys_spec.rb +0 -177
- data/vendor/plissken/spec/spec_helper.rb +0 -90
- data/vendor/plissken/test/helper.rb +0 -20
- data/vendor/plissken/test/plissken/ext/hash/to_snake_keys_test.rb +0 -184
- data/vendor/plissken/test/test_plissken.rb +0 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eab7933de970a48215d89f351912ab01931bc0fd08083d273cb3dc660795d4f3
|
|
4
|
+
data.tar.gz: 99dd7038597bece84bc118ab0dd7272a59ab5ecc6735024e3b9393dd8e453072
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6845fbe057aa1e6b2ba479b38e8be9121a8588b11ae24e64e06c07334a62881aa5763158f6453e051e81f3402a31763abecf2f3caf7f77aacb2aa95f69e4fc13
|
|
7
|
+
data.tar.gz: 29bfb1dff44778cd35a78b91a0b705e9a57ec5c6f8f587fcc2022a2732379d32e24aa2f8f03e13256171d649f92928d7dbac30f1db118ebfe53528ca784bf43d
|
data/.cody/README.md
ADDED
data/.cody/acceptance.sh
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
set -exu
|
|
4
|
+
|
|
5
|
+
# https://unix.stackexchange.com/questions/1496/why-doesnt-my-bash-script-recognize-aliases
|
|
6
|
+
shopt -s expand_aliases
|
|
7
|
+
alias bolt="$(pwd)/exe/bolt"
|
|
8
|
+
|
|
9
|
+
bundle install --without development test
|
|
10
|
+
|
|
11
|
+
rm -rf infra
|
|
12
|
+
|
|
13
|
+
bolt new infra
|
|
14
|
+
# Very simply template with just a security group
|
|
15
|
+
cp .codebuild/demo.rb infra/blueprints/demo/app/templates/demo.rb
|
|
16
|
+
cd infra
|
|
17
|
+
|
|
18
|
+
# Rewrite the Gemfile to use the local bolt gem for testing
|
|
19
|
+
cat << EOF > Gemfile
|
|
20
|
+
source "https://rubygems.org"
|
|
21
|
+
gem "bolt", path: "$CODEBUILD_SRC_DIR", submodules: true
|
|
22
|
+
EOF
|
|
23
|
+
|
|
24
|
+
bundle # install bolt gem in the infra project
|
|
25
|
+
|
|
26
|
+
STACK_NAME="demo-$(date +%Y%m%d%H%M%S)"
|
|
27
|
+
|
|
28
|
+
bolt cfn deploy $STACK_NAME --blueprint demo
|
|
29
|
+
bolt cfn status $STACK_NAME
|
|
30
|
+
bolt cfn delete $STACK_NAME --sure
|
data/.cody/buildspec.yml
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
version: 0.2
|
|
2
|
+
|
|
3
|
+
phases:
|
|
4
|
+
pre_build:
|
|
5
|
+
commands:
|
|
6
|
+
- uname -a
|
|
7
|
+
- pwd
|
|
8
|
+
- ls
|
|
9
|
+
- env
|
|
10
|
+
- ls /etc/*release*
|
|
11
|
+
- cat /etc/*release*
|
|
12
|
+
- whoami
|
|
13
|
+
build:
|
|
14
|
+
commands:
|
|
15
|
+
- echo Build started on `date`
|
|
16
|
+
- echo Building project...
|
|
17
|
+
- uptime
|
|
18
|
+
- .codebuild/acceptance.sh
|
|
19
|
+
artifacts:
|
|
20
|
+
files:
|
|
21
|
+
- result.txt
|
data/.cody/demo.rb
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Acceptance Level Stack
|
|
2
|
+
aws_template_format_version "2010-09-09"
|
|
3
|
+
description "Demo stack"
|
|
4
|
+
|
|
5
|
+
parameter(:instance_type, "t3.micro")
|
|
6
|
+
|
|
7
|
+
mapping(:ami_map,
|
|
8
|
+
"ap-northeast-1": { ami: "ami-0f9ae750e8274075b" },
|
|
9
|
+
"ap-northeast-2": { ami: "ami-047f7b46bd6dd5d84" },
|
|
10
|
+
"ap-south-1": { ami: "ami-0889b8a448de4fc44" },
|
|
11
|
+
"ap-southeast-1": { ami: "ami-0b419c3a4b01d1859" },
|
|
12
|
+
"ap-southeast-2": { ami: "ami-04481c741a0311bbb" },
|
|
13
|
+
"ca-central-1": { ami: "ami-03338e1f67dae0168" },
|
|
14
|
+
"eu-central-1": { ami: "ami-09def150731bdbcc2" },
|
|
15
|
+
"eu-north-1": { ami: "ami-d16fe6af" },
|
|
16
|
+
"eu-west-1": { ami: "ami-07683a44e80cd32c5" },
|
|
17
|
+
"eu-west-2": { ami: "ami-09ead922c1dad67e4" },
|
|
18
|
+
"eu-west-3": { ami: "ami-0451ae4fd8dd178f7" },
|
|
19
|
+
"sa-east-1": { ami: "ami-0669a96e355eac82f" },
|
|
20
|
+
"us-east-1": { ami: "ami-0de53d8956e8dcf80" },
|
|
21
|
+
"us-east-2": { ami: "ami-02bcbb802e03574ba" },
|
|
22
|
+
"us-west-1": { ami: "ami-0019ef04ac50be30f" },
|
|
23
|
+
"us-west-2": { ami: "ami-061392db613a6357b" }
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# Comment out instance to save costs
|
|
27
|
+
# resource(:instance, "AWS::EC2::Instance",
|
|
28
|
+
# instance_type: ref(:instance_type),
|
|
29
|
+
# image_id: find_in_map(:ami_map, ref("AWS::Region"), :ami),
|
|
30
|
+
# security_group_ids: [get_att("security_group.group_id")],
|
|
31
|
+
# user_data: base64(user_data("bootstrap.sh"))
|
|
32
|
+
# )
|
|
33
|
+
resource(:security_group, "AWS::EC2::SecurityGroup",
|
|
34
|
+
group_description: "demo security group",
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# output(:instance)
|
|
38
|
+
output(:security_group, get_att("security_group.group_id"))
|
data/.cody/project.rb
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# For methods, refer to the properties of the CloudFormation CodeBuild::Project https://amzn.to/2UTeNlr
|
|
2
|
+
# For convenience methods, refer to the source https://github.com/tongueroo/codebuild/blob/master/lib/codebuild/dsl/project.rb
|
|
3
|
+
|
|
4
|
+
github_url("https://github.com/boltopspro/bolt.git")
|
|
5
|
+
linux_image("aws/codebuild/ruby:2.5.3-1.7.0")
|
|
6
|
+
|
|
7
|
+
# Uncomment to enable github webhook, the GitHub oauth token needs admin:repo_hook permissions
|
|
8
|
+
# Refer to https://github.com/tongueroo/codebuild/blob/master/readme/github_oauth.md
|
|
9
|
+
triggers(webhook: true)
|
|
10
|
+
|
|
11
|
+
# Shorthand to enable all local cache modes
|
|
12
|
+
# local_cache(true)
|
data/.cody/role.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
iam_policy("logs", "ssm", "cloudformation", "ec2")
|
data/.gitignore
CHANGED
data/.gitmodules
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
[submodule "vendor/
|
|
2
|
-
path = vendor/
|
|
3
|
-
url = https://github.com/tongueroo/
|
|
1
|
+
[submodule "vendor/cfn-status"]
|
|
2
|
+
path = vendor/cfn-status
|
|
3
|
+
url = https://github.com/tongueroo/cfn-status
|
|
4
|
+
[submodule "vendor/cfn_camelizer"]
|
|
5
|
+
path = vendor/cfn_camelizer
|
|
6
|
+
url = https://github.com/tongueroo/cfn_camelizer
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
|
|
5
5
|
|
|
6
|
+
## [5.0.1]
|
|
7
|
+
- Introduce lono DSL and set as default mode
|
|
8
|
+
- Introduce blueprints concept
|
|
9
|
+
- Introduce lono cfn deploy command
|
|
10
|
+
- Auto-create lono managed s3 bucket
|
|
11
|
+
- Zeitwerk autoloader
|
|
12
|
+
- Restructure project structure
|
|
13
|
+
- Remove aws\_profiles settings.yml in favor of aws_profile
|
|
14
|
+
- lono upgrade v4to5 command
|
|
15
|
+
|
|
6
16
|
## [4.2.7]
|
|
7
17
|
- retain tag values on cfn update operations
|
|
8
18
|
|
data/Gemfile
CHANGED
data/LICENSE.txt
CHANGED
|
@@ -1,22 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
MIT License
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
-
a copy of this software and associated documentation files (the
|
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
-
the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be
|
|
14
|
-
included in all copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
https://www.boltops.com/boltops-community-license
|
data/README.md
CHANGED
|
@@ -4,74 +4,75 @@
|
|
|
4
4
|
|
|
5
5
|
# Lono
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
[](https://circleci.com/gh/tongueroo/lono)
|
|
9
|
-
[![Code Climate][3]][4]
|
|
10
|
-
[](https://gemnasium.com/tongueroo/lono)
|
|
11
|
-
[](https://coveralls.io/r/tongueroo/lono)
|
|
12
|
-
[](https://gitter.im/tongueroo/lono?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
7
|
+

|
|
13
8
|
[](https://boltops.com?utm_source=badge&utm_medium=badge&utm_campaign=lono)
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
[4]: https://codeclimate.com/repos/51d7f1407e00a4042c010ab4/feed
|
|
10
|
+
Lono is a powerful CloudFormation framework. Lono handles the entire CloudFormation lifecycle. It builds, manages and deploys CloudFormation templates.
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* Lono generates CloudFormation templates based on ERB ruby templates in `yaml` format.
|
|
12
|
+
* Lono generates CloudFormation templates based on a [DSL](http://lono.cloud/docs/dsl/).
|
|
21
13
|
* Lono takes simple env-like files and generates the CloudFormation parameter files.
|
|
22
14
|
* Lono provides a simple CLI interface to launch the CloudFormation stacks.
|
|
23
15
|
|
|
24
16
|
See [lono.cloud](http://lono.cloud) for full lono documentation.
|
|
25
17
|
|
|
26
|
-
##
|
|
18
|
+
## Upgrading
|
|
27
19
|
|
|
28
|
-
If you are on version
|
|
20
|
+
If you are on version 4.2 and upgrade to 5.0. You can run `lono upgrade v4to5` within your project to upgrade it to version 5.0. Refer to the [Upgrading Guide](http://lono.cloud/docs/extras/upgrading/).
|
|
29
21
|
|
|
30
|
-
|
|
22
|
+
## Quick Usage
|
|
31
23
|
|
|
32
|
-
|
|
24
|
+
It only takes a couple of commands to start using lono.
|
|
33
25
|
|
|
34
|
-
|
|
26
|
+
gem install lono
|
|
27
|
+
lono new infra
|
|
28
|
+
cd infra
|
|
29
|
+
lono cfn deploy demo
|
|
35
30
|
|
|
36
|
-
|
|
37
|
-
* [Generating CloudFormation Templates with Lono](https://medium.com/boltops/generating-cloudformation-templates-with-lono-4709afa1299b)
|
|
38
|
-
* [AutoScaling CloudFormation Template with Lono](https://medium.com/boltops/autoscaling-cloudformation-template-with-lono-3dc520480c5f)
|
|
39
|
-
* [CloudFormation Tools: lono, lono-params and lono cfn Together](https://medium.com/boltops/cloudformation-tools-lono-lono-params-and-lono-cfn-play-together-620af51e616)
|
|
40
|
-
* [AWS CloudFormation dry-run with lono cfn preview](https://medium.com/boltops/aws-cloudformation-dry-run-with-lono-cfn-plan-2a1e0f80d13c)
|
|
31
|
+

|
|
41
32
|
|
|
42
|
-
##
|
|
33
|
+
## DSL
|
|
43
34
|
|
|
44
|
-
|
|
35
|
+
Here's an example of what the Lono CloudFormation DSL looks like:
|
|
36
|
+
|
|
37
|
+
```ruby
|
|
38
|
+
description "Demo stack"
|
|
39
|
+
|
|
40
|
+
parameter(:instance_type, "t3.micro")
|
|
41
|
+
|
|
42
|
+
mapping(:ami_map,
|
|
43
|
+
"us-east-1": { ami: "ami-0de53d8956e8dcf80" },
|
|
44
|
+
"us-west-2": { ami: "ami-061392db613a6357b" }
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
resource(:instance, "AWS::EC2::Instance",
|
|
48
|
+
instance_type: ref(:instance_type),
|
|
49
|
+
image_id: find_in_map(:ami_map, ref("AWS::Region"), :ami),
|
|
50
|
+
security_group_ids: [get_att("security_group.group_id")],
|
|
51
|
+
user_data: base64(user_data("bootstrap.sh"))
|
|
52
|
+
)
|
|
53
|
+
resource(:security_group, "AWS::EC2::SecurityGroup",
|
|
54
|
+
group_description: "demo security group",
|
|
55
|
+
)
|
|
45
56
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
lono new infra
|
|
49
|
-
cd infra
|
|
50
|
-
lono import https://s3-us-west-2.amazonaws.com/cloudformation-templates-us-west-2/EC2InstanceWithSecurityGroupSample.template --name ec2
|
|
51
|
-
# update the generated params file
|
|
52
|
-
lono cfn create ec2
|
|
57
|
+
output(:instance)
|
|
58
|
+
output(:security_group, get_att("security_group.group_id"))
|
|
53
59
|
```
|
|
54
|
-

|
|
55
60
|
|
|
56
61
|
### Lono Cfn Lifecycle Commands
|
|
57
62
|
|
|
58
|
-
Lono provides a `lono cfn` lifecycle command that allows you to launch stacks quickly. The `lono cfn` tool automatically runs `lono generate` internally and then launches the CloudFormation stack all in one command. If you are in a lono project and have a `
|
|
63
|
+
Lono provides a `lono cfn` lifecycle command that allows you to launch stacks quickly. The `lono cfn` tool automatically runs `lono generate` internally and then launches the CloudFormation stack all in one command. If you are in a lono project and have a `demo` lono blueprint. To create a stack you can simply run:
|
|
59
64
|
|
|
60
|
-
|
|
61
|
-
$ lono cfn create my-stack
|
|
62
|
-
```
|
|
65
|
+
$ lono cfn deploy demo
|
|
63
66
|
|
|
64
|
-
The above command will generate files to `output/templates/
|
|
67
|
+
The above command will generate files to `output/infra/templates/demo.yml` and `output/infra/params/demo.txt` and use them to create a CloudFormation stack. Here are some more examples of cfn commands:
|
|
65
68
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
$ lono cfn create -h # getting help
|
|
74
|
-
```
|
|
69
|
+
lono cfn deploy demo # shorthand if blueprint, template and params file matches.
|
|
70
|
+
lono cfn deploy demo-$(date +%Y%m%d%H%M%S) --blueprint demo --template demo --param demo
|
|
71
|
+
lono cfn diff demo-1493859659
|
|
72
|
+
lono cfn preview demo-1493859659
|
|
73
|
+
lono cfn update demo-1493859659
|
|
74
|
+
lono cfn delete demo-1493859659
|
|
75
|
+
lono cfn deploy -h # getting help
|
|
75
76
|
|
|
76
77
|
See [lono.cloud](http://lono.cloud) for full lono documentation.
|
|
77
78
|
|
|
@@ -82,13 +83,3 @@ See [lono.cloud](http://lono.cloud) for full lono documentation.
|
|
|
82
83
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
83
84
|
4. Push to the branch (`git push origin my-new-feature`)
|
|
84
85
|
5. Create new Pull Request
|
|
85
|
-
|
|
86
|
-
## Developing
|
|
87
|
-
|
|
88
|
-
There is a submodule in this project, so when you check out remember to sync the submodule.
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
$ git clone git@github.com:yourfork/lono.git
|
|
92
|
-
$ git submodule sync
|
|
93
|
-
$ git submodule update --init
|
|
94
|
-
```
|
data/lib/lono.rb
CHANGED
|
@@ -1,39 +1,32 @@
|
|
|
1
|
+
$stdout.sync = true unless ENV["LONO_STDOUT_SYNC"] == "0"
|
|
2
|
+
|
|
3
|
+
require 'active_support/core_ext/hash'
|
|
1
4
|
require 'active_support/core_ext/string'
|
|
2
5
|
require 'fileutils'
|
|
3
6
|
require 'json'
|
|
4
7
|
require 'memoist'
|
|
8
|
+
require 'plissken'
|
|
5
9
|
require 'rainbow/ext/string'
|
|
6
10
|
require 'render_me_pretty'
|
|
7
11
|
require 'yaml'
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
$:.unshift(
|
|
11
|
-
|
|
13
|
+
gem_root = File.dirname(__dir__)
|
|
14
|
+
$:.unshift("#{gem_root}/lib")
|
|
15
|
+
$:.unshift("#{gem_root}/vendor/cfn-status/lib")
|
|
16
|
+
require "cfn/status"
|
|
17
|
+
$:.unshift("#{gem_root}/vendor/cfn_camelizer/lib")
|
|
18
|
+
require "cfn_camelizer"
|
|
12
19
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
autoload :Cfn, 'lono/cfn'
|
|
16
|
-
autoload :Clean, 'lono/clean'
|
|
17
|
-
autoload :CLI, 'lono/cli'
|
|
18
|
-
autoload :Command, 'lono/command'
|
|
19
|
-
autoload :Completer, 'lono/completer'
|
|
20
|
-
autoload :Completion, 'lono/completion'
|
|
21
|
-
autoload :Core, 'lono/core'
|
|
22
|
-
autoload :Env, 'lono/env'
|
|
23
|
-
autoload :FileUploader, 'lono/file_uploader'
|
|
24
|
-
autoload :Help, 'lono/help'
|
|
25
|
-
autoload :Importer, 'lono/importer'
|
|
26
|
-
autoload :Inspector, 'lono/inspector'
|
|
27
|
-
autoload :New, 'lono/new'
|
|
28
|
-
autoload :Param, 'lono/param'
|
|
29
|
-
autoload :ProjectChecker, 'lono/project_checker'
|
|
30
|
-
autoload :Script, 'lono/script'
|
|
31
|
-
autoload :Sequence, 'lono/sequence'
|
|
32
|
-
autoload :Setting, 'lono/setting'
|
|
33
|
-
autoload :Template, 'lono/template'
|
|
34
|
-
autoload :Upgrade, 'lono/upgrade'
|
|
35
|
-
autoload :UserData, 'lono/user_data'
|
|
36
|
-
autoload :VERSION, 'lono/version'
|
|
20
|
+
require "lono/autoloader"
|
|
21
|
+
Lono::Autoloader.setup
|
|
37
22
|
|
|
23
|
+
module Lono
|
|
38
24
|
extend Core
|
|
39
25
|
end
|
|
26
|
+
|
|
27
|
+
Lono.set_aws_profile!
|
|
28
|
+
|
|
29
|
+
begin
|
|
30
|
+
require "lono-pro" # optional
|
|
31
|
+
rescue LoadError
|
|
32
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Naming AppFile instead of File so we dont to use ::File for normal regular File class
|
|
2
|
+
module Lono::AppFile
|
|
3
|
+
class Base
|
|
4
|
+
include Lono::Blueprint::Root
|
|
5
|
+
extend Memoist
|
|
6
|
+
|
|
7
|
+
def initialize(blueprint, options = {})
|
|
8
|
+
@blueprint, @options = blueprint, options
|
|
9
|
+
@template = @options[:template] || @blueprint
|
|
10
|
+
Lono::ProjectChecker.check
|
|
11
|
+
set_blueprint_root(@blueprint)
|
|
12
|
+
Lono::ProjectChecker.empty_templates
|
|
13
|
+
initialize_variables
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def initialize_variables
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
module Lono::AppFile
|
|
2
|
+
class Build < Base
|
|
3
|
+
def initialize_variables
|
|
4
|
+
@output_files_path = "#{Lono.config.output_path}/#{@blueprint}/files"
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def run
|
|
8
|
+
return unless detect_files?
|
|
9
|
+
|
|
10
|
+
puts "Building app/files for blueprint #{@blueprint}"
|
|
11
|
+
build_all
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def build_all
|
|
15
|
+
clean_output
|
|
16
|
+
copy_to_output
|
|
17
|
+
Registry.items.each do |item|
|
|
18
|
+
if item.directory?
|
|
19
|
+
zip_directory(item)
|
|
20
|
+
elsif item.file?
|
|
21
|
+
zip_file(item)
|
|
22
|
+
else
|
|
23
|
+
puts "WARN: #{item.path} does not exist. Double check that the path is correct in the s3_key call.".color(:yellow)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def zip_file(item)
|
|
29
|
+
path = item.path
|
|
30
|
+
zip_file = item.zip_file_name
|
|
31
|
+
|
|
32
|
+
puts "Zipping file and generating md5 named file from: #{path}"
|
|
33
|
+
command = "cd #{File.dirname(path)} && zip -q #{zip_file} #{File.basename(path)}" # create zipfile at same level of file
|
|
34
|
+
zip(command)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def zip_directory(item)
|
|
38
|
+
path = item.path
|
|
39
|
+
zip_file = item.zip_file_name
|
|
40
|
+
|
|
41
|
+
puts "Zipping folder and generating md5 named file from: #{path}"
|
|
42
|
+
command = "cd #{path} && zip --symlinks -rq #{zip_file} ." # create zipfile witih directory
|
|
43
|
+
zip(command)
|
|
44
|
+
FileUtils.mv("#{path}/#{zip_file}", "#{File.dirname(path)}/#{zip_file}") # move zip back to the parent directory
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def zip(command)
|
|
48
|
+
# puts "=> #{command}".color(:green) # uncomment to debug
|
|
49
|
+
`#{command}`
|
|
50
|
+
unless $?.success?
|
|
51
|
+
puts "ERROR: Fail to run #{command}".color(:red)
|
|
52
|
+
puts "Maybe zip is not installed or path is incorrect?"
|
|
53
|
+
exit 1
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def clean_output
|
|
58
|
+
FileUtils.rm_rf(@output_files_path)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def copy_to_output
|
|
62
|
+
src = "#{Lono.blueprint_root}/app/files"
|
|
63
|
+
dest = @output_files_path
|
|
64
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
|
65
|
+
FileUtils.cp_r(src, dest)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def detect_files?
|
|
69
|
+
app_files = Dir["#{Lono.blueprint_root}/app/files/*"]
|
|
70
|
+
if app_files.empty?
|
|
71
|
+
false
|
|
72
|
+
else
|
|
73
|
+
puts "Detected app/files for blueprint #{@blueprint}"
|
|
74
|
+
true
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|