lono 6.1.11 → 7.0.0
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/acceptance.sh +19 -3
- data/.gitignore +2 -2
- data/CHANGELOG.md +16 -1
- data/README.md +18 -20
- data/Rakefile +1 -0
- data/lib/lono.rb +7 -5
- data/lib/lono/abstract_base.rb +25 -0
- data/lib/lono/api/client.rb +30 -0
- data/lib/lono/api/proxy.rb +58 -0
- data/lib/lono/api/repos.rb +8 -0
- data/lib/lono/api/verify.rb +13 -0
- data/lib/lono/app_file/base.rb +4 -11
- data/lib/lono/app_file/build.rb +1 -1
- data/lib/lono/app_file/upload.rb +1 -4
- data/lib/lono/autoloader.rb +3 -1
- data/lib/lono/aws_services.rb +9 -9
- data/lib/lono/aws_services/helper.rb +14 -0
- data/lib/lono/aws_services/{util.rb → stack.rb} +1 -9
- data/lib/lono/aws_services/stack_set.rb +41 -0
- data/lib/lono/blueprint.rb +2 -2
- data/lib/lono/blueprint/configset/loader.rb +7 -0
- data/lib/lono/blueprint/helper.rb +8 -2
- data/lib/lono/blueprint/meta.rb +4 -12
- data/lib/lono/blueprint/new.rb +3 -3
- data/lib/lono/blueprint/root.rb +6 -26
- data/lib/lono/bundle.rb +54 -0
- data/lib/lono/cfn.rb +31 -75
- data/lib/lono/cfn/base.rb +39 -136
- data/lib/lono/cfn/cancel.rb +14 -9
- data/lib/lono/cfn/create.rb +15 -19
- data/lib/lono/cfn/delete.rb +9 -9
- data/lib/lono/cfn/deploy.rb +4 -4
- data/lib/lono/cfn/download.rb +27 -9
- data/lib/lono/cfn/opts.rb +80 -0
- data/lib/lono/cfn/preview/changeset.rb +23 -23
- data/lib/lono/cfn/preview/codediff.rb +5 -6
- data/lib/lono/cfn/preview/param.rb +10 -10
- data/lib/lono/cfn/rollback.rb +5 -5
- data/lib/lono/cfn/status.rb +0 -10
- data/lib/lono/cfn/update.rb +22 -27
- data/lib/lono/clean.rb +3 -3
- data/lib/lono/cli.rb +69 -34
- data/lib/lono/code.rb +22 -0
- data/lib/lono/command.rb +7 -0
- data/lib/lono/config_location.rb +6 -13
- data/lib/lono/configset.rb +9 -0
- data/lib/lono/configset/combiner.rb +128 -0
- data/lib/lono/configset/evaluate_file.rb +8 -0
- data/lib/lono/configset/list.rb +67 -0
- data/lib/lono/configset/loader.rb +98 -0
- data/lib/lono/configset/loader/dsl.rb +9 -0
- data/lib/lono/configset/materializer/final.rb +10 -0
- data/lib/lono/configset/materializer/gems_builder.rb +81 -0
- data/lib/lono/configset/materializer/jade.rb +15 -0
- data/lib/lono/configset/materializer/source.rb +54 -0
- data/lib/lono/configset/meta.rb +19 -0
- data/lib/lono/configset/meta/dsl.rb +12 -0
- data/lib/lono/configset/new.rb +84 -0
- data/lib/lono/configset/preparer.rb +44 -0
- data/lib/lono/configset/register/base.rb +121 -0
- data/lib/lono/configset/register/blueprint.rb +16 -0
- data/lib/lono/configset/register/dsl.rb +15 -0
- data/lib/lono/configset/register/project.rb +12 -0
- data/lib/lono/configset/registry.rb +34 -0
- data/lib/lono/configset/resolver.rb +42 -0
- data/lib/lono/conventions.rb +18 -7
- data/lib/lono/core.rb +16 -20
- data/lib/lono/default/settings.yml +2 -3
- data/lib/lono/ext/bundler.rb +7 -0
- data/lib/lono/file_uploader.rb +8 -5
- data/lib/lono/finder/base.rb +140 -0
- data/lib/lono/finder/blueprint.rb +11 -0
- data/lib/lono/finder/blueprint/configset.rb +17 -0
- data/lib/lono/finder/configset.rb +11 -0
- data/lib/lono/generate.rb +93 -0
- data/lib/lono/help/blueprint/new.md +0 -1
- data/lib/lono/help/cfn/delete.md +1 -1
- data/lib/lono/help/cfn/deploy.md +5 -76
- data/lib/lono/help/cfn/status.md +0 -4
- data/lib/lono/help/cfn/update.md +1 -1
- data/lib/lono/help/code/convert.md +51 -0
- data/lib/lono/help/code/import.md +30 -0
- data/lib/lono/help/configsets.md +24 -0
- data/lib/lono/help/generate.md +4 -4
- data/lib/lono/help/new.md +1 -2
- data/lib/lono/help/sets/delete.md +8 -0
- data/lib/lono/help/sets/deploy.md +76 -0
- data/lib/lono/help/sets/instances/delete.md +21 -0
- data/lib/lono/help/sets/instances/list.md +14 -0
- data/lib/lono/help/sets/instances/status.md +15 -0
- data/lib/lono/help/sets/instances/sync.md +88 -0
- data/lib/lono/help/sets/status.md +23 -0
- data/lib/lono/help/upgrade.md +1 -0
- data/lib/lono/importer.rb +22 -0
- data/lib/lono/importer/base.rb +59 -0
- data/lib/lono/importer/converter.rb +19 -0
- data/lib/lono/importer/download.rb +46 -0
- data/lib/lono/importer/dsl.rb +36 -0
- data/lib/lono/importer/erb.rb +31 -0
- data/lib/lono/importer/params.rb +56 -0
- data/lib/lono/importer/service/coder.rb +81 -0
- data/lib/lono/inspector/base.rb +12 -22
- data/lib/lono/inspector/graph.rb +1 -1
- data/lib/lono/inspector/summary.rb +41 -17
- data/lib/lono/jade.rb +103 -0
- data/lib/lono/jade/circular.rb +26 -0
- data/lib/lono/jadespec.rb +41 -0
- data/lib/lono/new.rb +2 -2
- data/lib/lono/opts.rb +43 -0
- data/lib/lono/output/template.rb +48 -0
- data/lib/lono/param.rb +3 -5
- data/lib/lono/param/generator.rb +13 -33
- data/lib/lono/pro.rb +15 -0
- data/lib/lono/pro/base.rb +16 -0
- data/lib/lono/pro/repo.rb +27 -0
- data/lib/lono/project_checker.rb +4 -29
- data/lib/lono/registration.rb +15 -0
- data/lib/lono/registration/base.rb +37 -0
- data/lib/lono/registration/check.rb +15 -0
- data/lib/lono/registration/temp.rb +60 -0
- data/lib/lono/registration/user.rb +54 -0
- data/lib/lono/script/base.rb +1 -10
- data/lib/lono/script/upload.rb +2 -12
- data/lib/lono/seed.rb +2 -11
- data/lib/lono/seed/base.rb +55 -110
- data/lib/lono/sets.rb +38 -0
- data/lib/lono/sets/base.rb +45 -0
- data/lib/lono/sets/create.rb +30 -0
- data/lib/lono/sets/delete.rb +47 -0
- data/lib/lono/sets/deploy.rb +11 -0
- data/lib/lono/sets/instances.rb +33 -0
- data/lib/lono/sets/instances/base.rb +30 -0
- data/lib/lono/sets/instances/delete.rb +69 -0
- data/lib/lono/sets/instances/list.rb +13 -0
- data/lib/lono/sets/instances/opts.rb +29 -0
- data/lib/lono/sets/instances/status.rb +12 -0
- data/lib/lono/sets/instances/sync.rb +182 -0
- data/lib/lono/sets/list.rb +35 -0
- data/lib/lono/sets/opts.rb +18 -0
- data/lib/lono/sets/preview/codediff.rb +35 -0
- data/lib/lono/sets/preview/param.rb +32 -0
- data/lib/lono/sets/status.rb +116 -0
- data/lib/lono/sets/status/instance.rb +20 -0
- data/lib/lono/sets/status/instance/base.rb +120 -0
- data/lib/lono/sets/status/instance/completed.rb +35 -0
- data/lib/lono/sets/status/instance/deleted.rb +32 -0
- data/lib/lono/sets/status/instance/show.rb +7 -0
- data/lib/lono/sets/status/instances.rb +111 -0
- data/lib/lono/sets/summarize.rb +20 -0
- data/lib/lono/sets/time_spent.rb +11 -0
- data/lib/lono/sets/update.rb +81 -0
- data/lib/lono/template.rb +5 -7
- data/lib/lono/template/configset_injector.rb +50 -0
- data/lib/lono/template/context.rb +4 -4
- data/lib/lono/template/context/loader.rb +4 -16
- data/lib/lono/template/evaluate.rb +2 -1
- data/lib/lono/template/generator.rb +17 -15
- data/lib/lono/template/helper.rb +7 -7
- data/lib/lono/template/post_processor.rb +2 -12
- data/lib/lono/template/strategy/base.rb +4 -0
- data/lib/lono/template/{dsl.rb → strategy/dsl.rb} +4 -6
- data/lib/lono/template/{dsl → strategy/dsl}/builder.rb +11 -15
- data/lib/lono/template/{dsl → strategy/dsl}/builder/fn.rb +1 -1
- data/lib/lono/template/strategy/dsl/builder/helpers.rb +11 -0
- data/lib/lono/template/strategy/dsl/builder/helpers/core_helper.rb +14 -0
- data/lib/lono/template/strategy/dsl/builder/helpers/file_helper.rb +48 -0
- data/lib/lono/template/strategy/dsl/builder/helpers/lookup_helper.rb +27 -0
- data/lib/lono/template/strategy/dsl/builder/helpers/s3_helper.rb +13 -0
- data/lib/lono/template/strategy/dsl/builder/helpers/tags_helper.rb +39 -0
- data/lib/lono/template/{dsl/builder → strategy/dsl/builder/section}/base.rb +6 -17
- data/lib/lono/template/{dsl/builder → strategy/dsl/builder/section}/condition.rb +1 -1
- data/lib/lono/template/strategy/dsl/builder/section/extensions.rb +9 -0
- data/lib/lono/template/{dsl/builder → strategy/dsl/builder/section}/mapping.rb +1 -1
- data/lib/lono/template/{dsl/builder/section_methods.rb → strategy/dsl/builder/section/methods.rb} +9 -2
- data/lib/lono/template/{dsl/builder → strategy/dsl/builder/section}/output.rb +1 -1
- data/lib/lono/template/strategy/dsl/builder/section/parameter.rb +69 -0
- data/lib/lono/template/{dsl/builder → strategy/dsl/builder/section}/resource.rb +1 -1
- data/lib/lono/template/{dsl/builder → strategy/dsl/builder/section}/resource/property_mover.rb +1 -1
- data/lib/lono/template/{dsl/builder → strategy/dsl/builder/section}/section.rb +1 -1
- data/lib/lono/template/{dsl → strategy/dsl}/builder/squeezer.rb +1 -1
- data/lib/lono/template/strategy/dsl/builder/stringify.rb +15 -0
- data/lib/lono/template/{dsl → strategy/dsl}/builder/syntax.rb +3 -2
- data/lib/lono/template/strategy/dsl/finalizer.rb +12 -0
- data/lib/lono/template/strategy/dsl/finalizer/parameter_groups.rb +56 -0
- data/lib/lono/template/{erb.rb → strategy/erb.rb} +5 -5
- data/lib/lono/template/strategy/source.rb +8 -0
- data/lib/lono/template/template.rb +1 -1
- data/lib/lono/template/upload.rb +4 -9
- data/lib/lono/template/util.rb +0 -40
- data/lib/lono/upgrade.rb +12 -10
- data/lib/lono/user_data.rb +4 -4
- data/lib/lono/utils/pretty_time.rb +14 -0
- data/lib/lono/utils/sure.rb +23 -0
- data/lib/lono/version.rb +1 -1
- data/lib/lono/yamler/loader.rb +52 -0
- data/lib/lono/yamler/validator.rb +51 -0
- data/lib/templates/blueprint/%blueprint_name%.gemspec.tt +4 -0
- data/lib/templates/blueprint/README.md.tt +1 -1
- data/lib/templates/blueprint/seed/configs.rb +2 -2
- data/lib/templates/blueprint_types/dsl/app/templates/%blueprint_name%.rb +17 -18
- data/lib/templates/blueprint_types/erb/app/templates/%blueprint_name%.yml +63 -4
- data/lib/templates/configset/%configset_name%.gemspec.tt +41 -0
- data/lib/templates/configset/.gitignore +11 -0
- data/lib/templates/configset/CHANGELOG.md +7 -0
- data/lib/templates/configset/Gemfile +4 -0
- data/lib/templates/configset/README.md.tt +3 -0
- data/lib/templates/configset/Rakefile.tt +9 -0
- data/lib/templates/configset/lib/configset.yml +20 -0
- data/lib/templates/skeleton/.gitignore +1 -0
- data/lib/templates/skeleton/Gemfile +0 -1
- data/lib/templates/skeleton/README.md +4 -4
- data/lib/templates/skeleton/configs/settings.yml +1 -1
- data/lono.gemspec +1 -4
- metadata +146 -79
- data/Guardfile +0 -19
- data/lib/lono/app_file.rb +0 -5
- data/lib/lono/blueprint/find.rb +0 -90
- data/lib/lono/blueprint/info.rb +0 -10
- data/lib/lono/blueprint/list.rb +0 -14
- data/lib/lono/cfn/current.rb +0 -95
- data/lib/lono/cfn/preview.rb +0 -4
- data/lib/lono/cfn/suffix.rb +0 -67
- data/lib/lono/cfn/util.rb +0 -27
- data/lib/lono/help/cfn/current.md +0 -18
- data/lib/lono/help/upgrade4.md +0 -25
- data/lib/lono/inspector.rb +0 -4
- data/lib/lono/output_template.rb +0 -35
- data/lib/lono/template/base.rb +0 -13
- data/lib/lono/template/dsl/builder/helpers.rb +0 -8
- data/lib/lono/template/dsl/builder/helpers/core_helper.rb +0 -107
- data/lib/lono/template/dsl/builder/helpers/param_helper.rb +0 -61
- data/lib/lono/template/dsl/builder/parameter.rb +0 -39
- data/lib/lono/upgrade/upgrade4.rb +0 -175
- data/lib/lono/upgrade/upgrade42.rb +0 -36
- data/lib/lono/upgrade/upgrade5.rb +0 -55
- data/lib/templates/blueprint/.meta/config.yml.tt +0 -4
- data/lib/templates/skeleton/Guardfile +0 -12
- data/lib/templates/upgrade5/blueprints/main/.lono/config.yml +0 -3
- data/lib/templates/upgrade5/blueprints/main/.meta/config.yml +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 385523caa0cc8ae16b14546c6a46f4b8210ea43c21d83807754a75357f92cef2
|
|
4
|
+
data.tar.gz: 9db612e67d8d23db5be53394f71ea2edc03b7e526e72951dfe9c7821d731d00f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: caece4d3ea56da6d7159ba95cceacfb205f9af85827a20eb2f555db385703a344c81dc32eb390cc65870b34c0bb04a85791c7dc918e18b9ca2bed316f2b826d0
|
|
7
|
+
data.tar.gz: 44e8056a90c0f6346d31a55deeb80e0f80d7aa0f063b55ecf09b312cea9a240f0ec908f5b227731c67b706163c38771f43b8cfd9ee80f0ac0d0c0850e1bd255c
|
data/.cody/acceptance.sh
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
set -exu
|
|
4
4
|
|
|
5
|
+
git config --global user.email "tonguerooo@gmail.com"
|
|
6
|
+
git config --global user.name "tung"
|
|
7
|
+
|
|
5
8
|
# https://unix.stackexchange.com/questions/1496/why-doesnt-my-bash-script-recognize-aliases
|
|
6
9
|
shopt -s expand_aliases
|
|
7
10
|
alias lono="$(pwd)/exe/lono"
|
|
@@ -12,20 +15,33 @@ rm -rf infra
|
|
|
12
15
|
|
|
13
16
|
lono new infra
|
|
14
17
|
cd infra
|
|
15
|
-
lono blueprint new demo
|
|
16
|
-
# Very simply template with just a security group
|
|
17
|
-
cp ../.cody/demo.rb blueprints/demo/app/templates/demo.rb
|
|
18
18
|
|
|
19
19
|
# Rewrite the Gemfile to use the local lono gem for testing
|
|
20
20
|
cat << EOF > Gemfile
|
|
21
21
|
source "https://rubygems.org"
|
|
22
22
|
gem "lono", path: "$CODEBUILD_SRC_DIR", submodules: true
|
|
23
23
|
EOF
|
|
24
|
+
cat Gemfile
|
|
24
25
|
|
|
25
26
|
bundle # install lono gem in the infra project
|
|
26
27
|
|
|
28
|
+
# Create a demo blueprint
|
|
29
|
+
lono blueprint new demo
|
|
30
|
+
# Very simply template with just a security group
|
|
31
|
+
cp ../.cody/demo.rb app/blueprints/demo/app/templates/demo.rb
|
|
32
|
+
|
|
27
33
|
STACK_NAME="demo-$(date +%Y%m%d%H%M%S)"
|
|
28
34
|
|
|
35
|
+
# Configure lono registration
|
|
36
|
+
mkdir -p .lono
|
|
37
|
+
cat << EOF > .lono/registration.yml
|
|
38
|
+
---
|
|
39
|
+
name: <%= ssm("/lono/registration/name") %>
|
|
40
|
+
company: <%= ssm("/lono/registration/company") %>
|
|
41
|
+
email: <%= ssm("/lono/registration/email") %>
|
|
42
|
+
registration_key: <%= ssm("/lono/registration/registration_key") %>
|
|
43
|
+
EOF
|
|
44
|
+
|
|
29
45
|
lono cfn deploy $STACK_NAME --blueprint demo
|
|
30
46
|
lono cfn status $STACK_NAME
|
|
31
47
|
lono cfn delete $STACK_NAME --sure
|
data/.gitignore
CHANGED
|
@@ -10,7 +10,6 @@ doc/
|
|
|
10
10
|
Gemfile.lock
|
|
11
11
|
InstalledFiles
|
|
12
12
|
lib/bundler/man
|
|
13
|
-
output
|
|
14
13
|
pkg
|
|
15
14
|
rdoc
|
|
16
15
|
spec/fixtures/my_project/templates/aws-waf-security-automations.yml
|
|
@@ -18,6 +17,7 @@ spec/project
|
|
|
18
17
|
spec/reports
|
|
19
18
|
test/tmp
|
|
20
19
|
test/version_tmp
|
|
21
|
-
tmp
|
|
22
20
|
|
|
23
21
|
/infra
|
|
22
|
+
/output
|
|
23
|
+
/tmp
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,21 @@
|
|
|
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
|
+
## [7.0.0]
|
|
7
|
+
* Breaking: project `blueprints` moved to `app/blueprints`. Use `lono upgrade` to update.
|
|
8
|
+
* Introduce configsets concept.
|
|
9
|
+
* Introduce lono sets concept: `lono sets`, `lono sets deploy`, `lono sets instances sync`
|
|
10
|
+
* Merge lono-pro into lono. Deprecate lono-pro gem.
|
|
11
|
+
* Add lono registration.
|
|
12
|
+
* Major refactoring:
|
|
13
|
+
* Remove stack name suffix option
|
|
14
|
+
* Remove current concept
|
|
15
|
+
* Introduce Lono::AbstractBase class
|
|
16
|
+
* Pass CLI options consistently straight through.
|
|
17
|
+
* Use Lono::Conventions.
|
|
18
|
+
* Introduce Lono::Cfn::Opts to remove duplication
|
|
19
|
+
* Internally use `@stack` instead of `@stack_name`. `@stack` can be either a stack or stack_set
|
|
20
|
+
|
|
6
21
|
## [6.1.11]
|
|
7
22
|
- #35 fix app files variables erb lookup scope
|
|
8
23
|
|
|
@@ -206,7 +221,7 @@ This project *tries* to adhere to [Semantic Versioning](http://semver.org/), eve
|
|
|
206
221
|
- update cli docs
|
|
207
222
|
|
|
208
223
|
## [4.0.1]
|
|
209
|
-
- add
|
|
224
|
+
- add https://lono.cloud/reference/
|
|
210
225
|
- improve cli docs
|
|
211
226
|
|
|
212
227
|
## [4.0.0]
|
data/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<img src="
|
|
2
|
+
<img src="https://lono.cloud/img/logos/lono-logo-small.png" />
|
|
3
3
|
</div>
|
|
4
4
|
|
|
5
5
|
# Lono
|
|
@@ -10,17 +10,25 @@
|
|
|
10
10
|
|
|
11
11
|
[](https://www.boltops.com)
|
|
12
12
|
|
|
13
|
-
Lono is a
|
|
13
|
+
Lono is a CloudFormation framework. It builds, manages, and deploys CloudFormation templates.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*
|
|
15
|
+
## Lono Features
|
|
16
|
+
|
|
17
|
+
* Simple CLI interface to launch CloudFormation stacks.
|
|
18
|
+
* Ability to use [Existing CloudFormation Templates](https://lono.cloud/docs/existing-templates/).
|
|
19
|
+
* [The Lono DSL](https://lono.cloud/docs/dsl/) - Generate templates from beautiful code.
|
|
20
|
+
* Write your CloudFormation parameters with [simple env-like values](https://lono.cloud/docs/configs/params/).
|
|
21
|
+
* Preview CloudFormation changes before pressing the big red button.
|
|
22
|
+
* [Layering](https://lono.cloud/docs/core/layering/) - Allows you to build multiple environments like development and production with the same template.
|
|
23
|
+
* [Variables](https://lono.cloud/docs/layering/variables/) - Allows you to construct templates where runtime Parameters do not suffice.
|
|
24
|
+
* [Helpers](https://lono.cloud/docs/core/helpers/) - Allows you to extend Lono and simplify code.
|
|
25
|
+
* [Configsets](https://lono.cloud/docs/configsets/) - Configurement Management. Automatically configure EC2 instances with reuseable code.
|
|
18
26
|
|
|
19
27
|
See [lono.cloud](http://lono.cloud) for full lono documentation.
|
|
20
28
|
|
|
21
29
|
## Upgrading
|
|
22
30
|
|
|
23
|
-
If you are on version
|
|
31
|
+
If you are on version 6 and upgrading to 7. You can run [lono upgrade](https://lono.cloud/reference/lono-upgrade/) within your project. Refer to the [Upgrading Guide](https://lono.cloud/docs/extras/upgrading/).
|
|
24
32
|
|
|
25
33
|
## Quick Usage
|
|
26
34
|
|
|
@@ -29,9 +37,10 @@ It only takes a couple of commands to start using lono.
|
|
|
29
37
|
gem install lono
|
|
30
38
|
lono new infra
|
|
31
39
|
cd infra
|
|
40
|
+
lono blueprint new demo
|
|
32
41
|
lono cfn deploy demo
|
|
33
42
|
|
|
34
|
-

|
|
35
44
|
|
|
36
45
|
## DSL
|
|
37
46
|
|
|
@@ -61,23 +70,12 @@ output("Instance")
|
|
|
61
70
|
output("SecurityGroup", get_att("SecurityGroup.GroupId"))
|
|
62
71
|
```
|
|
63
72
|
|
|
64
|
-
### Lono Cfn
|
|
73
|
+
### Lono Cfn Deploy
|
|
65
74
|
|
|
66
|
-
Lono provides a `lono cfn` lifecycle command that allows you to launch stacks quickly. The `lono cfn
|
|
75
|
+
Lono provides a `lono cfn` lifecycle command that allows you to launch stacks quickly. The `lono cfn deploy` generates and launches the CloudFormation stack. If you are in a lono project and have a `demo` lono blueprint. To create a stack run:
|
|
67
76
|
|
|
68
77
|
$ lono cfn deploy demo
|
|
69
78
|
|
|
70
|
-
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:
|
|
71
|
-
|
|
72
|
-
lono cfn deploy demo # shorthand if blueprint, template and params file matches.
|
|
73
|
-
lono cfn deploy demo-$(date +%Y%m%d%H%M%S) --blueprint demo --template demo --param demo
|
|
74
|
-
lono cfn diff demo
|
|
75
|
-
lono cfn preview demo
|
|
76
|
-
lono cfn delete demo
|
|
77
|
-
lono cfn deploy -h # getting help
|
|
78
|
-
|
|
79
|
-
See [lono.cloud](http://lono.cloud) for full lono documentation.
|
|
80
|
-
|
|
81
79
|
## Contributing
|
|
82
80
|
|
|
83
81
|
1. Fork it
|
data/Rakefile
CHANGED
data/lib/lono.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
$stdout.sync = true unless ENV["LONO_STDOUT_SYNC"] == "0"
|
|
2
2
|
|
|
3
|
+
require "active_support/core_ext/class"
|
|
3
4
|
require 'active_support/core_ext/hash'
|
|
4
5
|
require 'active_support/core_ext/string'
|
|
5
6
|
require 'fileutils'
|
|
@@ -16,16 +17,17 @@ $:.unshift("#{gem_root}/lib")
|
|
|
16
17
|
$:.unshift("#{gem_root}/vendor/cfn-status/lib")
|
|
17
18
|
require "cfn_status"
|
|
18
19
|
|
|
20
|
+
require "lono/ext/bundler"
|
|
21
|
+
|
|
19
22
|
require "lono/autoloader"
|
|
20
23
|
Lono::Autoloader.setup
|
|
21
24
|
|
|
22
25
|
module Lono
|
|
26
|
+
API_DEFAULT = 'https://api.lono.cloud/v1'
|
|
27
|
+
API = ENV['LONO_API'] || API_DEFAULT
|
|
28
|
+
|
|
23
29
|
extend Core
|
|
24
30
|
end
|
|
25
31
|
|
|
26
32
|
Lono.set_aws_profile!
|
|
27
|
-
|
|
28
|
-
begin
|
|
29
|
-
require "lono-pro" # optional
|
|
30
|
-
rescue LoadError
|
|
31
|
-
end
|
|
33
|
+
Lono.lono_pro_removal_check!
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Lono
|
|
2
|
+
class AbstractBase
|
|
3
|
+
extend Memoist
|
|
4
|
+
include Lono::Blueprint::Root
|
|
5
|
+
|
|
6
|
+
def initialize(options={})
|
|
7
|
+
reinitialize(options)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Hack so that we can use include Thor::Base
|
|
11
|
+
def reinitialize(options)
|
|
12
|
+
@options = options
|
|
13
|
+
Lono::ProjectChecker.check
|
|
14
|
+
@stack, @blueprint, @template, @param = Conventions.new(options).values
|
|
15
|
+
|
|
16
|
+
return if options[:source]
|
|
17
|
+
set_blueprint_root(@blueprint)
|
|
18
|
+
Lono::ProjectChecker.empty_templates
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def template_path
|
|
22
|
+
"#{Lono.config.output_path}/#{@blueprint}/templates/#{@template}.yml"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Lono::Api
|
|
2
|
+
class Client
|
|
3
|
+
extend Memoist
|
|
4
|
+
include Verify
|
|
5
|
+
include Repos
|
|
6
|
+
|
|
7
|
+
def http
|
|
8
|
+
Proxy.new
|
|
9
|
+
end
|
|
10
|
+
memoize :http
|
|
11
|
+
|
|
12
|
+
def load_json(res)
|
|
13
|
+
if res.code == "200"
|
|
14
|
+
data = JSON.load(res.body)
|
|
15
|
+
case data
|
|
16
|
+
when Array
|
|
17
|
+
data.map(&:deep_symbolize_keys)
|
|
18
|
+
when Hash
|
|
19
|
+
data.deep_symbolize_keys
|
|
20
|
+
end
|
|
21
|
+
else
|
|
22
|
+
if ENV['LONO_DEBUG_API']
|
|
23
|
+
puts "Error: Non-successful http response status code: #{res.code}"
|
|
24
|
+
puts "headers: #{res.each_header.to_h.inspect}"
|
|
25
|
+
end
|
|
26
|
+
nil
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# To allow a pretty interface:
|
|
2
|
+
#
|
|
3
|
+
# res = http.get("blueprints")
|
|
4
|
+
#
|
|
5
|
+
module Lono::Api
|
|
6
|
+
class Proxy
|
|
7
|
+
extend Memoist
|
|
8
|
+
|
|
9
|
+
def get(path)
|
|
10
|
+
request(Net::HTTP::Get, path)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def post(path, data={})
|
|
14
|
+
request(Net::HTTP::Post, path, data)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def http(url)
|
|
18
|
+
uri = URI(url)
|
|
19
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
20
|
+
http.open_timeout = http.read_timeout = 30
|
|
21
|
+
http.use_ssl = true if uri.scheme == 'https'
|
|
22
|
+
http
|
|
23
|
+
end
|
|
24
|
+
memoize :http
|
|
25
|
+
|
|
26
|
+
def request(klass, path, data={})
|
|
27
|
+
url = url(path)
|
|
28
|
+
http = http(url)
|
|
29
|
+
req = send_request(klass, url, data)
|
|
30
|
+
http.request(req) # send request
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def send_request(klass, url, data={})
|
|
34
|
+
data.merge!(
|
|
35
|
+
lono_version: Lono::VERSION,
|
|
36
|
+
lono_command: lono_command,
|
|
37
|
+
)
|
|
38
|
+
req = klass.new(url) # url includes query string and uri.path does not, must used url
|
|
39
|
+
if [Net::HTTP::Post, Net::HTTP::Put].include?(klass)
|
|
40
|
+
text = JSON.dump(data)
|
|
41
|
+
req.body = text
|
|
42
|
+
req.content_length = text.bytesize
|
|
43
|
+
end
|
|
44
|
+
req
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Lono::API does not include the /. IE: localhost:8888
|
|
48
|
+
# path includes the /. IE: "/blueprints"
|
|
49
|
+
def url(path)
|
|
50
|
+
"#{Lono::API}/#{path}"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
def lono_command
|
|
55
|
+
"#{$0} #{ARGV.join(' ')}"
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
data/lib/lono/app_file/base.rb
CHANGED
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
# Naming AppFile instead of File so we dont to use ::File for normal regular File class
|
|
2
2
|
module Lono::AppFile
|
|
3
|
-
class Base
|
|
4
|
-
include Lono::Blueprint::Root
|
|
5
|
-
extend Memoist
|
|
6
|
-
|
|
3
|
+
class Base < Lono::AbstractBase
|
|
7
4
|
# What's needed for a Thor::Group or "Sequence". Gives us Thor::Actions commands like create_file
|
|
8
5
|
# Must be included before `def initialize` as we override the Thor initialize
|
|
9
6
|
include Thor::Actions
|
|
10
7
|
include Thor::Base
|
|
11
|
-
|
|
12
|
-
def initialize(
|
|
13
|
-
|
|
14
|
-
@template = @options[:template] || @blueprint
|
|
15
|
-
Lono::ProjectChecker.check
|
|
16
|
-
set_blueprint_root(@blueprint)
|
|
17
|
-
Lono::ProjectChecker.empty_templates
|
|
8
|
+
# Override Thor::Base initialize
|
|
9
|
+
def initialize(options={})
|
|
10
|
+
reinitialize(options)
|
|
18
11
|
initialize_variables
|
|
19
12
|
end
|
|
20
13
|
|
data/lib/lono/app_file/build.rb
CHANGED
data/lib/lono/app_file/upload.rb
CHANGED
|
@@ -3,11 +3,8 @@ module Lono::AppFile
|
|
|
3
3
|
include Lono::AwsServices
|
|
4
4
|
extend Memoist
|
|
5
5
|
|
|
6
|
-
def initialize(blueprint, options={})
|
|
7
|
-
@blueprint, @options = blueprint, options
|
|
8
|
-
end
|
|
9
|
-
|
|
10
6
|
def upload
|
|
7
|
+
return unless Registry.items.size > 0
|
|
11
8
|
puts "Uploading app/files..."
|
|
12
9
|
|
|
13
10
|
Registry.items.each do |item|
|
data/lib/lono/autoloader.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require "lono/bundle"
|
|
2
|
+
Lono::Bundle.setup
|
|
1
3
|
require "zeitwerk"
|
|
2
4
|
|
|
3
5
|
module Lono
|
|
@@ -14,7 +16,7 @@ module Lono
|
|
|
14
16
|
loader = Zeitwerk::Loader.new
|
|
15
17
|
loader.inflector = Inflector.new
|
|
16
18
|
loader.push_dir(File.dirname(__dir__)) # lib
|
|
17
|
-
|
|
19
|
+
loader.log! if ENV["LONO_AUTOLOAD_LOG"]
|
|
18
20
|
loader.setup
|
|
19
21
|
end
|
|
20
22
|
end
|
data/lib/lono/aws_services.rb
CHANGED
|
@@ -8,7 +8,12 @@ require "aws_mfa_secure/ext/aws" # add MFA support
|
|
|
8
8
|
module Lono
|
|
9
9
|
module AwsServices
|
|
10
10
|
extend Memoist
|
|
11
|
-
include
|
|
11
|
+
include Helper
|
|
12
|
+
|
|
13
|
+
def cfn
|
|
14
|
+
Aws::CloudFormation::Client.new
|
|
15
|
+
end
|
|
16
|
+
memoize :cfn
|
|
12
17
|
|
|
13
18
|
def ec2
|
|
14
19
|
Aws::EC2::Client.new
|
|
@@ -20,11 +25,6 @@ module Lono
|
|
|
20
25
|
end
|
|
21
26
|
memoize :iam
|
|
22
27
|
|
|
23
|
-
def sts
|
|
24
|
-
Aws::STS::Client.new # part of aws-sdk-core
|
|
25
|
-
end
|
|
26
|
-
memoize :sts
|
|
27
|
-
|
|
28
28
|
def s3
|
|
29
29
|
Aws::S3::Client.new
|
|
30
30
|
end
|
|
@@ -40,9 +40,9 @@ module Lono
|
|
|
40
40
|
end
|
|
41
41
|
memoize :s3_presigner
|
|
42
42
|
|
|
43
|
-
def
|
|
44
|
-
Aws::
|
|
43
|
+
def sts
|
|
44
|
+
Aws::STS::Client.new # part of aws-sdk-core
|
|
45
45
|
end
|
|
46
|
-
memoize :
|
|
46
|
+
memoize :sts
|
|
47
47
|
end
|
|
48
48
|
end
|