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
@@ -0,0 +1,87 @@
|
|
1
|
+
class Ufo::CLI::Central
|
2
|
+
class Update
|
3
|
+
include Ufo::Utils::Logging
|
4
|
+
include Ufo::Utils::Execute
|
5
|
+
include Ufo::Utils::Sure
|
6
|
+
|
7
|
+
def initialize(options={})
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
validate!
|
13
|
+
action = File.exist?(".ufo") ? "update" : "create"
|
14
|
+
sure?("Will #{action} the .ufo symlink") # IE: Will create the .ufo symlink
|
15
|
+
logger.info "Updating .ufo with #{repo}"
|
16
|
+
FileUtils.mkdir_p(tmp_area)
|
17
|
+
pull
|
18
|
+
symlink
|
19
|
+
check_gitignore
|
20
|
+
end
|
21
|
+
|
22
|
+
def pull
|
23
|
+
logger.debug "Within #{tmp_area}"
|
24
|
+
Dir.chdir(tmp_area) do
|
25
|
+
if File.exist?(repo_name)
|
26
|
+
execute "cd #{repo_name} && git pull"
|
27
|
+
else
|
28
|
+
execute "git clone #{repo}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Always update the symlink in case use changes UFO_CENTRAL_REPO
|
34
|
+
def symlink
|
35
|
+
src = "#{tmp_area}/#{repo_name}"
|
36
|
+
src += "/#{folder}" if folder
|
37
|
+
|
38
|
+
FileUtils.mv(".ufo", ".ufo.bak") if File.exist?(".ufo") && File.directory?(".ufo")
|
39
|
+
|
40
|
+
# FileUtils.ln_s(target, link, options)
|
41
|
+
# ~/.ufo/central/repo -> .ufo
|
42
|
+
FileUtils.ln_s(src, ".ufo", verbose: true)
|
43
|
+
FileUtils.rm_rf(".ufo.bak")
|
44
|
+
|
45
|
+
logger.info "The .ufo symlink has been updated"
|
46
|
+
end
|
47
|
+
|
48
|
+
def validate!
|
49
|
+
return if repo
|
50
|
+
logger.info "ERROR: Please set the env var: UFO_CENTRAL_REPO".color(:red)
|
51
|
+
logger.info "The ufo central update command requires it."
|
52
|
+
exit 1
|
53
|
+
end
|
54
|
+
|
55
|
+
def repo_name
|
56
|
+
File.basename(repo)
|
57
|
+
end
|
58
|
+
|
59
|
+
def repo
|
60
|
+
ENV['UFO_CENTRAL_REPO']
|
61
|
+
end
|
62
|
+
|
63
|
+
def folder
|
64
|
+
ENV['UFO_CENTRAL_FOLDER']
|
65
|
+
end
|
66
|
+
|
67
|
+
def tmp_area
|
68
|
+
"#{ENV['HOME']}/.ufo/central"
|
69
|
+
end
|
70
|
+
|
71
|
+
def check_gitignore
|
72
|
+
ok = false
|
73
|
+
if File.exist?('.gitignore')
|
74
|
+
lines = IO.readlines('.gitignore')
|
75
|
+
ok = lines.detect do |line|
|
76
|
+
line =~ %r{/?.ufo/?$}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
return if ok
|
80
|
+
logger.info "No .ufo found in your .gitignore file".color(:yellow)
|
81
|
+
logger.info <<~EOL
|
82
|
+
It's recommended to add .ufo to the .gitignore
|
83
|
+
When using ufo in a central fashion
|
84
|
+
EOL
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
|
3
|
+
class Ufo::CLI
|
4
|
+
class Clean < Base
|
5
|
+
def run
|
6
|
+
folders = %w[log output tmp]
|
7
|
+
folders = folders.map do |folder|
|
8
|
+
".ufo/#{folder}"
|
9
|
+
end
|
10
|
+
sure?("Will remove folders: #{folders.join(' ')}")
|
11
|
+
folders.each do |folder|
|
12
|
+
FileUtils.rm_rf("#{Ufo.root}/#{folder}")
|
13
|
+
end
|
14
|
+
logger.info "Removed folders: #{folders.join(' ')}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class Ufo::CLI
|
2
|
+
class Destroy < Base
|
3
|
+
def run
|
4
|
+
are_you_sure?
|
5
|
+
|
6
|
+
stack = find_stack(@stack_name)
|
7
|
+
unless stack
|
8
|
+
puts "Stack #{@stack_name.color(:green)} does not exist."
|
9
|
+
exit 1
|
10
|
+
end
|
11
|
+
|
12
|
+
if stack.stack_status =~ /_IN_PROGRESS$/
|
13
|
+
puts "Cannot destroy service #{@service.color(:green)}"
|
14
|
+
puts "Cannot delete stack #{@stack_name.color(:green)} in this state: #{stack.stack_status.color(:green)}"
|
15
|
+
puts "If the stack is taking a long time, you can cancel the current operation with:"
|
16
|
+
puts " ufo cancel #{@service}"
|
17
|
+
return
|
18
|
+
end
|
19
|
+
|
20
|
+
cloudformation.delete_stack(stack_name: @stack_name)
|
21
|
+
puts "Deleting stack #{@stack_name.color(:green)}"
|
22
|
+
|
23
|
+
return unless @options[:wait]
|
24
|
+
status.wait
|
25
|
+
end
|
26
|
+
|
27
|
+
def are_you_sure?
|
28
|
+
sure?("You are about to destroy the #{@stack_name.color(:green)} stack")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -1,57 +1,57 @@
|
|
1
|
-
|
2
|
-
class Docker < Command
|
1
|
+
class Ufo::CLI
|
2
|
+
class Docker < Ufo::Command
|
3
3
|
desc "build", "Build docker image."
|
4
|
-
long_desc Help.text("docker
|
4
|
+
long_desc Help.text("docker/build")
|
5
5
|
option :push, type: :boolean, default: false
|
6
6
|
def build
|
7
|
-
builder = Docker::Builder.new(options)
|
7
|
+
builder = Ufo::Docker::Builder.new(options)
|
8
8
|
builder.build
|
9
9
|
push if options[:push]
|
10
10
|
end
|
11
11
|
|
12
12
|
desc "compile", "Compile Dockerfile.erb"
|
13
|
-
long_desc Help.text("docker
|
13
|
+
long_desc Help.text("docker/compile")
|
14
14
|
def compile
|
15
|
-
builder = Docker::Builder.new(options)
|
15
|
+
builder = Ufo::Docker::Builder.new(options)
|
16
16
|
builder.compile
|
17
17
|
end
|
18
18
|
|
19
19
|
desc "push IMAGE", "Push the docker image."
|
20
|
-
long_desc Help.text("docker
|
20
|
+
long_desc Help.text("docker/push")
|
21
21
|
option :push, type: :boolean, default: false
|
22
|
-
def push(
|
23
|
-
#
|
24
|
-
pusher = Docker::Pusher.new(
|
22
|
+
def push(docker_image=nil)
|
23
|
+
# docker_image of nil results in defaulting to the last built image by ufo docker build
|
24
|
+
pusher = Ufo::Docker::Pusher.new(docker_image, options)
|
25
25
|
pusher.push
|
26
26
|
end
|
27
27
|
|
28
28
|
desc "base", "Build docker image from `Dockerfile.base` and update current `Dockerfile`."
|
29
|
-
long_desc Help.text("docker
|
29
|
+
long_desc Help.text("docker/base")
|
30
30
|
option :push, type: :boolean, default: true
|
31
31
|
def base
|
32
|
-
builder = Docker::Builder.new(options.dup.merge(
|
32
|
+
builder = Ufo::Docker::Builder.new(options.dup.merge(
|
33
33
|
image_namespace: "base",
|
34
34
|
dockerfile: "Dockerfile.base"
|
35
35
|
))
|
36
36
|
builder.build
|
37
37
|
builder.push if options[:push]
|
38
38
|
builder.update_dockerfile
|
39
|
-
Docker::Cleaner.new(builder.image_name, options.merge(tag_prefix: "base")).cleanup
|
40
|
-
Ecr::Cleaner.new(builder.image_name, options.merge(tag_prefix: "base")).cleanup
|
39
|
+
Ufo::Docker::Cleaner.new(builder.image_name, options.merge(tag_prefix: "base")).cleanup
|
40
|
+
Ufo::Ecr::Cleaner.new(builder.image_name, options.merge(tag_prefix: "base")).cleanup
|
41
41
|
end
|
42
42
|
|
43
43
|
desc "name", "Display the full docker image with tag that was last generated."
|
44
44
|
option :generate, type: :boolean, default: false, desc: "Generate a name without storing it"
|
45
|
-
long_desc Help.text("docker
|
45
|
+
long_desc Help.text("docker/name")
|
46
46
|
def name
|
47
|
-
|
48
|
-
puts
|
47
|
+
docker_image = Ufo::Docker::Builder.new(options).docker_image
|
48
|
+
puts docker_image
|
49
49
|
end
|
50
50
|
|
51
51
|
desc "clean IMAGE_NAME", "Clean up old images. Keeps a specified amount."
|
52
52
|
option :keep, type: :numeric, default: 3
|
53
53
|
option :tag_prefix, default: "ufo"
|
54
|
-
long_desc Help.text("docker
|
54
|
+
long_desc Help.text("docker/clean")
|
55
55
|
def clean(image_name)
|
56
56
|
Docker::Cleaner.new(image_name, options).cleanup
|
57
57
|
end
|
data/lib/ufo/cli/exec.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
class Ufo::CLI
|
2
|
+
class Exec < Base
|
3
|
+
def run
|
4
|
+
check_install!
|
5
|
+
service = info.service
|
6
|
+
return unless service # brand new deploy
|
7
|
+
|
8
|
+
running = service_tasks.select do |task|
|
9
|
+
task.last_status == "RUNNING"
|
10
|
+
end
|
11
|
+
if running.empty?
|
12
|
+
logger.info "No running tasks found to exec into"
|
13
|
+
return
|
14
|
+
end
|
15
|
+
|
16
|
+
tasks = running.sort_by { |t| t.started_at }
|
17
|
+
task = tasks.last # most recent
|
18
|
+
|
19
|
+
task_name = task.task_arn.split('/').last
|
20
|
+
execute_command(
|
21
|
+
cluster: "#{@cluster}",
|
22
|
+
task: task_name,
|
23
|
+
container: container(task), # only required if multiple containers in a task
|
24
|
+
interactive: true,
|
25
|
+
command: command
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
def container(task)
|
30
|
+
return @options[:container] if @options[:container]
|
31
|
+
containers = task.containers
|
32
|
+
container = containers.find do |c|
|
33
|
+
c.name == @options[:role]
|
34
|
+
end
|
35
|
+
container ||= containers.first # assume first task if not roles match
|
36
|
+
container.name if container
|
37
|
+
end
|
38
|
+
|
39
|
+
def execute_command(options={})
|
40
|
+
args = options.inject('') do |args, (k,v)|
|
41
|
+
arg = k == :interactive ? "--#{k}" : "--#{k} #{v}"
|
42
|
+
args += " #{arg}"
|
43
|
+
end
|
44
|
+
sh "aws ecs execute-command#{args}"
|
45
|
+
end
|
46
|
+
|
47
|
+
def service_tasks
|
48
|
+
service_name = info.service.service_name
|
49
|
+
all_task_arns = ecs.list_tasks(cluster: @cluster, service_name: service_name).task_arns
|
50
|
+
return [] if all_task_arns.empty?
|
51
|
+
ecs.describe_tasks(cluster: @cluster, tasks: all_task_arns).tasks
|
52
|
+
end
|
53
|
+
|
54
|
+
def sh(command)
|
55
|
+
puts "=> #{command}"
|
56
|
+
Kernel.exec command
|
57
|
+
end
|
58
|
+
|
59
|
+
def command
|
60
|
+
@options[:command] || Ufo.config.exec.command
|
61
|
+
end
|
62
|
+
|
63
|
+
def check_install!
|
64
|
+
check_session_manager_plugin!
|
65
|
+
check_aws_cli!
|
66
|
+
end
|
67
|
+
|
68
|
+
def check_session_manager_plugin!
|
69
|
+
installed = system "type session-manager-plugin > /dev/null 2>&1"
|
70
|
+
return if installed
|
71
|
+
logger.error "ERROR: The Session Manager plugin required to use ufo exec".color(:red)
|
72
|
+
exit 1
|
73
|
+
end
|
74
|
+
|
75
|
+
def check_aws_cli!
|
76
|
+
installed = system "type aws > /dev/null 2>&1"
|
77
|
+
return if installed
|
78
|
+
logger.error "ERROR: aws cli is required to use ufo exec".color(:red)
|
79
|
+
exit 1
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
The `UFO_CENTRAL_REPO` env var is required to use `ufo central update`.
|
2
|
+
|
3
|
+
## Example
|
4
|
+
|
5
|
+
$ export UFO_CENTRAL_REPO=git@github.com:org/repo
|
6
|
+
$ ufo central update
|
7
|
+
Will create the .ufo folder.
|
8
|
+
Are you sure? (y/N) y
|
9
|
+
Updating .ufo with git@github.com:org/repo
|
10
|
+
=> git clone git@github.com:org/repo
|
11
|
+
The .ufo folder has been updated
|
12
|
+
$
|
13
|
+
|
14
|
+
## Subfolders
|
15
|
+
|
16
|
+
If the ufo folder is within a subfolder.
|
17
|
+
|
18
|
+
export UFO_CENTRAL_FOLDER=subfolder
|
19
|
+
|
20
|
+
This will copy over the subfolder within the repo.
|
File without changes
|
File without changes
|
@@ -0,0 +1,39 @@
|
|
1
|
+
The docker cache task builds a docker image using the `Dockerfile.base` file and
|
2
|
+
updates the FROM `Dockerfile` image with the generated image from `Dockerfile.base`.
|
3
|
+
|
4
|
+
## Summarized Example
|
5
|
+
|
6
|
+
ufo docker base
|
7
|
+
ufo docker base --no-push # do not push the image to the registry
|
8
|
+
|
9
|
+
Docker image `org/repo:base-2016-10-21T15-50-57-88071f5` built.
|
10
|
+
|
11
|
+
## Detailed Example
|
12
|
+
|
13
|
+
Let's see the command in action:
|
14
|
+
|
15
|
+
$ ufo docker base
|
16
|
+
Building docker image with:
|
17
|
+
docker build -t org/repo:base-2017-06-12T14-36-44-2af505e -f Dockerfile.base .
|
18
|
+
...
|
19
|
+
Pushed org/repo:base-2017-06-12T14-36-44-2af505e docker image. Took 28s.
|
20
|
+
The Dockerfile FROM statement has been updated with the latest base image:
|
21
|
+
org/repo:base-2017-06-12T14-36-44-2af505e
|
22
|
+
|
23
|
+
Some of the output has been excluded so we can focus on the essential parts to point out. First, notice that the command simply shells out to the docker command and calls:
|
24
|
+
|
25
|
+
docker build -t org/repo:base-2017-06-12T14-36-44-2af505e -f Dockerfile.base .
|
26
|
+
|
27
|
+
It uses the docker `-f Dockerfile.base` option to build the base image. It names the image with `org/repo:base-2017-06-12T14-36-44-2af505e`. The image tag contains useful information: the timestamp and exact git sha of the code. The image gets pushed to a registry immediately.
|
28
|
+
|
29
|
+
## Dockerfile FROM updated
|
30
|
+
|
31
|
+
Notice at the very end, the *current* `Dockerfile`'s FROM statement has been updated with the newly built base Docker image automatically. This saves you from forgetting to copy and paste it the `Dockerfile` yourself.
|
32
|
+
|
33
|
+
If you're using a [Dockerfile.erb](https://ufoships.com/docs/extras/dockerfile-erb/), then ufo will update the `.ufo/state/data.yml` file instead. It assumes you're using a `Dockerfile.erb` that looks something like this:
|
34
|
+
|
35
|
+
```Dockerfile
|
36
|
+
FROM <%= @base_image %>
|
37
|
+
# ...
|
38
|
+
CMD ["bin/web"]
|
39
|
+
```
|
@@ -1,16 +1,16 @@
|
|
1
|
-
The `ufo docker build` builds a Docker image using the Dockerfile in the current project folder. This simply is a wrapper command that shells out and calls the `docker` command. We're use the [
|
1
|
+
The `ufo docker build` builds a Docker image using the Dockerfile in the current project folder. This simply is a wrapper command that shells out and calls the `docker` command. We're use the [org/repo](https://github.com/org/repo) project and it's Dockerfile for demonstration. Example:
|
2
2
|
|
3
3
|
ufo docker build
|
4
4
|
|
5
5
|
You'll see that it calls:
|
6
6
|
|
7
|
-
docker build -t
|
7
|
+
docker build -t org/repo:ufo-2017-06-11T22-18-03-a18aa30 -f Dockerfile .
|
8
8
|
|
9
9
|
You should see similar output (some of the output has been truncated for conciseness):
|
10
10
|
|
11
11
|
$ ufo docker build
|
12
12
|
Building docker image with:
|
13
|
-
docker build -t
|
13
|
+
docker build -t org/repo:ufo-2017-06-11T22-18-03-a18aa30 -f Dockerfile .
|
14
14
|
Sending build context to Docker daemon 734.2 kB
|
15
15
|
Step 1 : FROM ruby:2.3.3
|
16
16
|
---> 0e1db669d557
|
@@ -37,7 +37,7 @@ You should see similar output (some of the output has been truncated for concise
|
|
37
37
|
---> 8547bb48b21f
|
38
38
|
Removing intermediate container b1b26e68d957
|
39
39
|
Successfully built 8547bb48b21f
|
40
|
-
Docker image
|
40
|
+
Docker image org/repo:ufo-2017-06-11T22-18-03-a18aa30 built. Took 33s.
|
41
41
|
$
|
42
42
|
|
43
43
|
The docker image tag that is generated contains a useful timestamp and the current HEAD git sha of the project that you are on.
|
@@ -48,14 +48,14 @@ By default when you are running `ufo docker build` directly it does not push the
|
|
48
48
|
|
49
49
|
You should see it being pushed at the end:
|
50
50
|
|
51
|
-
Docker image
|
52
|
-
The push refers to a repository [docker.io/
|
51
|
+
Docker image org/repo:ufo-2017-06-11T22-22-32-a18aa30 built. Took 34s.
|
52
|
+
The push refers to a repository [docker.io/org/repo]
|
53
53
|
ef375857f165: Pushed
|
54
54
|
4d791d7cde66: Pushed
|
55
55
|
277ff31e79b4: Layer already exists
|
56
56
|
a361a4de05df: Layer already exists
|
57
57
|
ufo-2017-06-11T22-22-32-a18aa30: digest: sha256:c5385a5084e87643bd943eb120e110321c59e8acd30736ba7b5223eb1143baa8 size: 3464
|
58
|
-
Pushed
|
58
|
+
Pushed org/repo:ufo-2017-06-11T22-22-32-a18aa30 docker image. Took 9s.
|
59
59
|
|
60
60
|
Note in order to push the image to a registry you will need to login into the registry. If you are using DockerHub use the `docker login` command. If you are using AWS ECR then you can use the `aws ecr get-login` command.
|
61
61
|
|
@@ -65,6 +65,6 @@ You can specify docker build options with the `UFO_DOCKER_BUILD_OPTIONS` environ
|
|
65
65
|
|
66
66
|
$ UFO_DOCKER_BUILD_OPTIONS="--build-arg RAILS_ENV=production" ufo docker build
|
67
67
|
Building docker image with:
|
68
|
-
docker build --build-arg RAILS_ENV=production -t
|
68
|
+
docker build --build-arg RAILS_ENV=production -t org/repo:ufo-2018-05-19T11-52-16-6714713 -f Dockerfile .
|
69
69
|
...
|
70
|
-
Docker image
|
70
|
+
Docker image org/repo:ufo-2018-05-19T11-52-16-6714713 built. Took 2s.
|
@@ -2,19 +2,19 @@ Ufo comes with a handy command to clean up old images that ufo generates. Ufo on
|
|
2
2
|
|
3
3
|
Say you currently have these images:
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
org/repo:ufo-2016-10-15T19-29-06-88071f5
|
6
|
+
org/repo:ufo-2016-10-16T19-29-06-88071f5
|
7
|
+
org/repo:ufo-2016-10-17T19-29-06-88071f5
|
8
|
+
org/repo:ufo-2016-10-18T19-29-06-88071f5
|
9
9
|
|
10
10
|
To clean them up and keep the 3 more recent:
|
11
11
|
|
12
|
-
$ ufo docker clean
|
12
|
+
$ ufo docker clean org/repo
|
13
13
|
Cleaning up docker images...
|
14
|
-
Running: docker rmi
|
14
|
+
Running: docker rmi org/repo:ufo-2016-10-15T19-29-06-88071f5
|
15
15
|
|
16
|
-
This will remove
|
16
|
+
This will remove org/repo:ufo-2016-10-15T19-29-06-88071f5.
|
17
17
|
|
18
18
|
By default the clean command keeps the most 3 recent docker images. If you would like to override this setting you can use the `--keep` option. Example:
|
19
19
|
|
20
|
-
ufo docker clean
|
20
|
+
ufo docker clean org/repo --keep 5
|
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
It is sometimes handy to grab the name of the Docker image that was just generated. Let's say ou needed the image name so you can feed it into another script that you have. The command `ufo docker name` returns the image of the most recently built Docker image.
|
2
|
+
|
3
|
+
## Examples
|
4
|
+
|
5
|
+
ufo docker build # stores the docker image name in the .ufo/tmp/state folder
|
6
|
+
ufo docker name # fetches image name from .ufo/tmp/state folder
|
7
|
+
|
8
|
+
An example image name would look something like this: `org/repo:ufo-2018-02-15T19-29-06-88071f5`
|
9
|
+
|
10
|
+
Note, the `.ufo/tmp/state` folder is an internal data folder and it's structure can change in future releases.
|
11
|
+
|
12
|
+
If you want to generate a brand new name for whatever purpose, you can use the `--generate` flag. The generate does not write to the `.ufo/tmp/state` folder. It only generates a fresh name to stdout. If you run it multiple times, it will generate new names. You can notice this by seeing that the timestamp will always update:
|
13
|
+
|
14
|
+
ufo docker name --generate # example: org/repo:ufo-2018-02-15T10-00-00-88071f5
|
15
|
+
ufo docker name --generate # example: org/repo:ufo-2018-02-15T10-00-08-88071f5
|
16
|
+
ufo docker name --generate # example: org/repo:ufo-2018-02-15T10-00-16-88071f5
|
File without changes
|
@@ -0,0 +1,27 @@
|
|
1
|
+
The `ufo init` command setup a project to be ufo ready. It creates a `.ufo` folder with a starter structure.
|
2
|
+
|
3
|
+
The command requires the `--image` option. If the `--app` option is not provided, then it is inferred and set as the parent folder name. Example:
|
4
|
+
|
5
|
+
cd demo
|
6
|
+
ufo init --app demo --image org/repo
|
7
|
+
ufo init --image org/repo # same as --app demo
|
8
|
+
|
9
|
+
## Examples
|
10
|
+
|
11
|
+
$ mkdir demo
|
12
|
+
$ cd demo
|
13
|
+
$ ufo init --app demo --image org/repo
|
14
|
+
Generating .ufo structure
|
15
|
+
create .ufo/config.rb
|
16
|
+
create .ufo/config/web/base.rb
|
17
|
+
create .ufo/config/web/dev.rb
|
18
|
+
create .ufo/config/web/prod.rb
|
19
|
+
create .ufo/resources/iam_roles/execution_role.rb
|
20
|
+
create .ufo/resources/iam_roles/task_role.rb
|
21
|
+
create .ufo/resources/task_definitions/web.yml
|
22
|
+
create .ufo/vars/base.rb
|
23
|
+
create .ufo/vars/dev.rb
|
24
|
+
create .ufo/vars/prod.rb
|
25
|
+
create .gitignore
|
26
|
+
create .dockerignore
|
27
|
+
create Dockerfile
|
@@ -1,10 +1,11 @@
|
|
1
1
|
## Examples
|
2
2
|
|
3
|
-
ufo logs
|
3
|
+
ufo logs
|
4
4
|
|
5
|
-
If you have a current service name set.
|
6
|
-
|
7
|
-
ufo current --service demo-web
|
8
5
|
ufo logs # follow by default
|
9
6
|
ufo logs --no-follow
|
10
7
|
ufo logs --format detailed # to show stream too
|
8
|
+
|
9
|
+
Filter HealthChecker
|
10
|
+
|
11
|
+
ufo logs --filter-pattern '- "HealthChecker"'
|
@@ -0,0 +1,12 @@
|
|
1
|
+
## Examples
|
2
|
+
|
3
|
+
$ ufo ps
|
4
|
+
Stack: demo-web-dev
|
5
|
+
Service: demo-web-dev-EcsService-6Tb9EQqC23HA
|
6
|
+
Tasks: Running: 1 Desired: 1 Min: 1 Max: 2
|
7
|
+
Application ELB: demo-we-Elb-7DSB8ODFY8QP-1678773019.us-west-2.elb.amazonaws.com
|
8
|
+
+----------------------------------+------+-----------------+----------------+---------+
|
9
|
+
| Task | Name | Release | Started | Status |
|
10
|
+
+----------------------------------+------+-----------------+----------------+---------+
|
11
|
+
| 3ea2ec8300ef49ab8d0071568525eb33 | web | demo-web-dev:55 | 26 seconds ago | RUNNING |
|
12
|
+
+----------------------------------+------+-----------------+----------------+---------+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
## Example
|
2
|
+
|
3
|
+
$ ufo releases
|
4
|
+
Latest task definitions for stack: demo-web-dev
|
5
|
+
demo-web-dev:55
|
6
|
+
demo-web-dev:54
|
7
|
+
demo-web-dev:53
|
8
|
+
demo-web-dev:52
|
9
|
+
demo-web-dev:51
|
10
|
+
demo-web-dev:50
|
11
|
+
demo-web-dev:49
|
12
|
+
demo-web-dev:48
|
13
|
+
demo-web-dev:47
|
14
|
+
demo-web-dev:46
|
15
|
+
demo-web-dev:45
|
@@ -0,0 +1,40 @@
|
|
1
|
+
## Examples
|
2
|
+
|
3
|
+
You only need to specific the task definition version number, though you can specify the name also
|
4
|
+
|
5
|
+
$ ufo rollback 54
|
6
|
+
Will rollback to task definition version: 54
|
7
|
+
Are you sure? (y/N) y
|
8
|
+
Rolling back ECS service to task definition demo-web-dev:54
|
9
|
+
Will deploy stack demo-web-dev
|
10
|
+
Parameters built: .ufo/output/params.json
|
11
|
+
Template built: .ufo/output/template.yml
|
12
|
+
Updating stack demo-web-dev
|
13
|
+
Waiting for stack to complete
|
14
|
+
06:17:01PM UPDATE_IN_PROGRESS AWS::CloudFormation::Stack demo-web-dev User Initiated
|
15
|
+
06:17:08PM UPDATE_IN_PROGRESS AWS::ECS::Service EcsService
|
16
|
+
..
|
17
|
+
|
18
|
+
To see recent task definitions:
|
19
|
+
|
20
|
+
ufo releases
|
21
|
+
|
22
|
+
Note, task definitions get created by many ways with more than just `ufo ship`. So it the previous version might not be the latest version number minus one.
|
23
|
+
|
24
|
+
## Using image name
|
25
|
+
|
26
|
+
Another way to specify the version for rollback is with the container definition's image value. Here's the portion of the ecs task definition that you would look for:
|
27
|
+
|
28
|
+
...
|
29
|
+
"container_definitions": [
|
30
|
+
{
|
31
|
+
"name": "web",
|
32
|
+
"image": "org/repo:ufo-2018-06-21T15-03-52-ac60240",
|
33
|
+
"cpu": 256,
|
34
|
+
...
|
35
|
+
|
36
|
+
You need to specify enough for a match to be found. Ufo searches the 30 most recent task definitions. So all of these would work:
|
37
|
+
|
38
|
+
ufo rollback org/repo:ufo-2018-06-21T15-03-52-ac60240
|
39
|
+
ufo rollback 2018-06-21T15-03-52
|
40
|
+
ufo rollback ac60240
|
@@ -0,0 +1,7 @@
|
|
1
|
+
Ufo provides a command to scale up and down an ECS service quickly. However, the scaling configuration is only a temporary update until the next `ufo ship`.
|
2
|
+
|
3
|
+
ufo scale --desired 2
|
4
|
+
|
5
|
+
If you've configured ECS Service AutoScaling with ufo then you can also update the Scaling configuration.
|
6
|
+
|
7
|
+
ufo scale --min 1 --max 2
|