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
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
class Ufo::CLI
|
|
2
|
+
class Scale < Base
|
|
3
|
+
delegate :service, :service?, :stack_resources, to: :info
|
|
4
|
+
|
|
5
|
+
def initialize(options={})
|
|
6
|
+
super
|
|
7
|
+
@desired = options[:desired]
|
|
8
|
+
@min = options[:min]
|
|
9
|
+
@max = options[:max]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def update
|
|
13
|
+
unless service?
|
|
14
|
+
logger.error "ERROR: Unable to find the #{service}.".color(:red)
|
|
15
|
+
logger.error "Are you sure you are trying to scale the right app?"
|
|
16
|
+
exit 1
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
unless @desired || @min || @max
|
|
20
|
+
logger.info <<~EOL
|
|
21
|
+
No --desired --min or --max options provided
|
|
22
|
+
Not taking any actions
|
|
23
|
+
EOL
|
|
24
|
+
return
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
logger.info "Configuring scaling settings for #{@stack_name}"
|
|
28
|
+
set_desired_count
|
|
29
|
+
set_autoscaling
|
|
30
|
+
warning
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def set_desired_count
|
|
34
|
+
return unless @desired
|
|
35
|
+
ecs.update_service(
|
|
36
|
+
service: service.service_name,
|
|
37
|
+
cluster: @cluster,
|
|
38
|
+
desired_count: @desired
|
|
39
|
+
)
|
|
40
|
+
logger.info "Configured desired count to #{@desired}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def set_autoscaling
|
|
44
|
+
return unless @min || @max
|
|
45
|
+
scalable_target = stack_resources.find do |r|
|
|
46
|
+
r.logical_resource_id == "ScalingTarget"
|
|
47
|
+
end
|
|
48
|
+
# service/dev/app1-web-dev-EcsService-Q0XkN6VtxGWv|ecs:service:DesiredCount|ecs
|
|
49
|
+
resource_id, scalable_dimension, service_namespace = scalable_target.physical_resource_id.split('|')
|
|
50
|
+
applicationautoscaling.register_scalable_target(
|
|
51
|
+
max_capacity: @max,
|
|
52
|
+
min_capacity: @min,
|
|
53
|
+
resource_id: resource_id,
|
|
54
|
+
scalable_dimension: scalable_dimension,
|
|
55
|
+
service_namespace: service_namespace,
|
|
56
|
+
)
|
|
57
|
+
logger.info "Configured autoscaling to min: #{@min} max: #{@max}"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def warning
|
|
61
|
+
return unless Ufo.config.scale.warning
|
|
62
|
+
logger.info <<~EOL
|
|
63
|
+
Note: The settings are temporary.
|
|
64
|
+
They can be overwritten in the next `ufo ship` deploy.
|
|
65
|
+
To make the settings permanent update your ufo config.
|
|
66
|
+
|
|
67
|
+
See: https://ufoships.com/docs/config/
|
|
68
|
+
|
|
69
|
+
You can also turn off this warning with
|
|
70
|
+
|
|
71
|
+
config.scaling.warning = false
|
|
72
|
+
|
|
73
|
+
EOL
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
data/lib/ufo/cli/ship.rb
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class Ufo::CLI
|
|
2
|
+
class Ship < Base
|
|
3
|
+
include Ufo::Concerns
|
|
4
|
+
|
|
5
|
+
def run
|
|
6
|
+
are_you_sure?
|
|
7
|
+
build_task_definition
|
|
8
|
+
deploy.run
|
|
9
|
+
ps.run
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def build_task_definition
|
|
13
|
+
return if @options[:rollback]
|
|
14
|
+
build.docker
|
|
15
|
+
build.task_definition
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
def are_you_sure?
|
|
20
|
+
message = "Will deploy stack #{@stack_name.color(:green)}"
|
|
21
|
+
if @options[:yes]
|
|
22
|
+
logger.info message
|
|
23
|
+
else
|
|
24
|
+
sure?(message)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
data/lib/ufo/cli/stop.rb
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
class Ufo::CLI
|
|
2
|
+
class Stop < Base
|
|
3
|
+
def run
|
|
4
|
+
service = info.service
|
|
5
|
+
return unless service # brand new deploy
|
|
6
|
+
|
|
7
|
+
@deployments = service.deployments
|
|
8
|
+
if @deployments.size >= 1
|
|
9
|
+
stop(service.service_name)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def stop(service_name)
|
|
14
|
+
tasks = service_tasks(service_name)
|
|
15
|
+
show(tasks, preview: true) unless @options[:yes]
|
|
16
|
+
sure?
|
|
17
|
+
tasks.each do |task|
|
|
18
|
+
if @options[:stop_old_tasks]
|
|
19
|
+
next if task["task_definition_arn"] == latest_deployed_arn
|
|
20
|
+
end
|
|
21
|
+
logger.debug "stop task #{task["task_arn"]}"
|
|
22
|
+
meth = "stop_task"
|
|
23
|
+
ecs.stop_task(cluster: @cluster, task: task["task_arn"], reason: "stop by ufo")
|
|
24
|
+
end
|
|
25
|
+
logger.info "Stopping tasks"
|
|
26
|
+
show(tasks, preview: false) if @options[:yes]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def show(tasks, preview: true)
|
|
30
|
+
logger.info "Will stop the following tasks:" if preview
|
|
31
|
+
ps = Ps.new(@options)
|
|
32
|
+
ps.display_tasks(tasks)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# latest deployment task definition arn
|
|
36
|
+
def latest_deployed_arn
|
|
37
|
+
latest = @deployments.sort_by do |deployment|
|
|
38
|
+
Time.parse(deployment["created_at"].to_s)
|
|
39
|
+
end.last
|
|
40
|
+
latest["task_definition"]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def service_tasks(service_name)
|
|
44
|
+
all_task_arns = ecs.list_tasks(cluster: @cluster, service_name: service_name).task_arns
|
|
45
|
+
return [] if all_task_arns.empty?
|
|
46
|
+
ecs.describe_tasks(cluster: @cluster, tasks: all_task_arns).tasks
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
data/lib/ufo/cli.rb
CHANGED
|
@@ -3,199 +3,123 @@ require 'ufo/command'
|
|
|
3
3
|
|
|
4
4
|
module Ufo
|
|
5
5
|
class CLI < Command
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class_option :noop, type: :boolean
|
|
9
|
-
class_option :cluster, desc: "Cluster. Overrides .ufo/settings.yml."
|
|
6
|
+
include Help
|
|
7
|
+
opts = Opts.new(self)
|
|
10
8
|
|
|
11
|
-
desc "
|
|
12
|
-
long_desc Help.text(:
|
|
13
|
-
subcommand "
|
|
9
|
+
desc "central SUBCOMMAND", "central subcommands"
|
|
10
|
+
long_desc Help.text(:central)
|
|
11
|
+
subcommand "central", Central
|
|
14
12
|
|
|
15
13
|
desc "docker SUBCOMMAND", "docker subcommands"
|
|
16
14
|
long_desc Help.text(:docker)
|
|
17
15
|
subcommand "docker", Docker
|
|
18
16
|
|
|
19
|
-
desc "
|
|
20
|
-
long_desc Help.text(:
|
|
21
|
-
subcommand "
|
|
22
|
-
|
|
23
|
-
desc "upgrade SUBCOMMAND", "upgrade subcommands"
|
|
24
|
-
long_desc Help.text(:upgrade)
|
|
25
|
-
subcommand "upgrade", Upgrade
|
|
26
|
-
|
|
27
|
-
long_desc Help.text(:init)
|
|
28
|
-
Init.cli_options.each do |args|
|
|
29
|
-
option(*args)
|
|
30
|
-
end
|
|
31
|
-
register(Init, "init", "init", "Set up initial ufo files.")
|
|
32
|
-
|
|
33
|
-
# common options to deploy. ship, and ships command
|
|
34
|
-
ship_options = Proc.new do
|
|
35
|
-
# All elb options remember their 'state'
|
|
36
|
-
option :ecr_keep, type: :numeric, desc: "ECR specific cleanup of old images. Specifies how many images to keep. Only runs if the images are ECR images. Defaults keeps all images."
|
|
37
|
-
option :elb, desc: "Decides to create elb, not create elb or use existing target group."
|
|
38
|
-
option :elb_eip_ids, type: :array, desc: "EIP Allocation ids to use for network load balancer."
|
|
39
|
-
option :elb_type, desc: "ELB type: application or network. Keep current deployed elb type when not specified."
|
|
40
|
-
option :scheduling_strategy, desc: "Scheduling strategy to use for the service. IE: replica, daemon"
|
|
41
|
-
option :stop_old_tasks, type: :boolean, default: false, desc: "Stop old tasks as part of deployment to speed it up"
|
|
42
|
-
option :task, desc: "ECS task name, to override the task name convention."
|
|
43
|
-
option :wait, type: :boolean, desc: "Wait for deployment to complete", default: true
|
|
44
|
-
option :image_override, desc: "Override image in task definition for quick testing"
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
desc "deploy SERVICE", "Deploy task definition to ECS service without re-building the definition."
|
|
48
|
-
long_desc Help.text(:deploy)
|
|
49
|
-
ship_options.call
|
|
50
|
-
option :register, type: :boolean, desc: "Register task definition", default: true
|
|
51
|
-
option :build, type: :boolean, desc: "Build task definition", default: true
|
|
52
|
-
def deploy(service=:current)
|
|
53
|
-
service = service == :current ? Current.service! : service
|
|
54
|
-
task_definition = options[:task] || service # convention
|
|
55
|
-
Tasks::Builder.build(options) if options[:build]
|
|
56
|
-
Tasks::Register.register(task_definition, options) if options[:register]
|
|
57
|
-
ship = Ship.new(service, options.merge(task_definition: task_definition))
|
|
58
|
-
ship.deploy
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
desc "ship SERVICE", "Builds and ships container image to the ECS service."
|
|
62
|
-
long_desc Help.text(:ship)
|
|
63
|
-
ship_options.call
|
|
64
|
-
def ship(service=:current)
|
|
65
|
-
service = service == :current ? Current.service! : service
|
|
66
|
-
builder = build_docker
|
|
67
|
-
|
|
68
|
-
task_definition = options[:task] || service # convention
|
|
69
|
-
Tasks::Builder.ship(task_definition, options)
|
|
70
|
-
ship = Ship.new(service, options.merge(task_definition: task_definition))
|
|
71
|
-
ship.deploy
|
|
17
|
+
desc "new SUBCOMMAND", "new subcommands"
|
|
18
|
+
long_desc Help.text(:new)
|
|
19
|
+
subcommand "new", New
|
|
72
20
|
|
|
73
|
-
|
|
21
|
+
desc "build", "Build docker image, task definition, cloudformation template"
|
|
22
|
+
long_desc Help.text(:build)
|
|
23
|
+
opts.docker
|
|
24
|
+
def build
|
|
25
|
+
Build.new(options).build
|
|
74
26
|
end
|
|
75
27
|
|
|
76
|
-
desc "
|
|
77
|
-
long_desc Help.text(:rollback)
|
|
78
|
-
option :wait, type: :boolean, desc: "Wait for deployment to complete", default: true
|
|
79
|
-
def rollback(service=:current, version)
|
|
80
|
-
service = service == :current ? Current.service! : service
|
|
81
|
-
rollback = Rollback.new(service, options.merge(version: version))
|
|
82
|
-
rollback.deploy
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
desc "ships [LIST_OF_SERVICES]", "Builds and ships same container image to multiple ECS services."
|
|
86
|
-
long_desc Help.text(:ships)
|
|
87
|
-
ship_options.call
|
|
88
|
-
option :wait, type: :boolean, desc: "Wait for deployment to complete", default: false
|
|
89
|
-
def ships(*services)
|
|
90
|
-
builder = build_docker
|
|
91
|
-
|
|
92
|
-
if services.empty? && !Current.services&.empty?
|
|
93
|
-
services = Current.services
|
|
94
|
-
end
|
|
95
|
-
services.each_with_index do |service|
|
|
96
|
-
service_name, task_definition_name = service.split(':')
|
|
97
|
-
task_definition = task_definition_name || service_name # convention
|
|
98
|
-
Tasks::Builder.ship(task_definition, options)
|
|
99
|
-
ship = Ship.new(service, options.merge(task_definition: task_definition))
|
|
100
|
-
ship.deploy
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
cleanup(builder.image_name)
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
desc "task TASK_DEFINITION", "Run a one-time task."
|
|
107
|
-
long_desc Help.text(:task)
|
|
108
|
-
option :task_only, type: :boolean, desc: "Skip docker and task register steps. Only run the task."
|
|
109
|
-
option :wait, type: :boolean, aliases: 'w', desc: "Wait for task to finish.", default: false
|
|
110
|
-
option :timeout, type: :numeric, aliases: 't', desc: "How long to wait for task to finish.", default: 600
|
|
111
|
-
option :command, type: :array, aliases: 'c', desc: "Override the command used for the container"
|
|
112
|
-
def task(task_definition)
|
|
113
|
-
Docker::Builder.build(options) unless @options[:task_only]
|
|
114
|
-
Tasks::Builder.ship(task_definition, options) unless @options[:task_only]
|
|
115
|
-
Task.new(task_definition, options).run
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
desc "cancel SERVICE", "Cancel creation or update of the ECS service."
|
|
28
|
+
desc "cancel", "Cancel creation or update of the ECS service."
|
|
119
29
|
long_desc Help.text(:cancel)
|
|
120
|
-
option :
|
|
121
|
-
def cancel
|
|
122
|
-
|
|
123
|
-
Cancel.new(service, options).run
|
|
30
|
+
option :yes, aliases: :y, type: :boolean, desc: "By pass are you sure prompt."
|
|
31
|
+
def cancel
|
|
32
|
+
Cancel.new(options).run
|
|
124
33
|
end
|
|
125
34
|
|
|
126
|
-
desc "
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
option :services, type: :array, desc: "Sets services as a current setting. This is used for ufo ships."
|
|
131
|
-
option :env_extra, desc: "Sets UFO_ENV_EXTRA as a current setting."
|
|
132
|
-
def current
|
|
133
|
-
Current.new(options).run
|
|
35
|
+
desc "clean", "Removes `.ufo/output` folders"
|
|
36
|
+
opts.yes
|
|
37
|
+
def clean
|
|
38
|
+
Clean.new(options).run
|
|
134
39
|
end
|
|
135
40
|
|
|
136
|
-
desc "destroy
|
|
41
|
+
desc "destroy", "Destroy the ECS service."
|
|
137
42
|
long_desc Help.text(:destroy)
|
|
138
|
-
option :
|
|
43
|
+
option :yes, aliases: :y, type: :boolean, desc: "By pass are you sure prompt."
|
|
139
44
|
option :wait, type: :boolean, desc: "Wait for completion", default: true
|
|
140
|
-
def destroy
|
|
141
|
-
|
|
142
|
-
Destroy.new(service, options).bye
|
|
45
|
+
def destroy
|
|
46
|
+
Destroy.new(options).run
|
|
143
47
|
end
|
|
144
48
|
|
|
145
|
-
desc "
|
|
146
|
-
long_desc Help.text(:
|
|
147
|
-
option :
|
|
148
|
-
|
|
149
|
-
|
|
49
|
+
desc "exec", "Exec into container"
|
|
50
|
+
long_desc Help.text(:exec)
|
|
51
|
+
option :container, desc: "Container name to exec into. Default to role or first found"
|
|
52
|
+
option :command, aliases: :c, desc: "Command to run. Default is configured config.exec.command option"
|
|
53
|
+
def exec
|
|
54
|
+
Exec.new(options).run
|
|
150
55
|
end
|
|
151
56
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
57
|
+
long_desc Help.text("init")
|
|
58
|
+
New::Init.options.each { |args| option(*args) }
|
|
59
|
+
register(New::Init, "init", "init", "Generate starter .ufo structure")
|
|
60
|
+
|
|
61
|
+
desc "logs", "Prints out logs"
|
|
62
|
+
long_desc Help.text(:logs)
|
|
63
|
+
option :follow, default: true, type: :boolean, desc: " Whether to continuously poll for new logs. To exit from this mode, use Control-C."
|
|
64
|
+
option :since, desc: "From what time to begin displaying logs. By default, logs will be displayed starting from 1 minutes in the past. The value provided can be an ISO 8601 timestamp or a relative time."
|
|
65
|
+
option :format, default: "short", desc: "The format to display the logs. IE: detailed or short. With detailed, the log stream name is also shown."
|
|
66
|
+
option :filter_pattern, desc: "The filter pattern to use. If not provided, all the events are matched"
|
|
67
|
+
def logs
|
|
68
|
+
Logs.new(options).run
|
|
156
69
|
end
|
|
157
70
|
|
|
158
|
-
desc "
|
|
159
|
-
long_desc Help.text(:
|
|
160
|
-
def
|
|
161
|
-
|
|
71
|
+
desc "releases", "Show possible 'releases' or task definitions for the service."
|
|
72
|
+
long_desc Help.text(:releases)
|
|
73
|
+
def releases
|
|
74
|
+
Releases.new(options).list
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
desc "rollback VERSION", "Rolls back to older task definition."
|
|
78
|
+
long_desc Help.text(:rollback)
|
|
79
|
+
option :wait, type: :boolean, desc: "Wait for deployment to complete", default: true
|
|
80
|
+
def rollback(version)
|
|
81
|
+
Rollback.new(options.merge(version: version)).deploy
|
|
162
82
|
end
|
|
163
83
|
|
|
164
|
-
desc "ps
|
|
84
|
+
desc "ps", "Show process info on ECS service."
|
|
165
85
|
long_desc Help.text(:ps)
|
|
166
|
-
option :summary, type: :boolean, default: true, desc: "Display summary header info."
|
|
167
|
-
option :extra, type: :boolean, default: false, desc: "Display extra debugging columns."
|
|
168
86
|
option :status, default: "all", desc: "Status filter: all, pending, stopped, running."
|
|
169
|
-
|
|
170
|
-
|
|
87
|
+
# not setting format default so we can use Ufo.config.ps.format and dont want to trigger a config load this early
|
|
88
|
+
option :format, desc: "Output formats: #{CliFormat.formats.join(', ')}"
|
|
89
|
+
def ps
|
|
90
|
+
Ps.new(options).run
|
|
171
91
|
end
|
|
172
92
|
|
|
173
|
-
desc "
|
|
174
|
-
long_desc Help.text(:
|
|
175
|
-
|
|
176
|
-
|
|
93
|
+
desc "scale", "Scale the ECS service"
|
|
94
|
+
long_desc Help.text(:scale)
|
|
95
|
+
option :desired, type: :numeric, desc: "Desired count"
|
|
96
|
+
option :min, type: :numeric, desc: "Minimum capacity"
|
|
97
|
+
option :max, type: :numeric, desc: "Maximum capacity"
|
|
98
|
+
def scale
|
|
99
|
+
Scale.new(options).update
|
|
177
100
|
end
|
|
178
101
|
|
|
179
|
-
desc "
|
|
180
|
-
long_desc Help.text(:
|
|
181
|
-
|
|
182
|
-
|
|
102
|
+
desc "ship", "Deploy app to ECS"
|
|
103
|
+
long_desc Help.text(:ship)
|
|
104
|
+
option :wait, type: :boolean, desc: "Wait for deployment to complete", default: true
|
|
105
|
+
option :image, aliases: :i, desc: "Override image in task definition for quick testing"
|
|
106
|
+
opts.docker
|
|
107
|
+
opts.yes
|
|
108
|
+
def ship
|
|
109
|
+
Ship.new(options).run
|
|
183
110
|
end
|
|
184
111
|
|
|
185
|
-
desc "status
|
|
112
|
+
desc "status", "Status of ECS service. Essentially, status of CloudFormation stack"
|
|
186
113
|
long_desc Help.text(:status)
|
|
187
|
-
def status
|
|
188
|
-
Status.new(
|
|
114
|
+
def status
|
|
115
|
+
Status.new(options).run
|
|
189
116
|
end
|
|
190
117
|
|
|
191
|
-
desc "
|
|
192
|
-
long_desc Help.text(:
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
option :filter_pattern, desc: "The filter pattern to use. If not provided, all the events are matched"
|
|
197
|
-
def logs(service=:current)
|
|
198
|
-
Logs.new(service, options).run
|
|
118
|
+
desc "stop", "Stop tasks"
|
|
119
|
+
long_desc Help.text(:stop)
|
|
120
|
+
opts.yes
|
|
121
|
+
def stop
|
|
122
|
+
Stop.new(options).run
|
|
199
123
|
end
|
|
200
124
|
|
|
201
125
|
desc "completion *PARAMS", "Prints words for auto-completion."
|
|
@@ -214,19 +138,5 @@ module Ufo
|
|
|
214
138
|
def version
|
|
215
139
|
puts VERSION
|
|
216
140
|
end
|
|
217
|
-
|
|
218
|
-
no_tasks do
|
|
219
|
-
def build_docker
|
|
220
|
-
builder = Docker::Builder.new(options)
|
|
221
|
-
builder.build
|
|
222
|
-
builder.push
|
|
223
|
-
builder
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
def cleanup(image_name)
|
|
227
|
-
Docker::Cleaner.new(image_name, options).cleanup
|
|
228
|
-
Ecr::Cleaner.new(image_name, options).cleanup
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
141
|
end
|
|
232
142
|
end
|
data/lib/ufo/command.rb
CHANGED
|
@@ -11,12 +11,36 @@ class Thor
|
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
|
+
|
|
15
|
+
module Util
|
|
16
|
+
# Hack to fix issue when -h produces extra ufo command in help. IE:
|
|
17
|
+
#
|
|
18
|
+
# $ bundle exec ufo blueprint -h
|
|
19
|
+
# Commands:
|
|
20
|
+
# ...
|
|
21
|
+
# ufo ufo:blueprint:new BLUEPRINT_NAME <= weird
|
|
22
|
+
#
|
|
23
|
+
# It looks like thor_classes_in is only used to generate the help menu.
|
|
24
|
+
#
|
|
25
|
+
def self.thor_classes_in(*)
|
|
26
|
+
[]
|
|
27
|
+
end
|
|
28
|
+
end
|
|
14
29
|
end
|
|
15
30
|
|
|
16
31
|
module Ufo
|
|
17
32
|
class Command < Thor
|
|
18
33
|
class << self
|
|
34
|
+
include Ufo::Utils::Logging
|
|
35
|
+
|
|
19
36
|
def dispatch(m, args, options, config)
|
|
37
|
+
# Old note: Configuring the DslEvalulator requires Ufo.root and Ufo.logger which
|
|
38
|
+
# loads Ufo.config and Ufo::Config#load_project_config
|
|
39
|
+
# This requires Ufo.role.
|
|
40
|
+
# So we set Ufo.role before triggering Ufo.config loading
|
|
41
|
+
configure_dsl_evaluator
|
|
42
|
+
check_project!(args)
|
|
43
|
+
|
|
20
44
|
# Allow calling for help via:
|
|
21
45
|
# ufo command help
|
|
22
46
|
# ufo command -h
|
|
@@ -26,7 +50,6 @@ module Ufo
|
|
|
26
50
|
# as well thor's normal way:
|
|
27
51
|
#
|
|
28
52
|
# ufo help command
|
|
29
|
-
help_flags = Thor::HELP_MAPPINGS + ["help"]
|
|
30
53
|
if args.length > 1 && !(args & help_flags).empty?
|
|
31
54
|
args -= help_flags
|
|
32
55
|
args.insert(-2, "help")
|
|
@@ -43,6 +66,38 @@ module Ufo
|
|
|
43
66
|
super
|
|
44
67
|
end
|
|
45
68
|
|
|
69
|
+
# Uses Ufo.logger and Ufo.root which loads Ufo.config.
|
|
70
|
+
# See comment where configure_dsl_evaluator is used about Ufo.role
|
|
71
|
+
def configure_dsl_evaluator
|
|
72
|
+
DslEvaluator.configure do |config|
|
|
73
|
+
config.backtrace.select_pattern = Ufo.root.to_s
|
|
74
|
+
config.logger = Ufo.logger
|
|
75
|
+
config.on_exception = :exit
|
|
76
|
+
config.root = Ufo.root
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def help_flags
|
|
81
|
+
Thor::HELP_MAPPINGS + ["help"]
|
|
82
|
+
end
|
|
83
|
+
private :help_flags
|
|
84
|
+
|
|
85
|
+
def subcommand?
|
|
86
|
+
!!caller.detect { |l| l.include?('in subcommand') }
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def check_project!(args)
|
|
90
|
+
command_name = args.first
|
|
91
|
+
return if subcommand?
|
|
92
|
+
return if command_name.nil?
|
|
93
|
+
return if help_flags.include?(args.last) # IE: -h help
|
|
94
|
+
return if %w[-h -v --version central init version].include?(command_name)
|
|
95
|
+
return if File.exist?("#{Ufo.root}/.ufo")
|
|
96
|
+
|
|
97
|
+
logger.error "ERROR: It doesnt look like this is a ufo project. Are you sure you are in a ufo project?".color(:red)
|
|
98
|
+
ENV['UFO_TEST'] ? raise : exit(1)
|
|
99
|
+
end
|
|
100
|
+
|
|
46
101
|
# Override command_help to include the description at the top of the
|
|
47
102
|
# long_description.
|
|
48
103
|
def command_help(shell, command_name)
|
data/lib/ufo/concerns.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Ufo
|
|
2
|
+
module Concerns
|
|
3
|
+
extend Memoist
|
|
4
|
+
include Names
|
|
5
|
+
|
|
6
|
+
def build
|
|
7
|
+
Ufo::CLI::Build.new(@options)
|
|
8
|
+
end
|
|
9
|
+
memoize :build
|
|
10
|
+
|
|
11
|
+
def deploy
|
|
12
|
+
Ufo::Cfn::Deploy.new(@options)
|
|
13
|
+
end
|
|
14
|
+
memoize :deploy
|
|
15
|
+
|
|
16
|
+
def info
|
|
17
|
+
Ufo::Info.new(@options)
|
|
18
|
+
end
|
|
19
|
+
memoize :info
|
|
20
|
+
|
|
21
|
+
def ps
|
|
22
|
+
Ufo::CLI::Ps.new(@options)
|
|
23
|
+
end
|
|
24
|
+
memoize :ps
|
|
25
|
+
end
|
|
26
|
+
end
|