ufo 5.0.7 → 6.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/README.md +19 -0
- data/.cody/acceptance/bin/build.sh +90 -0
- data/.cody/acceptance/buildspec.yml +10 -0
- data/.cody/acceptance/project.rb +11 -0
- data/.cody/acceptance/role.rb +28 -0
- data/.cody/shared/script/install/ufo.sh +40 -0
- data/.cody/shared/script/install.sh +5 -0
- data/.github/workflows/main.yml +28 -0
- data/CHANGELOG.md +4 -1
- data/Gemfile +0 -2
- data/README.md +1 -32
- data/lib/templates/docker/Dockerfile +4 -0
- data/lib/templates/helper/%underscore_name%_helper.rb.tt +6 -0
- data/lib/templates/init/.ufo/config/web/base.rb +6 -0
- data/lib/templates/init/.ufo/config/web/dev.rb +6 -0
- data/lib/templates/init/.ufo/config/web/prod.rb +6 -0
- data/lib/templates/init/.ufo/config.rb.tt +39 -0
- data/lib/templates/init/.ufo/resources/iam_roles/execution_role.rb +23 -0
- data/lib/templates/init/.ufo/resources/iam_roles/task_role.rb +20 -0
- data/lib/templates/init/.ufo/resources/task_definitions/web.yml +29 -0
- data/lib/templates/init/.ufo/vars/base.rb +20 -0
- data/lib/templates/init/.ufo/vars/dev.rb +4 -0
- data/lib/templates/init/.ufo/vars/prod.rb +4 -0
- data/lib/ufo/aws_services.rb +118 -0
- data/lib/ufo/booter.rb +27 -0
- data/lib/ufo/cfn/base.rb +7 -0
- data/lib/ufo/cfn/deploy.rb +54 -0
- data/lib/ufo/{stack → cfn/stack}/builder/base.rb +12 -23
- data/lib/ufo/cfn/stack/builder/conditions.rb +25 -0
- data/lib/ufo/{stack → cfn/stack}/builder/outputs.rb +2 -2
- data/lib/ufo/cfn/stack/builder/parameters.rb +34 -0
- data/lib/ufo/cfn/stack/builder/resources/base.rb +4 -0
- data/lib/ufo/cfn/stack/builder/resources/dns.rb +47 -0
- data/lib/ufo/{stack/builder/resources/ecs.rb → cfn/stack/builder/resources/ecs_service.rb} +11 -10
- data/lib/ufo/cfn/stack/builder/resources/elb.rb +35 -0
- data/lib/ufo/cfn/stack/builder/resources/iam_roles/base.rb +32 -0
- data/lib/ufo/cfn/stack/builder/resources/iam_roles/execution_role.rb +4 -0
- data/lib/ufo/cfn/stack/builder/resources/iam_roles/task_role.rb +4 -0
- data/lib/ufo/cfn/stack/builder/resources/listener.rb +65 -0
- data/lib/ufo/cfn/stack/builder/resources/listener_ssl.rb +44 -0
- data/lib/ufo/cfn/stack/builder/resources/scaling/base.rb +5 -0
- data/lib/ufo/cfn/stack/builder/resources/scaling/policy.rb +27 -0
- data/lib/ufo/cfn/stack/builder/resources/scaling/role.rb +33 -0
- data/lib/ufo/cfn/stack/builder/resources/scaling/target.rb +22 -0
- data/lib/ufo/cfn/stack/builder/resources/security_group/base.rb +4 -0
- data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/ecs.rb +4 -4
- data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/ecs_rule.rb +2 -2
- data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/elb.rb +5 -6
- data/lib/ufo/{stack → cfn/stack}/builder/resources/target_group.rb +4 -4
- data/lib/ufo/{stack → cfn/stack}/builder/resources/task_definition/reconstructor.rb +4 -4
- data/lib/ufo/{stack → cfn/stack}/builder/resources/task_definition.rb +4 -4
- data/lib/ufo/cfn/stack/builder/resources.rb +24 -0
- data/lib/ufo/cfn/stack/builder.rb +30 -0
- data/lib/ufo/{stack → cfn/stack}/custom_properties.rb +21 -5
- data/lib/ufo/cfn/stack/params.rb +51 -0
- data/lib/ufo/{stack → cfn/stack}/status.rb +2 -2
- data/lib/ufo/cfn/stack/template.rb +8 -0
- data/lib/ufo/cfn/stack/vars.rb +110 -0
- data/lib/ufo/cfn/stack/vpc.rb +31 -0
- data/lib/ufo/cfn/stack.rb +175 -0
- data/lib/ufo/cli/base.rb +18 -0
- data/lib/ufo/cli/build.rb +30 -0
- data/lib/ufo/cli/cancel.rb +18 -0
- data/lib/ufo/cli/central/update.rb +80 -0
- data/lib/ufo/cli/central.rb +12 -0
- data/lib/ufo/cli/clean.rb +17 -0
- data/lib/ufo/cli/destroy.rb +31 -0
- data/lib/ufo/{docker.rb → cli/docker.rb} +18 -18
- data/lib/ufo/cli/exec.rb +82 -0
- data/lib/ufo/cli/help/central/update.md +20 -0
- data/lib/ufo/{help → cli/help}/completion.md +0 -0
- data/lib/ufo/{help → cli/help}/completion_script.md +0 -0
- data/lib/ufo/cli/help/destroy.md +9 -0
- data/lib/ufo/cli/help/docker/base.md +39 -0
- data/lib/ufo/{help → cli/help}/docker/build.md +9 -9
- data/lib/ufo/{help → cli/help}/docker/clean.md +8 -8
- data/lib/ufo/{help → cli/help}/docker/compile.md +0 -0
- data/lib/ufo/cli/help/docker/name.md +16 -0
- data/lib/ufo/{help → cli/help}/docker/push.md +0 -0
- data/lib/ufo/cli/help/docker.md +6 -0
- data/lib/ufo/{help → cli/help}/help.md +1 -1
- data/lib/ufo/cli/help/init.md +27 -0
- data/lib/ufo/{help → cli/help}/logs.md +5 -4
- data/lib/ufo/cli/help/ps.md +12 -0
- data/lib/ufo/cli/help/releases.md +15 -0
- data/lib/ufo/cli/help/rollback.md +40 -0
- data/lib/ufo/cli/help/scale.md +7 -0
- data/lib/ufo/cli/help/ship.md +41 -0
- data/lib/ufo/cli/help/stop.md +3 -0
- data/lib/ufo/cli/help.rb +62 -0
- data/lib/ufo/{logs.rb → cli/logs.rb} +13 -6
- data/lib/ufo/cli/new/concerns.rb +16 -0
- data/lib/ufo/cli/new/helper.rb +24 -0
- data/lib/ufo/cli/new/init.rb +68 -0
- data/lib/ufo/{sequence.rb → cli/new/sequence.rb} +26 -4
- data/lib/ufo/cli/new.rb +10 -0
- data/lib/ufo/cli/opts.rb +35 -0
- data/lib/ufo/{ps → cli/ps}/task.rb +22 -29
- data/lib/ufo/cli/ps.rb +190 -0
- data/lib/ufo/{releases.rb → cli/releases.rb} +4 -4
- data/lib/ufo/{rollback.rb → cli/rollback.rb} +24 -12
- data/lib/ufo/cli/scale.rb +76 -0
- data/lib/ufo/cli/ship.rb +28 -0
- data/lib/ufo/cli/status.rb +8 -0
- data/lib/ufo/cli/stop.rb +49 -0
- data/lib/ufo/{tasks.rb → cli/tasks.rb} +2 -2
- data/lib/ufo/{upgrade.rb → cli/upgrade.rb} +2 -2
- data/lib/ufo/cli.rb +82 -172
- data/lib/ufo/command.rb +56 -1
- data/lib/ufo/concerns/autoscaling.rb +11 -0
- data/lib/ufo/concerns/names.rb +9 -0
- data/lib/ufo/concerns.rb +26 -0
- data/lib/ufo/config/inits.rb +13 -0
- data/lib/ufo/config.rb +187 -0
- data/lib/ufo/core.rb +32 -44
- data/lib/ufo/docker/builder.rb +44 -40
- data/lib/ufo/docker/cleaner.rb +9 -12
- data/lib/ufo/docker/compiler.rb +10 -4
- data/lib/ufo/docker/concerns.rb +7 -0
- data/lib/ufo/docker/dockerfile.rb +13 -9
- data/lib/ufo/docker/pusher.rb +13 -25
- data/lib/ufo/docker/state.rb +63 -0
- data/lib/ufo/ecr/auth.rb +8 -7
- data/lib/ufo/ecr/cleaner.rb +10 -14
- data/lib/ufo/ext/core/module.rb +31 -0
- data/lib/ufo/ext/core/nil_class.rb +11 -0
- data/lib/ufo/ext.rb +2 -0
- data/lib/ufo/{role → iam_role}/builder.rb +1 -1
- data/lib/ufo/{role → iam_role}/dsl.rb +8 -2
- data/lib/ufo/{role → iam_role}/registry.rb +1 -1
- data/lib/ufo/info.rb +22 -4
- data/lib/ufo/layering/layer.rb +95 -0
- data/lib/ufo/layering.rb +23 -0
- data/lib/ufo/log_group.rb +18 -10
- data/lib/ufo/logger/formatter.rb +13 -0
- data/lib/ufo/logger.rb +32 -0
- data/lib/ufo/names.rb +69 -0
- data/lib/ufo/param.rb +2 -1
- data/lib/ufo/task_definition/builder.rb +7 -0
- data/lib/ufo/task_definition/context.rb +45 -0
- data/lib/ufo/task_definition/erb/base.rb +18 -0
- data/lib/ufo/task_definition/erb/json.rb +28 -0
- data/lib/ufo/task_definition/erb/yaml.rb +18 -0
- data/lib/ufo/task_definition/erb.rb +78 -0
- data/lib/ufo/task_definition/helpers/aws_data_helper.rb +18 -0
- data/lib/ufo/task_definition/helpers/core.rb +50 -0
- data/lib/ufo/task_definition/helpers/ssm/fetcher.rb +39 -0
- data/lib/ufo/task_definition/helpers/ssm.rb +8 -0
- data/lib/ufo/task_definition/helpers/stack_output.rb +23 -0
- data/lib/ufo/{dsl/helper → task_definition/helpers}/vars.rb +40 -19
- data/lib/ufo/task_definition/helpers/vpc.rb +48 -0
- data/lib/ufo/task_definition/helpers.rb +5 -0
- data/lib/ufo/task_definition.rb +19 -0
- data/lib/ufo/upgrade/upgrade3.rb +1 -1
- data/lib/ufo/upgrade/upgrade4.rb +3 -3
- data/lib/ufo/utils/execute.rb +30 -0
- data/lib/ufo/utils/logging.rb +7 -0
- data/lib/ufo/utils/pretty.rb +18 -0
- data/lib/ufo/utils/squeezer.rb +1 -1
- data/lib/ufo/utils/sure.rb +23 -0
- data/lib/ufo/version.rb +1 -1
- data/lib/ufo/yaml/loader.rb +48 -0
- data/lib/ufo/yaml/validator.rb +51 -0
- data/lib/ufo/yaml.rb +13 -0
- data/lib/ufo.rb +12 -2
- data/spec/spec_helper.rb +4 -26
- data/spec/{lib → ufo}/ecr_auth_spec.rb +0 -0
- data/spec/{lib → ufo}/ecr_cleaner_spec.rb +0 -2
- data/spec/{lib/role → ufo/iam_role}/builder_spec.rb +5 -5
- data/spec/{lib/role → ufo/iam_role}/dsl_spec.rb +3 -3
- data/spec/{lib → ufo}/logs_spec.rb +2 -2
- data/ufo.gemspec +9 -3
- metadata +244 -341
- data/.circleci/bin/commit_docs.sh +0 -26
- data/.circleci/config.yml +0 -78
- data/.gitmodules +0 -0
- data/docs/.gitignore +0 -5
- data/docs/CNAME +0 -1
- data/docs/Gemfile +0 -4
- data/docs/LICENSE +0 -21
- data/docs/README.md +0 -20
- data/docs/_config.yml +0 -75
- data/docs/_docs/aws-ecs-task-execution-role.md +0 -28
- data/docs/_docs/conventions.md +0 -47
- data/docs/_docs/extras/codebuild-iam-role.md +0 -46
- data/docs/_docs/extras/dockerfile-erb.md +0 -60
- data/docs/_docs/extras/ecs-network-mode.md +0 -37
- data/docs/_docs/extras/load-balancer.md +0 -83
- data/docs/_docs/extras/minimal-deploy-iam.md +0 -79
- data/docs/_docs/extras/notification-arns.md +0 -21
- data/docs/_docs/extras/redirection-support.md +0 -27
- data/docs/_docs/extras/route53-support.md +0 -27
- data/docs/_docs/extras/security-groups.md +0 -36
- data/docs/_docs/extras/ssl-support.md +0 -20
- data/docs/_docs/faq.md +0 -100
- data/docs/_docs/fargate.md +0 -5
- data/docs/_docs/helpers.md +0 -24
- data/docs/_docs/iam-roles.md +0 -112
- data/docs/_docs/install.md +0 -25
- data/docs/_docs/more/auto-completion.md +0 -24
- data/docs/_docs/more/automated-cleanup.md +0 -14
- data/docs/_docs/more/customize-cloudformation.md +0 -35
- data/docs/_docs/more/migrations.md +0 -25
- data/docs/_docs/more/run-in-pieces.md +0 -30
- data/docs/_docs/more/single-task.md +0 -25
- data/docs/_docs/more/stuck-cloudformation.md +0 -29
- data/docs/_docs/more/why-cloudformation.md +0 -21
- data/docs/_docs/next-steps.md +0 -16
- data/docs/_docs/quick-start-ec2.md +0 -86
- data/docs/_docs/secrets.md +0 -135
- data/docs/_docs/settings/aws_profile.md +0 -36
- data/docs/_docs/settings/cfn.md +0 -12
- data/docs/_docs/settings/cluster.md +0 -66
- data/docs/_docs/settings/manage-security-groups.md +0 -24
- data/docs/_docs/settings/network.md +0 -45
- data/docs/_docs/settings.md +0 -55
- data/docs/_docs/ssl_errors.md +0 -40
- data/docs/_docs/structure.md +0 -41
- data/docs/_docs/tutorial-ufo-docker-build.md +0 -61
- data/docs/_docs/tutorial-ufo-init.md +0 -86
- data/docs/_docs/tutorial-ufo-ship.md +0 -95
- data/docs/_docs/tutorial-ufo-ships.md +0 -38
- data/docs/_docs/tutorial-ufo-tasks-build.md +0 -177
- data/docs/_docs/tutorial.md +0 -14
- data/docs/_docs/ufo-current.md +0 -49
- data/docs/_docs/ufo-env-extra.md +0 -22
- data/docs/_docs/ufo-env.md +0 -46
- data/docs/_docs/ufo-logs.md +0 -49
- data/docs/_docs/ufo-task-params.md +0 -43
- data/docs/_docs/ufo-tasks-register.md +0 -21
- data/docs/_docs/upgrading/upgrade4.5.md +0 -52
- data/docs/_docs/upgrading/upgrade4.md +0 -48
- data/docs/_docs/upgrading/upgrade5.md +0 -19
- data/docs/_docs/upgrading.md +0 -13
- data/docs/_docs/variables.md +0 -55
- data/docs/_includes/about.html +0 -19
- data/docs/_includes/banner/foot.html +0 -2
- data/docs/_includes/banner/head.html +0 -5
- data/docs/_includes/cfn-customize.md +0 -53
- data/docs/_includes/commands.html +0 -80
- data/docs/_includes/contact.html +0 -17
- data/docs/_includes/contact_disqus.html +0 -16
- data/docs/_includes/contact_static.html +0 -17
- data/docs/_includes/content.html +0 -26
- data/docs/_includes/css/bootstrap.min.css +0 -7
- data/docs/_includes/css/main.css +0 -501
- data/docs/_includes/css/quotes.css +0 -102
- data/docs/_includes/css/syntax.css +0 -65
- data/docs/_includes/css/table.css +0 -53
- data/docs/_includes/css/timeline.css +0 -201
- data/docs/_includes/css/ufo.css +0 -218
- data/docs/_includes/edit-on-github.html +0 -11
- data/docs/_includes/example.html +0 -63
- data/docs/_includes/footer.html +0 -44
- data/docs/_includes/google_analytics.html +0 -10
- data/docs/_includes/head.html +0 -32
- data/docs/_includes/header.html +0 -15
- data/docs/_includes/js.html +0 -32
- data/docs/_includes/js_disqus.html +0 -21
- data/docs/_includes/modals.html +0 -40
- data/docs/_includes/nav.html +0 -27
- data/docs/_includes/prev_next.md +0 -19
- data/docs/_includes/quotes.html +0 -19
- data/docs/_includes/reference.md +0 -5
- data/docs/_includes/repo_push_access.md +0 -11
- data/docs/_includes/subnav.html +0 -78
- data/docs/_includes/summary.html +0 -22
- data/docs/_includes/ufo-ship-options.md +0 -12
- data/docs/_includes/uses.html +0 -19
- data/docs/_layouts/default.html +0 -13
- data/docs/_layouts/style.css +0 -6
- data/docs/_reference/ufo-apps.md +0 -37
- data/docs/_reference/ufo-cancel.md +0 -24
- data/docs/_reference/ufo-completion.md +0 -46
- data/docs/_reference/ufo-completion_script.md +0 -27
- data/docs/_reference/ufo-current.md +0 -93
- data/docs/_reference/ufo-deploy.md +0 -76
- data/docs/_reference/ufo-destroy.md +0 -36
- data/docs/_reference/ufo-docker-base.md +0 -71
- data/docs/_reference/ufo-docker-build.md +0 -91
- data/docs/_reference/ufo-docker-clean.md +0 -44
- data/docs/_reference/ufo-docker-compile.md +0 -19
- data/docs/_reference/ufo-docker-help.md +0 -15
- data/docs/_reference/ufo-docker-name.md +0 -37
- data/docs/_reference/ufo-docker-push.md +0 -49
- data/docs/_reference/ufo-docker.md +0 -38
- data/docs/_reference/ufo-init.md +0 -125
- data/docs/_reference/ufo-logs.md +0 -40
- data/docs/_reference/ufo-network-help.md +0 -15
- data/docs/_reference/ufo-network-init.md +0 -39
- data/docs/_reference/ufo-network.md +0 -26
- data/docs/_reference/ufo-ps.md +0 -56
- data/docs/_reference/ufo-releases.md +0 -40
- data/docs/_reference/ufo-resources.md +0 -44
- data/docs/_reference/ufo-rollback.md +0 -61
- data/docs/_reference/ufo-scale.md +0 -50
- data/docs/_reference/ufo-ship.md +0 -129
- data/docs/_reference/ufo-ships.md +0 -68
- data/docs/_reference/ufo-status.md +0 -23
- data/docs/_reference/ufo-stop.md +0 -31
- data/docs/_reference/ufo-task.md +0 -56
- data/docs/_reference/ufo-tasks-build.md +0 -178
- data/docs/_reference/ufo-tasks-help.md +0 -15
- data/docs/_reference/ufo-tasks-register.md +0 -29
- data/docs/_reference/ufo-tasks.md +0 -35
- data/docs/_reference/ufo-upgrade-help.md +0 -15
- data/docs/_reference/ufo-upgrade-v2to3.md +0 -15
- data/docs/_reference/ufo-upgrade-v33to34.md +0 -15
- data/docs/_reference/ufo-upgrade-v3to4.md +0 -27
- data/docs/_reference/ufo-upgrade-v43to45.md +0 -15
- data/docs/_reference/ufo-upgrade.md +0 -29
- data/docs/_reference/ufo-version.md +0 -23
- data/docs/articles.md +0 -14
- data/docs/bin/web +0 -4
- data/docs/css/font-awesome/css/font-awesome.css +0 -1566
- data/docs/css/font-awesome/css/font-awesome.min.css +0 -4
- data/docs/css/font-awesome/fonts/FontAwesome.otf +0 -0
- data/docs/css/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/docs/css/font-awesome/fonts/fontawesome-webfont.svg +0 -504
- data/docs/css/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/docs/css/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/docs/docs.md +0 -29
- data/docs/img/docs/cloudformation-resources.png +0 -0
- data/docs/img/logos/boltops-logo-full.png +0 -0
- data/docs/img/logos/boltops-logo.png +0 -0
- data/docs/img/logos/ufo-logo-2.png +0 -0
- data/docs/img/logos/ufo-logo.png +0 -0
- data/docs/img/logos/ufo-site-header.png +0 -0
- data/docs/img/logos/ufo.jpg +0 -0
- data/docs/img/tutorials/ecs-console-task-definitions.png +0 -0
- data/docs/img/tutorials/ecs-console-ufo-ship.png +0 -0
- data/docs/img/tutorials/ecs-console-ufo-ships.png +0 -0
- data/docs/index.html +0 -10
- data/docs/js/bootstrap.js +0 -2114
- data/docs/js/bootstrap.min.js +0 -6
- data/docs/js/cbpAnimatedHeader.js +0 -44
- data/docs/js/cbpAnimatedHeader.min.js +0 -11
- data/docs/js/classie.js +0 -80
- data/docs/js/contact_me.js +0 -70
- data/docs/js/contact_me_static.js +0 -23
- data/docs/js/freelancer.js +0 -37
- data/docs/js/jqBootstrapValidation.js +0 -912
- data/docs/js/jquery-1.11.0.js +0 -4
- data/docs/js/jquery.easing.min.js +0 -44
- data/docs/js/nav.js +0 -53
- data/docs/quick-start.md +0 -133
- data/docs/reference.md +0 -29
- data/docs/style.css +0 -3
- data/docs/utils/ssl-doctor.rb +0 -89
- data/docs/utils/test-aws-api-access.rb +0 -11
- data/docs/utils/update-cert-chains.sh +0 -11
- data/lib/template/.env +0 -3
- data/lib/template/.secrets +0 -5
- data/lib/template/.ufo/iam_roles/execution_role.rb +0 -7
- data/lib/template/.ufo/iam_roles/task_role.rb +0 -21
- data/lib/template/.ufo/params.yml.tt +0 -27
- data/lib/template/.ufo/settings/cfn/default.yml.tt +0 -72
- data/lib/template/.ufo/settings/network/default.yml.tt +0 -26
- data/lib/template/.ufo/settings.yml.tt +0 -26
- data/lib/template/.ufo/task_definitions.rb.tt +0 -61
- data/lib/template/.ufo/templates/fargate.json.erb +0 -39
- data/lib/template/.ufo/templates/main.json.erb +0 -43
- data/lib/template/.ufo/variables/base.rb.tt +0 -19
- data/lib/template/.ufo/variables/development.rb +0 -8
- data/lib/template/.ufo/variables/production.rb +0 -7
- data/lib/template/Dockerfile +0 -15
- data/lib/template/bin/deploy.tt +0 -7
- data/lib/ufo/apps/cfn_map.rb +0 -70
- data/lib/ufo/apps/cluster.rb +0 -24
- data/lib/ufo/apps/service.rb +0 -56
- data/lib/ufo/apps.rb +0 -56
- data/lib/ufo/aws_service.rb +0 -36
- data/lib/ufo/base.rb +0 -35
- data/lib/ufo/cancel.rb +0 -23
- data/lib/ufo/current.rb +0 -104
- data/lib/ufo/default/settings.yml +0 -24
- data/lib/ufo/default/templates/main.json.erb +0 -39
- data/lib/ufo/destroy.rb +0 -41
- data/lib/ufo/docker/variables.rb +0 -26
- data/lib/ufo/dsl/helper.rb +0 -79
- data/lib/ufo/dsl/outputter.rb +0 -43
- data/lib/ufo/dsl/task_definition.rb +0 -108
- data/lib/ufo/dsl.rb +0 -96
- data/lib/ufo/help/apps.md +0 -12
- data/lib/ufo/help/balancer.md +0 -3
- data/lib/ufo/help/completions.md +0 -16
- data/lib/ufo/help/completions_script.md +0 -1
- data/lib/ufo/help/current.md +0 -65
- data/lib/ufo/help/deploy.md +0 -38
- data/lib/ufo/help/destroy.md +0 -9
- data/lib/ufo/help/docker/base.md +0 -49
- data/lib/ufo/help/docker/name.md +0 -16
- data/lib/ufo/help/docker.md +0 -6
- data/lib/ufo/help/init.md +0 -91
- data/lib/ufo/help/network/init.md +0 -13
- data/lib/ufo/help/ps.md +0 -27
- data/lib/ufo/help/releases.md +0 -16
- data/lib/ufo/help/resources.md +0 -20
- data/lib/ufo/help/rollback.md +0 -35
- data/lib/ufo/help/scale.md +0 -26
- data/lib/ufo/help/ship.md +0 -95
- data/lib/ufo/help/ships.md +0 -35
- data/lib/ufo/help/stop.md +0 -7
- data/lib/ufo/help/task.md +0 -27
- data/lib/ufo/help/tasks/build.md +0 -158
- data/lib/ufo/help/tasks/register.md +0 -14
- data/lib/ufo/help/tasks.md +0 -7
- data/lib/ufo/help/upgrade/v3to4.md +0 -3
- data/lib/ufo/help.rb +0 -9
- data/lib/ufo/init.rb +0 -119
- data/lib/ufo/network/fetch.rb +0 -48
- data/lib/ufo/network/helper.rb +0 -23
- data/lib/ufo/network/init.rb +0 -26
- data/lib/ufo/network.rb +0 -21
- data/lib/ufo/ps.rb +0 -129
- data/lib/ufo/scale.rb +0 -28
- data/lib/ufo/setting/profile.rb +0 -44
- data/lib/ufo/setting/security_groups.rb +0 -22
- data/lib/ufo/setting.rb +0 -75
- data/lib/ufo/settings.rb +0 -20
- data/lib/ufo/ship.rb +0 -103
- data/lib/ufo/stack/builder/conditions.rb +0 -23
- data/lib/ufo/stack/builder/parameters.rb +0 -45
- data/lib/ufo/stack/builder/resources/base.rb +0 -4
- data/lib/ufo/stack/builder/resources/dns.rb +0 -17
- data/lib/ufo/stack/builder/resources/elb.rb +0 -45
- data/lib/ufo/stack/builder/resources/listener.rb +0 -42
- data/lib/ufo/stack/builder/resources/listener_ssl.rb +0 -16
- data/lib/ufo/stack/builder/resources/roles/base.rb +0 -22
- data/lib/ufo/stack/builder/resources/roles/execution_role.rb +0 -4
- data/lib/ufo/stack/builder/resources/roles/task_role.rb +0 -4
- data/lib/ufo/stack/builder/resources/security_group/base.rb +0 -4
- data/lib/ufo/stack/builder/resources.rb +0 -20
- data/lib/ufo/stack/builder.rb +0 -26
- data/lib/ufo/stack/context.rb +0 -253
- data/lib/ufo/stack/helper.rb +0 -55
- data/lib/ufo/stack/template_body.rb +0 -13
- data/lib/ufo/stack.rb +0 -213
- data/lib/ufo/status.rb +0 -56
- data/lib/ufo/stop.rb +0 -49
- data/lib/ufo/task.rb +0 -225
- data/lib/ufo/tasks/builder.rb +0 -40
- data/lib/ufo/tasks/register.rb +0 -90
- data/lib/ufo/template_scope.rb +0 -57
- data/lib/ufo/util.rb +0 -69
- data/spec/lib/apps_spec.rb +0 -20
- data/spec/lib/builder_spec.rb +0 -23
- data/spec/lib/cli_spec.rb +0 -73
- data/spec/lib/completion_spec.rb +0 -18
- data/spec/lib/ps_spec.rb +0 -14
- data/spec/lib/register_spec.rb +0 -49
- data/spec/lib/setting_spec.rb +0 -18
- data/spec/lib/ship_spec.rb +0 -46
- data/spec/lib/stack/status_spec.rb +0 -76
- data/spec/lib/stop_spec.rb +0 -13
- data/spec/lib/task_spec.rb +0 -54
data/lib/ufo/base.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
module Ufo
|
|
2
|
-
class Base
|
|
3
|
-
extend Memoist
|
|
4
|
-
include Stack::Helper
|
|
5
|
-
|
|
6
|
-
def initialize(service, options={})
|
|
7
|
-
@service = switch_current(service)
|
|
8
|
-
@options = options
|
|
9
|
-
|
|
10
|
-
@cluster = @options[:cluster] || default_cluster(@service)
|
|
11
|
-
@stack_name = adjust_stack_name(@cluster, @service)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def switch_current(service)
|
|
15
|
-
Current.service!(service)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def info
|
|
19
|
-
Info.new(@service, @options)
|
|
20
|
-
end
|
|
21
|
-
memoize :info
|
|
22
|
-
|
|
23
|
-
def no_service_message
|
|
24
|
-
<<-EOL
|
|
25
|
-
No #{@service.color(:green)} ecs service found.
|
|
26
|
-
No CloudFormation stack named #{@stack_name.color(:green)} found.
|
|
27
|
-
Are sure it exists?
|
|
28
|
-
EOL
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def full_service
|
|
32
|
-
[@service, Ufo.env_extra].compact.join("-")
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
data/lib/ufo/cancel.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
module Ufo
|
|
2
|
-
class Cancel < Base
|
|
3
|
-
def run
|
|
4
|
-
stack = find_stack(@stack_name)
|
|
5
|
-
unless stack
|
|
6
|
-
puts "No #{@service} service to cancel."
|
|
7
|
-
puts "No #{@stack_name} stack to cancel. Exiting"
|
|
8
|
-
exit
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
puts "Canceling updates to #{@stack_name}."
|
|
12
|
-
if stack.stack_status == "CREATE_IN_PROGRESS"
|
|
13
|
-
cloudformation.delete_stack(stack_name: @stack_name)
|
|
14
|
-
puts "Canceling stack creation."
|
|
15
|
-
elsif stack.stack_status == "UPDATE_IN_PROGRESS"
|
|
16
|
-
cloudformation.cancel_update_stack(stack_name: @stack_name)
|
|
17
|
-
puts "Canceling stack update."
|
|
18
|
-
else
|
|
19
|
-
puts "The stack is not in a state to that is cancelable: #{stack.stack_status}"
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
data/lib/ufo/current.rb
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
require 'yaml'
|
|
3
|
-
|
|
4
|
-
module Ufo
|
|
5
|
-
class Current
|
|
6
|
-
def initialize(options={})
|
|
7
|
-
Ufo.check_ufo_project!
|
|
8
|
-
@options = options
|
|
9
|
-
@file = ".ufo/current"
|
|
10
|
-
@path = "#{Ufo.root}/#{@file}"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def run
|
|
14
|
-
@options[:rm] ? rm : set
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def rm
|
|
18
|
-
FileUtils.rm_f(@path)
|
|
19
|
-
puts "Current settings have been removed. Removed #{@file}"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def set
|
|
23
|
-
if @options.empty?
|
|
24
|
-
show
|
|
25
|
-
else
|
|
26
|
-
d = data # assign data to d to create local variable for merge to work
|
|
27
|
-
d = d.merge(@options).delete_if do |_,v|
|
|
28
|
-
v&.empty? || v == ['']
|
|
29
|
-
end
|
|
30
|
-
text = YAML.dump(d)
|
|
31
|
-
IO.write(@path, text)
|
|
32
|
-
puts "Current settings saved in .ufo/current"
|
|
33
|
-
show
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def show
|
|
38
|
-
if data.empty?
|
|
39
|
-
puts <<-EOL
|
|
40
|
-
There are no current settings. To set a current service run:
|
|
41
|
-
|
|
42
|
-
ufo current --service my-service
|
|
43
|
-
ufo current -h # for more examples
|
|
44
|
-
EOL
|
|
45
|
-
return
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
data.each do |key, value|
|
|
49
|
-
puts "Current #{key}: #{value}"
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def data
|
|
54
|
-
YAML.load(IO.read(@path)) rescue {}
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def env_extra
|
|
58
|
-
current = data["env_extra"]
|
|
59
|
-
return current unless current&.empty?
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def self.env_extra
|
|
63
|
-
Current.new.env_extra
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def services
|
|
67
|
-
return data["services"] || []
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# reads services, returns [] if not set
|
|
71
|
-
def self.services
|
|
72
|
-
Current.new.services
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def service
|
|
76
|
-
current = data["service"]
|
|
77
|
-
return current unless current&.empty?
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# reads service, returns nil if not set
|
|
81
|
-
def self.service
|
|
82
|
-
Current.new.service
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# reads service, will exit if current service not set
|
|
86
|
-
def self.service!(service=:current)
|
|
87
|
-
return service if service != :current
|
|
88
|
-
|
|
89
|
-
service = Current.service
|
|
90
|
-
return service if service
|
|
91
|
-
|
|
92
|
-
puts "ERROR: service must be specified.".color(:red)
|
|
93
|
-
puts <<-EOL
|
|
94
|
-
Example:
|
|
95
|
-
ufo #{ARGV.first} SERVICE
|
|
96
|
-
You can also set a current service to be remembered with:
|
|
97
|
-
ufo current --service SERVICE
|
|
98
|
-
EOL
|
|
99
|
-
exit 1
|
|
100
|
-
# if want to display full help menu:
|
|
101
|
-
# Ufo::CLI.start(ARGV + ["-h"])
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# More info: http://ufoships.com/docs/ufo-settings/
|
|
2
|
-
# The base config is specially treated. It gets included the other environments automatically.
|
|
3
|
-
# Yaml also directly supports merging with & and <<* syntax but doing it automatically
|
|
4
|
-
# for a cleaner syntax.
|
|
5
|
-
base:
|
|
6
|
-
# image:
|
|
7
|
-
# clean_keep: 30
|
|
8
|
-
# ecr_keep: 30
|
|
9
|
-
network_profile: default # .ufo/settings/network/default.yml file
|
|
10
|
-
cfn_profile: default # .ufo/settings/cfn/default.yml file
|
|
11
|
-
|
|
12
|
-
development:
|
|
13
|
-
# cluster: dev
|
|
14
|
-
# When you have AWS_PROFILE set to one of these values, ufo will switch to the desired
|
|
15
|
-
# environment. This prevents you from switching AWS_PROFILE, forgetting to
|
|
16
|
-
# also switch UFO_ENV, and accidentally deploying to production vs development.
|
|
17
|
-
# aws_profiles:
|
|
18
|
-
# - dev_profile1
|
|
19
|
-
# - dev_profile2
|
|
20
|
-
|
|
21
|
-
production:
|
|
22
|
-
# cluster: prod
|
|
23
|
-
# aws_profiles:
|
|
24
|
-
# - prod_profile
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"family": "<%= @family %>",
|
|
3
|
-
"containerDefinitions": [
|
|
4
|
-
{
|
|
5
|
-
"name": "<%= @name %>",
|
|
6
|
-
"image": "<%= @image %>",
|
|
7
|
-
"cpu": <%= @cpu %>,
|
|
8
|
-
<% if @memory %>
|
|
9
|
-
"memory": <%= @memory %>,
|
|
10
|
-
<% end %>
|
|
11
|
-
<% if @memory_reservation %>
|
|
12
|
-
"memoryReservation": <%= @memory_reservation %>,
|
|
13
|
-
<% end %>
|
|
14
|
-
<% if @container_port %>
|
|
15
|
-
"portMappings": [
|
|
16
|
-
{
|
|
17
|
-
"containerPort": <%= @container_port %>,
|
|
18
|
-
"protocol": "tcp"
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
<% end %>
|
|
22
|
-
"command": <%= @command.to_json %>,
|
|
23
|
-
<% if @environment %>
|
|
24
|
-
"environment": <%= @environment.to_json %>,
|
|
25
|
-
<% end %>
|
|
26
|
-
<% if @awslogs_group %>
|
|
27
|
-
"logConfiguration": {
|
|
28
|
-
"logDriver": "awslogs",
|
|
29
|
-
"options": {
|
|
30
|
-
"awslogs-group": "<%= @awslogs_group %>",
|
|
31
|
-
"awslogs-region": "<%= @awslogs_region || 'us-east-1' %>",
|
|
32
|
-
"awslogs-stream-prefix": "<%= @awslogs_stream_prefix %>"
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
<% end %>
|
|
36
|
-
"essential": true
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
}
|
data/lib/ufo/destroy.rb
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
module Ufo
|
|
2
|
-
class Destroy < Base
|
|
3
|
-
def bye
|
|
4
|
-
unless are_you_sure?
|
|
5
|
-
puts "Phew, that was close"
|
|
6
|
-
return
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
stack = find_stack(@stack_name)
|
|
10
|
-
unless stack
|
|
11
|
-
puts "Stack #{@stack_name.color(:green)} does not exist."
|
|
12
|
-
exit
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
if stack.stack_status =~ /_IN_PROGRESS$/
|
|
16
|
-
puts "Cannot destroy service #{@service.color(:green)}"
|
|
17
|
-
puts "Cannot delete stack #{@stack_name.color(:green)} in this state: #{stack.stack_status.color(:green)}"
|
|
18
|
-
puts "If the stack is taking a long time, you can cancel the current operation with:"
|
|
19
|
-
puts " ufo cancel #{@service}"
|
|
20
|
-
return
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
cloudformation.delete_stack(stack_name: @stack_name)
|
|
24
|
-
puts "Deleting CloudFormation stack with ECS resources: #{@stack_name}."
|
|
25
|
-
|
|
26
|
-
return unless @options[:wait]
|
|
27
|
-
start_time = Time.now
|
|
28
|
-
status.wait
|
|
29
|
-
took = Time.now - start_time
|
|
30
|
-
puts "Time took for deletion: #{status.pretty_time(took).color(:green)}."
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def are_you_sure?
|
|
34
|
-
return true if @options[:sure]
|
|
35
|
-
puts "You are about to destroy the #{@stack_name.color(:green)} stack. This contains the #{@service.color(:green)} service on the #{@cluster.color(:green)} cluster."
|
|
36
|
-
print "Are you sure you want to do this? (y/N) "
|
|
37
|
-
answer = $stdin.gets.strip
|
|
38
|
-
answer =~ /^y/
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
data/lib/ufo/docker/variables.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
class Ufo::Docker
|
|
2
|
-
class Variables
|
|
3
|
-
@@variables_path = "#{Ufo.root}/.ufo/settings/dockerfile_variables.yml"
|
|
4
|
-
|
|
5
|
-
def initialize(full_image_name, options={})
|
|
6
|
-
@full_image_name, @options = full_image_name, options
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def update
|
|
10
|
-
data = current_data
|
|
11
|
-
data[Ufo.env] ||= {}
|
|
12
|
-
data[Ufo.env]["base_image"] = @full_image_name
|
|
13
|
-
pretty_path = @@variables_path.sub("#{Ufo.root}/", "")
|
|
14
|
-
IO.write(@@variables_path, YAML.dump(data))
|
|
15
|
-
|
|
16
|
-
unless @options[:mute]
|
|
17
|
-
puts "The #{pretty_path} base_image has been updated with the latest base image:".color(:green)
|
|
18
|
-
puts " #{@full_image_name}".color(:green)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def current_data
|
|
23
|
-
File.exist?(@@variables_path) ? YAML.load_file(@@variables_path) : {}
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
data/lib/ufo/dsl/helper.rb
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# Some of variables are from the Dockerfile and some are from other places.
|
|
2
|
-
#
|
|
3
|
-
# * helper.full_image_name - Docker image name to be used when a the docker image is build. This is defined in ufo/settings.yml.
|
|
4
|
-
# * helper.dockerfile_port - Expose port in the Dockerfile. Only supports one exposed port, the first one that is encountered.
|
|
5
|
-
|
|
6
|
-
# Simply aggregates a bunch of variables that is useful for the task_definition.
|
|
7
|
-
module Ufo
|
|
8
|
-
class DSL
|
|
9
|
-
class Helper
|
|
10
|
-
include Ufo::Util
|
|
11
|
-
extend Memoist
|
|
12
|
-
|
|
13
|
-
# Add helpers from .ufo/helpers folder
|
|
14
|
-
def add_project_helpers
|
|
15
|
-
helpers_dir = "#{Ufo.root}/.ufo/helpers"
|
|
16
|
-
Dir.glob("#{helpers_dir}/**/*").each do |path|
|
|
17
|
-
next unless File.file?(path)
|
|
18
|
-
klass = path.gsub(%r{.*\.ufo/helpers/},'').sub(".rb",'').camelize
|
|
19
|
-
self.class.send(:include, klass.constantize)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
##############
|
|
24
|
-
# helper variables
|
|
25
|
-
def dockerfile_port
|
|
26
|
-
dockerfile_path = "#{Ufo.root}/Dockerfile"
|
|
27
|
-
if File.exist?(dockerfile_path)
|
|
28
|
-
parse_for_dockerfile_port(dockerfile_path)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def full_image_name
|
|
33
|
-
# Dont need to use @options here. Helps simplify the Helper initialization.
|
|
34
|
-
Docker::Builder.new({}).full_image_name
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
#############
|
|
38
|
-
# helper methods
|
|
39
|
-
def env(text)
|
|
40
|
-
Vars.new(text: text).env
|
|
41
|
-
end
|
|
42
|
-
alias_method :env_vars, :env
|
|
43
|
-
|
|
44
|
-
def env_file(path)
|
|
45
|
-
Vars.new(file: path).env
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def secrets(text)
|
|
49
|
-
Vars.new(text: text).secrets
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def secrets_file(path)
|
|
53
|
-
Vars.new(file: path).secrets
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def current_region
|
|
57
|
-
default_region = 'us-east-1'
|
|
58
|
-
return default_region if ENV['TEST']
|
|
59
|
-
|
|
60
|
-
return ENV['UFO_AWS_REGION'] if ENV['UFO_AWS_REGION'] # highest precedence
|
|
61
|
-
return ENV['AWS_REGION'] if ENV['AWS_REGION']
|
|
62
|
-
|
|
63
|
-
region = `aws configure get region`.strip rescue default_region
|
|
64
|
-
region.blank? ? default_region : region
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def parse_for_dockerfile_port(dockerfile_path)
|
|
68
|
-
lines = IO.read(dockerfile_path).split("\n")
|
|
69
|
-
expose_line = lines.find { |l| l =~ /^EXPOSE / }
|
|
70
|
-
if expose_line
|
|
71
|
-
md = expose_line.match(/EXPOSE (\d+)/)
|
|
72
|
-
port = md[1] if md
|
|
73
|
-
end
|
|
74
|
-
port.to_i if port
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
data/lib/ufo/dsl/outputter.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
module Ufo
|
|
2
|
-
class DSL
|
|
3
|
-
class Outputter
|
|
4
|
-
def initialize(name, erb_result, options={})
|
|
5
|
-
@name = name
|
|
6
|
-
@erb_result = erb_result
|
|
7
|
-
@options = options
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def write
|
|
11
|
-
output_path = "#{Ufo.root}/.ufo/output"
|
|
12
|
-
FileUtils.rm_rf(output_path) if @options[:clean]
|
|
13
|
-
FileUtils.mkdir(output_path) unless File.exist?(output_path)
|
|
14
|
-
|
|
15
|
-
path = "#{output_path}/#{@name}.json".sub(/^\.\//,'')
|
|
16
|
-
puts " #{path}" unless @options[:quiet]
|
|
17
|
-
validate(@erb_result, path)
|
|
18
|
-
data = JSON.parse(@erb_result)
|
|
19
|
-
override_image(data)
|
|
20
|
-
json = JSON.pretty_generate(data)
|
|
21
|
-
File.open(path, 'w') {|f| f.write(json) }
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def override_image(data)
|
|
25
|
-
return data unless @options[:image_override]
|
|
26
|
-
data["containerDefinitions"].each do |container_definition|
|
|
27
|
-
container_definition["image"] = @options[:image_override]
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def validate(json, path)
|
|
32
|
-
begin
|
|
33
|
-
JSON.parse(json)
|
|
34
|
-
rescue JSON::ParserError => e
|
|
35
|
-
puts "#{e.class}: #{e.message}"
|
|
36
|
-
puts "Invalid json. Output written to #{path} for debugging".color(:red)
|
|
37
|
-
File.open(path, 'w') {|f| f.write(json) }
|
|
38
|
-
exit 1
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
require "erb"
|
|
2
|
-
require "json"
|
|
3
|
-
|
|
4
|
-
module Ufo
|
|
5
|
-
class DSL
|
|
6
|
-
class TaskDefinition
|
|
7
|
-
attr_reader :task_definition_name
|
|
8
|
-
def initialize(dsl, task_definition_name, options={}, &block)
|
|
9
|
-
@dsl = dsl
|
|
10
|
-
@task_definition_name = task_definition_name
|
|
11
|
-
@block = block
|
|
12
|
-
@options = options
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# delegate helper method back up to dsl
|
|
16
|
-
def helper
|
|
17
|
-
@dsl.helper
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def template_scope
|
|
21
|
-
@template_scope ||= Ufo::TemplateScope.new(helper, @task_definition_name)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def build
|
|
25
|
-
copy_instance_variables
|
|
26
|
-
begin
|
|
27
|
-
instance_eval(&@block)
|
|
28
|
-
rescue Exception => e
|
|
29
|
-
build_error_info(e)
|
|
30
|
-
raise
|
|
31
|
-
end
|
|
32
|
-
RenderMePretty.result(source_path, context: template_scope)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Provide a slightly better error message to user when the task definition
|
|
36
|
-
# code block is not evaluated successfully.
|
|
37
|
-
def build_error_info(e)
|
|
38
|
-
puts "ERROR: evaluating block for task_definition #{@task_definition_name}".color(:red)
|
|
39
|
-
# The first line of the backtrace has the info of the file name. Example:
|
|
40
|
-
# ./.ufo/task_definitions.rb:24:in `block in evaluate_template_definitions'
|
|
41
|
-
info = e.backtrace[0]
|
|
42
|
-
filename = info.split(':')[0..1].join(':')
|
|
43
|
-
puts "Filename: #{filename}".color(:red)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
# Copy the instance variables from TemplateScope to TaskDefinition
|
|
48
|
-
# so that config/variables are available in the task_definition blocks also.
|
|
49
|
-
# Example:
|
|
50
|
-
#
|
|
51
|
-
# task_definition "my-app" do
|
|
52
|
-
# # make config/variables available here also
|
|
53
|
-
# end
|
|
54
|
-
#
|
|
55
|
-
# This allows possible collision but think it is worth it to have
|
|
56
|
-
# variables available.
|
|
57
|
-
def copy_instance_variables
|
|
58
|
-
template_scope.instance_variables.each do |var|
|
|
59
|
-
val = template_scope.instance_variable_get(var)
|
|
60
|
-
instance_variable_set(var, val)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# At this point instance_eval has been called and source has been possibly called
|
|
65
|
-
def source(name)
|
|
66
|
-
@source = name
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def variables(vars={})
|
|
70
|
-
vars.each do |var,value|
|
|
71
|
-
# Warn when variable collides with internal variable, but dont warn
|
|
72
|
-
# template_scope variables collision.
|
|
73
|
-
if instance_variable_defined?("@#{var}") && !template_scope_instance_variable?(var)
|
|
74
|
-
puts "WARNING: The instance variable @#{var} is already used internally with ufo. Please name you variable another name!"
|
|
75
|
-
end
|
|
76
|
-
template_scope.instance_variable_set("@#{var}", value)
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def template_scope_instance_variable?(var)
|
|
81
|
-
template_scope.instance_variables.include?("@#{var}".to_sym)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def source_path
|
|
85
|
-
if @source # this means that source has been called
|
|
86
|
-
path = "#{Ufo.root}/.ufo/templates/#{@source}.json.erb"
|
|
87
|
-
check_source_path(path)
|
|
88
|
-
else
|
|
89
|
-
# default source path
|
|
90
|
-
path = File.expand_path("../../default/templates/main.json.erb", __FILE__)
|
|
91
|
-
puts "#{task_definition_name} template definition using default template: #{path}" unless @options[:mute]
|
|
92
|
-
end
|
|
93
|
-
path
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def check_source_path(path)
|
|
97
|
-
unless File.exist?(path)
|
|
98
|
-
friendly_path = path.sub("#{Ufo.root}/", '')
|
|
99
|
-
puts "ERROR: Could not find the #{friendly_path} template. Are sure it exists? Check where you called source in ufo/task_definitions.rb"
|
|
100
|
-
exit 1
|
|
101
|
-
else
|
|
102
|
-
puts "#{task_definition_name} template definition using project template: #{path}" unless @options[:mute]
|
|
103
|
-
end
|
|
104
|
-
path
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
data/lib/ufo/dsl.rb
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
require 'ostruct'
|
|
2
|
-
|
|
3
|
-
module Ufo
|
|
4
|
-
class DSL
|
|
5
|
-
extend Memoist
|
|
6
|
-
|
|
7
|
-
def initialize(template_definitions_path, options={})
|
|
8
|
-
@template_definitions_path = template_definitions_path
|
|
9
|
-
@options = options
|
|
10
|
-
@task_definitions = []
|
|
11
|
-
@outputters = []
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def run
|
|
15
|
-
evaluate_template_definitions
|
|
16
|
-
build_task_definitions
|
|
17
|
-
write_outputs
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# All we're doing at this point is saving blocks of code into memory
|
|
21
|
-
# The instance_eval provides the task_definition and helper methods as they are part
|
|
22
|
-
# of this class.
|
|
23
|
-
def evaluate_template_definitions
|
|
24
|
-
source_code = IO.read(@template_definitions_path)
|
|
25
|
-
begin
|
|
26
|
-
instance_eval(source_code, @template_definitions_path)
|
|
27
|
-
rescue Exception => e
|
|
28
|
-
if e.class == SystemExit # allow exit to happen normally
|
|
29
|
-
raise
|
|
30
|
-
else
|
|
31
|
-
task_definition_error(e)
|
|
32
|
-
puts "\nFull error:"
|
|
33
|
-
raise
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Prints out a user friendly task_definition error message
|
|
39
|
-
def task_definition_error(e)
|
|
40
|
-
error_info = e.backtrace.first
|
|
41
|
-
path, line_no, _ = error_info.split(':')
|
|
42
|
-
line_no = line_no.to_i
|
|
43
|
-
puts "Error evaluating #{path}:".color(:red)
|
|
44
|
-
puts e.message
|
|
45
|
-
puts "Here's the line in #{path} with the error:\n\n"
|
|
46
|
-
|
|
47
|
-
contents = IO.read(path)
|
|
48
|
-
content_lines = contents.split("\n")
|
|
49
|
-
context = 5 # lines of context
|
|
50
|
-
top, bottom = [line_no-context-1, 0].max, line_no+context-1
|
|
51
|
-
spacing = content_lines.size.to_s.size
|
|
52
|
-
content_lines[top..bottom].each_with_index do |line_content, index|
|
|
53
|
-
line_number = top+index+1
|
|
54
|
-
if line_number == line_no
|
|
55
|
-
printf("%#{spacing}d %s\n".color(:red), line_number, line_content)
|
|
56
|
-
else
|
|
57
|
-
printf("%#{spacing}d %s\n", line_number, line_content)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def build_task_definitions
|
|
63
|
-
puts "Generating Task Definitions:" unless @options[:quiet]
|
|
64
|
-
clean_existing_task_definitions
|
|
65
|
-
@task_definitions.each do |task|
|
|
66
|
-
erb_result = task.build
|
|
67
|
-
@outputters << Outputter.new(task.task_definition_name, erb_result, @options)
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def clean_existing_task_definitions
|
|
72
|
-
# removing 1 file a a time instead of recursing removing the directory to be safe
|
|
73
|
-
Dir.glob("#{Ufo.root}/.ufo/output/*").each do |path|
|
|
74
|
-
FileUtils.rm_f(path)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def write_outputs
|
|
79
|
-
@outputters.each do |outputter|
|
|
80
|
-
outputter.write
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
# methods available in task_definitions
|
|
85
|
-
def task_definition(name, &block)
|
|
86
|
-
@task_definitions << TaskDefinition.new(self, name, @options, &block)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def helper
|
|
90
|
-
helper = Helper.new
|
|
91
|
-
helper.add_project_helpers
|
|
92
|
-
helper
|
|
93
|
-
end
|
|
94
|
-
memoize :helper
|
|
95
|
-
end
|
|
96
|
-
end
|
data/lib/ufo/help/apps.md
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
This command lists ECS services for an ECS cluster. It includes ECS services that were not created by ufo also. A `Ufo?` column value of `yes` indicates that the ECS service was created by ufo version 4 and above. If the service was created with ufo version 3 and below then it will show up as `no`.
|
|
2
|
-
|
|
3
|
-
## Examples
|
|
4
|
-
|
|
5
|
-
$ ufo apps
|
|
6
|
-
Listing ECS services in the development cluster.
|
|
7
|
-
+--------------------------------------------------+-----------------+---------+-------------+------+
|
|
8
|
-
| Service Name | Task Definition | Running | Launch type | Ufo? |
|
|
9
|
-
+--------------------------------------------------+-----------------+---------+-------------+------+
|
|
10
|
-
| development-demo-web-Ecs-7GAUAXH5F56M (demo-web) | demo-web:85 | 2 | FARGATE | yes |
|
|
11
|
-
+--------------------------------------------------+-----------------+---------+-------------+------+
|
|
12
|
-
$
|
data/lib/ufo/help/balancer.md
DELETED
data/lib/ufo/help/completions.md
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Provides completions words.
|
|
2
|
-
|
|
3
|
-
## Examples
|
|
4
|
-
|
|
5
|
-
ufo completions ship service --mute
|
|
6
|
-
|
|
7
|
-
Add this to your profile:
|
|
8
|
-
|
|
9
|
-
eval $(ufo completions-script)
|
|
10
|
-
|
|
11
|
-
Auto-completion example usage:
|
|
12
|
-
|
|
13
|
-
ufo ship [TAB]
|
|
14
|
-
ufo ship service [TAB]
|
|
15
|
-
ufo ship service --mute[TAB]
|
|
16
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
eval $(ufo completions_script)
|