ufo 5.0.7 → 6.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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 +15 -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 +31 -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} +24 -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 +170 -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 +87 -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/cli/ps/errors.rb +132 -0
- data/lib/ufo/{ps → cli/ps}/task.rb +32 -34
- data/lib/ufo/cli/ps.rb +164 -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 +83 -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 +83 -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 +190 -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 +23 -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 +25 -0
- data/lib/ufo/task_definition/erb.rb +83 -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 +245 -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)
|