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
@@ -1,86 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Setup Ufo
|
3
|
-
nav_order: 5
|
4
|
-
---
|
5
|
-
|
6
|
-
The easiest way to create this ufo folder is by using the `ufo init` command. For this tutorial we'll [tongueroo/demo-ufo](https://github.com/tongueroo/demo-ufo) which is a small test sinatra app.
|
7
|
-
Let's run the command in our newly cloned project.
|
8
|
-
|
9
|
-
```sh
|
10
|
-
git clone https://github.com/tongueroo/demo-ufo.git
|
11
|
-
cd demo-ufo
|
12
|
-
ufo init --app=demo --image=tongueroo/demo-ufo
|
13
|
-
```
|
14
|
-
|
15
|
-
You should see output similiar to this:
|
16
|
-
|
17
|
-
```sh
|
18
|
-
$ ufo init --app=demo --image=tongueroo/demo-ufo
|
19
|
-
Setting up ufo project...
|
20
|
-
create .env
|
21
|
-
create .ufo/params.yml
|
22
|
-
create .ufo/settings.yml
|
23
|
-
create .ufo/settings/cfn/default.yml
|
24
|
-
create .ufo/settings/network/default.yml
|
25
|
-
create .ufo/task_definitions.rb
|
26
|
-
create .ufo/templates/fargate.json.erb
|
27
|
-
create .ufo/templates/main.json.erb
|
28
|
-
create .ufo/variables/base.rb
|
29
|
-
create .ufo/variables/development.rb
|
30
|
-
create .ufo/variables/production.rb
|
31
|
-
identical Dockerfile
|
32
|
-
create bin/deploy
|
33
|
-
append .gitignore
|
34
|
-
create .dockerignore
|
35
|
-
Starter ufo files created.
|
36
|
-
Congrats 🎉 You have successfully set up ufo for your project.
|
37
|
-
$
|
38
|
-
```
|
39
|
-
|
40
|
-
The `ufo init` command generated a few starter ufo files for you. The standard directory structure of the ufo folder looks like this:
|
41
|
-
|
42
|
-
```sh
|
43
|
-
.ufo
|
44
|
-
├── output
|
45
|
-
├── settings.yml
|
46
|
-
├── task_definitions.rb
|
47
|
-
├── templates
|
48
|
-
| └── main.json.erb
|
49
|
-
└── variables
|
50
|
-
├── base.rb
|
51
|
-
├── production.rb
|
52
|
-
└── development.rb
|
53
|
-
```
|
54
|
-
|
55
|
-
The explanation of the folders and files were covered in detailed earlier at [Structure]({% link _docs/structure.md %}).
|
56
|
-
|
57
|
-
## Settings
|
58
|
-
|
59
|
-
Take a look at the `settings.yml` file and notice that it contains some default configuration settings so you do not have to type out these options repeatedly for some of the ufo commands.
|
60
|
-
|
61
|
-
```yaml
|
62
|
-
# More info: http://ufoships.com/docs/settings/
|
63
|
-
base:
|
64
|
-
image: tongueroo/demo-ufo
|
65
|
-
# clean_keep: 30 # cleans up docker images on your docker server.
|
66
|
-
# ecr_keep: 30 # cleans up images on ECR and keeps this remaining amount. Defaults to keep all.
|
67
|
-
# defaults when an new ECS service is created by ufo ship
|
68
|
-
|
69
|
-
development:
|
70
|
-
# cluster: dev # uncomment if you want the cluster name be other than the default
|
71
|
-
# the default is to match UFO_ENV. So UFO_ENV=development means the ECS
|
72
|
-
# cluster will be name development
|
73
|
-
# When you have AWS_PROFILE set to one of these values, ufo will switch to the desired
|
74
|
-
# environment. This prevents you from switching AWS_PROFILE, forgetting to
|
75
|
-
# also switch UFO_ENV, and accidentally deploying to production vs development.
|
76
|
-
# aws_profile: dev_profile1
|
77
|
-
|
78
|
-
production:
|
79
|
-
# cluster: prod
|
80
|
-
```
|
81
|
-
|
82
|
-
The `image` value is the name that ufo will use as a base portion of the name to generate a Docker image name, it should not include the tag portion.
|
83
|
-
|
84
|
-
The other settings are optional. You can learn more about them at [Settings]({% link _docs/settings.md %}).
|
85
|
-
|
86
|
-
{% include prev_next.md %}
|
@@ -1,95 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Deploy One App
|
3
|
-
nav_order: 8
|
4
|
-
---
|
5
|
-
|
6
|
-
## Step 3 - Ship the Code to ECS
|
7
|
-
|
8
|
-
In this guide we have walked through what ufo does step by step. First ufo builds the Docker image with `ufo docker build`. Then it will build and register the ECS task definitions with the `ufo tasks` commands. Now we'll deploy the code to ECS.
|
9
|
-
|
10
|
-
```sh
|
11
|
-
ufo ship demo-web
|
12
|
-
```
|
13
|
-
|
14
|
-
By convention, ufo will ship the docker container to an ECS cluster with the same value as UFO_ENV, which defaults to development. So the command above is the same as:
|
15
|
-
|
16
|
-
```sh
|
17
|
-
ufo ship demo-web --cluster development
|
18
|
-
UFO_ENV=development ufo ship demo-web
|
19
|
-
```
|
20
|
-
|
21
|
-
When you run `ufo ship demo-web`:
|
22
|
-
|
23
|
-
1. It builds the docker image.
|
24
|
-
2. Generates a task definition and registers it.
|
25
|
-
3. Updates the ECS service to use it.
|
26
|
-
|
27
|
-
If the ECS service demo-web does not yet exist, ufo will create the service for you. Ufo will also automatically create the ECS cluster.
|
28
|
-
|
29
|
-
NOTE: Ufo creates the ECS cluster record, but you still need to associate ECS Container Instances to the cluster yourself.
|
30
|
-
|
31
|
-
By convention, if the service has a container name web, ufo will automatically create an Load Balancer. Let's take a look at the example out from the `ufo ship`. Some of the output has been removed for conciseness.
|
32
|
-
|
33
|
-
```sh
|
34
|
-
$ ufo ship demo-web
|
35
|
-
Building docker image with:
|
36
|
-
docker build -t tongueroo/demo-ufo:ufo-2018-06-28T16-41-11-7e0af94 -f Dockerfile .
|
37
|
-
...
|
38
|
-
Deploying demo-web...
|
39
|
-
Ensuring log group for demo-web task definition exists
|
40
|
-
Log group name: ecs/demo-web
|
41
|
-
Creating stack development-demo-web...
|
42
|
-
Generated template saved at: /tmp/ufo/development-demo-web/stack.yml
|
43
|
-
Generated parameters saved at: /tmp/ufo/development-demo-web/parameters.yml
|
44
|
-
04:41:27PM CREATE_IN_PROGRESS AWS::CloudFormation::Stack development-demo-web User Initiated
|
45
|
-
04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup ElbSecurityGroup
|
46
|
-
04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup EcsSecurityGroup
|
47
|
-
04:41:31PM CREATE_IN_PROGRESS AWS::ElasticLoadBalancingV2::TargetGroup TargetGroup
|
48
|
-
04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup ElbSecurityGroup Resource creation Initiated
|
49
|
-
04:41:32PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup EcsSecurityGroup Resource creation Initiated
|
50
|
-
04:41:32PM CREATE_IN_PROGRESS AWS::ElasticLoadBalancingV2::TargetGroup TargetGroup Resource creation Initiated
|
51
|
-
...
|
52
|
-
04:44:46PM CREATE_COMPLETE AWS::ECS::Service Ecs
|
53
|
-
04:44:48PM CREATE_COMPLETE AWS::CloudFormation::Stack development-demo-web
|
54
|
-
Stack success status: CREATE_COMPLETE
|
55
|
-
Time took for stack deployment: 3m 22s.
|
56
|
-
Software shipped!
|
57
|
-
$
|
58
|
-
```
|
59
|
-
|
60
|
-
Checking the ECS console you should see something like this:
|
61
|
-
|
62
|
-
<img src="/img/tutorials/ecs-console-ufo-ship.png" class="doc-photo" />
|
63
|
-
|
64
|
-
You have successfully deployed a Docker image to ECS! 🍾🥂
|
65
|
-
|
66
|
-
## Checking ECS Service
|
67
|
-
|
68
|
-
Another way to check that the ECS service is running is with the `ufo ps` command.
|
69
|
-
|
70
|
-
$ ufo ps demo-web
|
71
|
-
=> Service: demo-web
|
72
|
-
Service name: development-demo-web-Ecs-12DRF2703Z3D2
|
73
|
-
Status: ACTIVE
|
74
|
-
Running count: 1
|
75
|
-
Desired count: 1
|
76
|
-
Launch type: EC2
|
77
|
-
Task definition: demo-web:82
|
78
|
-
Elb: develop-Elb-ZY1VARS3KP14-2141687965.us-east-1.elb.amazonaws.com
|
79
|
-
+----------+------+-------------+---------------+---------+-------+
|
80
|
-
| Id | Name | Release | Started | Status | Notes |
|
81
|
-
+----------+------+-------------+---------------+---------+-------+
|
82
|
-
| e4426421 | web | demo-web:82 | 5 minutes ago | RUNNING | |
|
83
|
-
+----------+------+-------------+---------------+---------+-------+
|
84
|
-
|
85
|
-
## Ufo Current Tip
|
86
|
-
|
87
|
-
We've been typing the `demo-web` service name explicitly. We can set the current service with the `ufo current` command to save us from typing each time. Example:
|
88
|
-
|
89
|
-
ufo current --service demo-web
|
90
|
-
ufo ship # now same as ufo ship demo-web
|
91
|
-
ufo ps # now same as ufo ps demo-web
|
92
|
-
|
93
|
-
Congratulations 🎊 You have successfully built a Docker image, register it and deployed it to AWS ECS.
|
94
|
-
|
95
|
-
{% include prev_next.md %}
|
@@ -1,38 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Deploy Multiple Apps
|
3
|
-
nav_order: 9
|
4
|
-
---
|
5
|
-
|
6
|
-
You might have noticed in the tutorial that the generated starter .ufo folder contains 3 task definitions a `web`, `worker` and `clock` role. This is a common pattern. The web process handles web traffic, the worker process handles background job processing that would be too slow and potentially block web requests, and a clock process is typically used to schedule recurring jobs.
|
7
|
-
|
8
|
-
These processes typically use the same codebase and same docker image, but have slightly different run time settings. The docker run command for a web process could be [puma](http://puma.io/) and the command for a worker process could be [sidekiq](http://sidekiq.org/). Environment variables are also sometimes different. The important key is that the same docker image is used for all 3 services but the task definition for each service is slightly different.
|
9
|
-
|
10
|
-
While we can use the `ufo ship` command to deploy to all 3 service roles individually like so:
|
11
|
-
|
12
|
-
```sh
|
13
|
-
ufo ship demo-web
|
14
|
-
ufo ship demo-worker
|
15
|
-
ufo ship demo-clock
|
16
|
-
```
|
17
|
-
|
18
|
-
This would build a new Docker image for each process. We actually want have the same docker image running on all of these roles. In this case where we want to use the *same* Docker image for all 3 roles, ufo provides a `ufo ships` command.
|
19
|
-
|
20
|
-
## ufo ships
|
21
|
-
|
22
|
-
```sh
|
23
|
-
ufo ships demo-web demo-worker demo-clock
|
24
|
-
```
|
25
|
-
|
26
|
-
You can check on the ECS console and should see something similar to this:
|
27
|
-
|
28
|
-
<img src="/img/tutorials/ecs-console-ufo-ships.png" class="doc-photo" />
|
29
|
-
|
30
|
-
You can shorten the command by taking advantage of shell expansion:
|
31
|
-
|
32
|
-
```sh
|
33
|
-
ufo ships demo-{web,worker,clock}
|
34
|
-
```
|
35
|
-
|
36
|
-
In the case of the `ufo ships` command the `--wait` option defaults to false so that all the specified ECS services update in parallel. You can check on the status of the update on the CloudFormation console.
|
37
|
-
|
38
|
-
{% include prev_next.md %}
|
@@ -1,177 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Task Definitions
|
3
|
-
nav_order: 7
|
4
|
-
---
|
5
|
-
|
6
|
-
## Build the ECS Task Definitions
|
7
|
-
|
8
|
-
Now that we have a Docker image pushed to a registry we can use that image for ECS. Ufo takes that image and adds it to an ECS task definition. This is where ufo is powerful. Ufo gives you the power to build and control your ECS task definition directly.
|
9
|
-
|
10
|
-
Let's take a look at the files that are used by ufo to build the ECS task definition. These files were generated by the `ufo init` command at the beginning.
|
11
|
-
|
12
|
-
1. `.ufo/templates/main.json.erb`
|
13
|
-
2. `.ufo/task_definitions.rb`
|
14
|
-
|
15
|
-
Ufo task definitions are written as an ERB template that makes it directly accessible. You can configure it to your requirements. Here is an example of an ERB template `.ufo/templates/main.json.erb` and shows how to modify the task definition:
|
16
|
-
|
17
|
-
**.ufo/templates/main.json.erb**:
|
18
|
-
|
19
|
-
```json
|
20
|
-
{
|
21
|
-
"family": "<%= @family %>",
|
22
|
-
"containerDefinitions": [
|
23
|
-
{
|
24
|
-
"name": "<%= @name %>",
|
25
|
-
"image": "<%= @image %>",
|
26
|
-
"cpu": <%= @cpu %>,
|
27
|
-
<% if @memory %>
|
28
|
-
"memory": <%= @memory %>,
|
29
|
-
<% end %>
|
30
|
-
<% if @memory_reservation %>
|
31
|
-
...
|
32
|
-
"essential": true
|
33
|
-
}
|
34
|
-
]
|
35
|
-
}
|
36
|
-
```
|
37
|
-
|
38
|
-
The instance variable values are specified in `.ufo/task_definitions.rb` via a DSL. Here's the file:
|
39
|
-
|
40
|
-
**.ufo/task_definitions.rb**:
|
41
|
-
|
42
|
-
```
|
43
|
-
task_definition "demo-web" do
|
44
|
-
source "main" # will use ufo/templates/main.json.erb
|
45
|
-
variables(
|
46
|
-
family: task_definition_name,
|
47
|
-
name: "web",
|
48
|
-
container_port: helper.dockerfile_port,
|
49
|
-
command: ["bin/web"]
|
50
|
-
)
|
51
|
-
end
|
52
|
-
|
53
|
-
task_definition "demo-worker" do
|
54
|
-
source "main" # will use ufo/templates/main.json.erb
|
55
|
-
variables(
|
56
|
-
family: task_definition_name,
|
57
|
-
name: "worker",
|
58
|
-
command: ["bin/worker"]
|
59
|
-
)
|
60
|
-
end
|
61
|
-
```
|
62
|
-
|
63
|
-
## Shared Variables
|
64
|
-
|
65
|
-
Ufo has a concept of shared variables, covered in [Shared Variables]({% link _docs/variables.md %}). The shared variables are set in the `variables` folder and allow you to use a set of shared variables common to your templates:
|
66
|
-
|
67
|
-
**.ufo/variables/base.rb**:
|
68
|
-
|
69
|
-
```ruby
|
70
|
-
@image = helper.full_image_name # includes the git sha tongueroo/demo-ufo:ufo-[sha].
|
71
|
-
@cpu = 256
|
72
|
-
@memory_reservation = 512
|
73
|
-
@environment = helper.env_file(".env")
|
74
|
-
```
|
75
|
-
|
76
|
-
**.ufo/variables/development.rb**:
|
77
|
-
|
78
|
-
```ruby
|
79
|
-
@environment = helper.env_vars(%Q{
|
80
|
-
RAILS_ENV=development
|
81
|
-
SECRET_KEY_BASE=secret
|
82
|
-
})
|
83
|
-
```
|
84
|
-
|
85
|
-
Ufo combines the `main.json.erb` template, `task_definitions.rb` definitions, and variables in the `.ufo/variables` folder. It then generates the raw AWS formatted task definition in the `output` folder.
|
86
|
-
|
87
|
-
If you need to modify the task definition template to suit your own needs it is simple, just edit `main.json.erb`. You do not have to dive deep into internal code somewhere. It is all there for you to control fully.
|
88
|
-
|
89
|
-
The `task_definition.rb` has access to some useful helper methods detailed in [Helpers]({% link _docs/helpers.md %}).
|
90
|
-
|
91
|
-
Let's build the task definitions:
|
92
|
-
|
93
|
-
```sh
|
94
|
-
ufo tasks build
|
95
|
-
```
|
96
|
-
|
97
|
-
You should see output similar to below:
|
98
|
-
|
99
|
-
```sh
|
100
|
-
$ ufo tasks build
|
101
|
-
Building Task Definitions...
|
102
|
-
Generating Task Definitions:
|
103
|
-
.ufo/output/demo-web.json
|
104
|
-
.ufo/output/demo-worker.json
|
105
|
-
.ufo/output/demo-clock.json
|
106
|
-
Task Definitions built in .ufo/output
|
107
|
-
$
|
108
|
-
```
|
109
|
-
|
110
|
-
Let's take a look at one of the generated files: `.ufo/output/demo-web.json`.
|
111
|
-
|
112
|
-
```json
|
113
|
-
{
|
114
|
-
"family": "demo-web",
|
115
|
-
"containerDefinitions": [
|
116
|
-
{
|
117
|
-
"name": "web",
|
118
|
-
"image": "tongueroo/demo-ufo:ufo-2018-06-29T23-20-47-20b3a10",
|
119
|
-
"cpu": 256,
|
120
|
-
"memory": 512,
|
121
|
-
"memoryReservation": 512,
|
122
|
-
"portMappings": [
|
123
|
-
{
|
124
|
-
"containerPort": 4567,
|
125
|
-
"protocol": "tcp"
|
126
|
-
}
|
127
|
-
],
|
128
|
-
"command": null,
|
129
|
-
"environment": [
|
130
|
-
{
|
131
|
-
"name": "RAILS_ENV",
|
132
|
-
"value": "development"
|
133
|
-
},
|
134
|
-
{
|
135
|
-
"name": "SECRET_KEY_BASE",
|
136
|
-
"value": "secret"
|
137
|
-
}
|
138
|
-
],
|
139
|
-
"logConfiguration": {
|
140
|
-
"logDriver": "awslogs",
|
141
|
-
"options": {
|
142
|
-
"awslogs-group": "ecs/demo-web",
|
143
|
-
"awslogs-region": "us-east-1",
|
144
|
-
"awslogs-stream-prefix": "demo"
|
145
|
-
}
|
146
|
-
},
|
147
|
-
"essential": true
|
148
|
-
}
|
149
|
-
]
|
150
|
-
}
|
151
|
-
```
|
152
|
-
|
153
|
-
## Register the ECS Task Definitions
|
154
|
-
|
155
|
-
You have built the ECS task definitions locally on your machine. To register the task definitions in the `output` folder run:
|
156
|
-
|
157
|
-
```sh
|
158
|
-
ufo tasks register
|
159
|
-
```
|
160
|
-
|
161
|
-
You should see something similar to this:
|
162
|
-
|
163
|
-
```sh
|
164
|
-
$ ufo tasks register
|
165
|
-
Equivalent aws cli command:
|
166
|
-
aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-web.json
|
167
|
-
demo-web task definition registered.
|
168
|
-
Equivalent aws cli command:
|
169
|
-
aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-clock.json
|
170
|
-
demo-clock task definition registered.
|
171
|
-
Equivalent aws cli command:
|
172
|
-
aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-worker.json
|
173
|
-
demo-worker task definition registered.
|
174
|
-
$
|
175
|
-
```
|
176
|
-
|
177
|
-
{% include prev_next.md %}
|
data/docs/_docs/tutorial.md
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Tutorial
|
3
|
-
nav_order: 4
|
4
|
-
---
|
5
|
-
|
6
|
-
In the next sections, we'll walk through using ufo in detail. We will ufo-ify a project. Then we'll go through the step by step process that ufo automated. Normally ufo is not really used in step like fashion like in this tutorial, but going through it step by step really helps to understand how ufo works. Here are the steps we'll go through:
|
7
|
-
|
8
|
-
1. We'll build a docker image by using `ufo docker`.
|
9
|
-
2. We'll build and register the task definitions to ECS with the newly built docker images with `ufo tasks`
|
10
|
-
3. Finally, we'll use `ufo ship` to run through entire process.
|
11
|
-
|
12
|
-
Let's start!
|
13
|
-
|
14
|
-
{% include prev_next.md %}
|
data/docs/_docs/ufo-current.md
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Ufo Current
|
3
|
-
nav_order: 26
|
4
|
-
---
|
5
|
-
|
6
|
-
## service
|
7
|
-
|
8
|
-
There's a handy way to shorten ufo commands by setting the current service. Example:
|
9
|
-
|
10
|
-
ufo ship demo-web # normal usage
|
11
|
-
ufo current --service demo-web
|
12
|
-
ufo ship # no longer have to type: demo-web
|
13
|
-
|
14
|
-
To view the current settings run `ufo current` with no options.
|
15
|
-
|
16
|
-
$ ufo current
|
17
|
-
Current env_extra: 1
|
18
|
-
Current service: demo-web
|
19
|
-
|
20
|
-
Setting the current service helps shorten other commands also:
|
21
|
-
|
22
|
-
ufo cancel
|
23
|
-
ufo deploy
|
24
|
-
ufo destroy
|
25
|
-
ufo ps
|
26
|
-
ufo releases
|
27
|
-
ufo resources
|
28
|
-
ufo rollback VERSION
|
29
|
-
ufo scale COUNT
|
30
|
-
ufo ship
|
31
|
-
|
32
|
-
## UFO_ENV_EXTRA
|
33
|
-
|
34
|
-
The UFO_ENV_EXTRA env variable allows you create multiple environments with of the same services quickly. More info about is is detailed at [ufo-env-extra]({% link _docs/ufo-env-extra.md %}). You can also set a current UFO_ENV_EXTRA with the `--env-extra` option.
|
35
|
-
|
36
|
-
ufo current --env-extra 1
|
37
|
-
|
38
|
-
## services
|
39
|
-
|
40
|
-
The `ufo ships` commands builds one Docker image and deploys them to multiple ECS services, so it usually takes a list of services like so:
|
41
|
-
|
42
|
-
ufo ships demo-web demo-worker demo-clock
|
43
|
-
|
44
|
-
This can be shorten with with current also.
|
45
|
-
|
46
|
-
ufo current --services demo-web demo-worker demo-clock
|
47
|
-
ufo ships
|
48
|
-
|
49
|
-
{% include prev_next.md %}
|
data/docs/_docs/ufo-env-extra.md
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: UFO_ENV_EXTRA
|
3
|
-
nav_order: 25
|
4
|
-
---
|
5
|
-
|
6
|
-
<div class="video-box"><div class="video-container"><iframe src="https://www.youtube.com/embed/UVQuwQGToYE" frameborder="0" allowfullscreen=""></iframe></div></div>
|
7
|
-
|
8
|
-
Ufo has an concept of extra environments. This is controlled by the `UFO_ENV_EXTRA` variable. By setting `UFO_ENV_EXTRA` you can create additional identical ECS services or environments.
|
9
|
-
|
10
|
-
ufo ship demo-web # creates a demo-web ecs service
|
11
|
-
UFO_ENV_EXTRA=2 ufo ship demo-web # creates a demo-web-2 ecs service
|
12
|
-
|
13
|
-
The `UFO_ENV_EXTRA` can also be set with `ufo current` so you do not have to type it over.
|
14
|
-
|
15
|
-
ufo current --env-extra 1
|
16
|
-
|
17
|
-
The precedence:
|
18
|
-
|
19
|
-
1. UFO_ENV_EXTRA - takes highest precedence
|
20
|
-
2. `.ufo/current` env-extra setting - takes lower precedence
|
21
|
-
|
22
|
-
{% include prev_next.md %}
|
data/docs/_docs/ufo-env.md
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: UFO_ENV
|
3
|
-
nav_order: 24
|
4
|
-
---
|
5
|
-
|
6
|
-
Ufo's behavior is controlled by the `UFO_ENV` environment variable. For example, the `UFO_ENV` variable is used to layer different ufo variable files together to make it easy to specify settings for different environments like production and development. This is covered thoroughly in the [Variables]({% link _docs/variables.md %}) section. `UFO_ENV` defaults to `development` when not set.
|
7
|
-
|
8
|
-
## Setting UFO_ENV
|
9
|
-
|
10
|
-
The `UFO_ENV` can be set in several ways:
|
11
|
-
|
12
|
-
1. Exported as an environment variable to your shell - This takes the second highest precedence.
|
13
|
-
2. From the `aws_profiles` setting in your `settings.yml` file - This takes the lowest precedence.
|
14
|
-
|
15
|
-
## As an environment variable
|
16
|
-
|
17
|
-
```sh
|
18
|
-
export UFO_ENV=production
|
19
|
-
ufo ship demo-web
|
20
|
-
```
|
21
|
-
|
22
|
-
You can set `UFO_ENV` in your `~/.profile`.
|
23
|
-
|
24
|
-
## In .ufo/settings.yml
|
25
|
-
|
26
|
-
The most interesting way to set `UFO_ENV` is with the `aws_profiles` setting in `.ufo/settings.yml`. Let's say you have a `~/.ufo/settings.yml` with the following:
|
27
|
-
|
28
|
-
```yaml
|
29
|
-
development:
|
30
|
-
aws_profile: my-dev-profile
|
31
|
-
|
32
|
-
production:
|
33
|
-
aws_profile: my-prod-profile
|
34
|
-
```
|
35
|
-
|
36
|
-
In this case, when you set `AWS_PROFILE` to switch AWS profiles, ufo picks this up and maps the `AWS_PROFILE` value to the specified `UFO_ENV` using the `aws_profiles` lookup. Example:
|
37
|
-
|
38
|
-
```sh
|
39
|
-
AWS_PROFILE=my-prod-profile => UFO_ENV=production
|
40
|
-
AWS_PROFILE=my-dev-profile => UFO_ENV=development
|
41
|
-
AWS_PROFILE=whatever => UFO_ENV=development # since there are no profiles that match
|
42
|
-
```
|
43
|
-
|
44
|
-
Notice how `AWS_PROFILE=whatever` results in `UFO_ENV=development`. This is because there are no matching aws_profiles in the `settings.yml`. More info on settings is available at [settings]({% link _docs/settings.md %}).
|
45
|
-
|
46
|
-
{% include prev_next.md %}
|
data/docs/_docs/ufo-logs.md
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: ufo logs command
|
3
|
-
nav_order: 23
|
4
|
-
---
|
5
|
-
|
6
|
-
The ufo logs command will tail the logs of the ecs service if you are using the awslogs driver.
|
7
|
-
|
8
|
-
## Examples
|
9
|
-
|
10
|
-
$ ufo logs demo-web
|
11
|
-
2020-01-16 23:58:16 UTC 10.20.120.135 - - [16/Jan/2020:23:58:16 +0000] "GET / HTTP/1.1" 200 3 0.0003
|
12
|
-
2020-01-16 23:58:16 UTC 10.20.120.135 - - [16/Jan/2020:23:58:16 UTC] "GET / HTTP/1.1" 200 3
|
13
|
-
2020-01-16 23:58:16 UTC - -> /
|
14
|
-
|
15
|
-
## Current Set
|
16
|
-
|
17
|
-
If you have a current service name set.
|
18
|
-
|
19
|
-
$ ufo current --service demo-web
|
20
|
-
$ ufo logs # follow by default
|
21
|
-
2020-01-16 23:58:16 UTC 10.20.120.135 - - [16/Jan/2020:23:58:16 +0000] "GET / HTTP/1.1" 200 3 0.0003
|
22
|
-
2020-01-16 23:58:16 UTC 10.20.120.135 - - [16/Jan/2020:23:58:16 UTC] "GET / HTTP/1.1" 200 3
|
23
|
-
2020-01-16 23:58:16 UTC - -> /
|
24
|
-
|
25
|
-
## Options
|
26
|
-
|
27
|
-
By default the logs follow and use the simple format without the log stream. Here's how adjust those options:
|
28
|
-
|
29
|
-
ufo logs --no-follow
|
30
|
-
ufo logs --format detailed # to show stream too
|
31
|
-
|
32
|
-
More info: [ufo logs reference]({% link _reference/ufo-logs.md %})
|
33
|
-
|
34
|
-
## awslog driver
|
35
|
-
|
36
|
-
The generated .ufo task definition defaults to the awslogs driver. If you need it, it looks like this:
|
37
|
-
|
38
|
-
```json
|
39
|
-
"logConfiguration": {
|
40
|
-
"logDriver": "awslogs",
|
41
|
-
"options": {
|
42
|
-
"awslogs-group": "<%= @awslogs_group %>",
|
43
|
-
"awslogs-region": "<%= @awslogs_region || 'us-east-1' %>",
|
44
|
-
"awslogs-stream-prefix": "<%= @awslogs_stream_prefix %>"
|
45
|
-
}
|
46
|
-
}
|
47
|
-
```
|
48
|
-
|
49
|
-
{% include prev_next.md %}
|
@@ -1,43 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Ufo Task Params
|
3
|
-
nav_order: 27
|
4
|
-
---
|
5
|
-
|
6
|
-
You can run one off task with the [ufo task](https://ufoships.com/reference/ufo-task/) command.
|
7
|
-
|
8
|
-
The `ufo task` commands:
|
9
|
-
|
10
|
-
1. Builds the docker image
|
11
|
-
2. Registers the ECS task definition
|
12
|
-
3. Runs the command
|
13
|
-
|
14
|
-
|
15
|
-
The params that ufo sends to the [ruby aws-sdk](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ECS/Client.html#run_task-instance_method) methods to for the one off task can be customized with a `params.yml` file. This allows you use the full power of the aws-sdk.
|
16
|
-
|
17
|
-
A starter project `.ufo/params.yml` file is generated as part of the `ufo init` command. Let's take a look at an example `params.yml`:
|
18
|
-
|
19
|
-
```yaml
|
20
|
-
# These params are passsed to the corresponding aws-sdk ecs client methods.
|
21
|
-
# AWS Docs example: https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ECS/Client.html#run_task-instance_method
|
22
|
-
#
|
23
|
-
# The network helper provides access to the .ufo/settings/network/[PROFILE].yml
|
24
|
-
#
|
25
|
-
# More docs: http://ufoships.com/docs/params/
|
26
|
-
|
27
|
-
# ufo task calls run_tasks
|
28
|
-
run_task:
|
29
|
-
# network_configuration is required for FARGATE
|
30
|
-
network_configuration:
|
31
|
-
awsvpc_configuration:
|
32
|
-
subnets: <%= network[:ecs_subnets].inspect %> # required
|
33
|
-
security_groups: <%= network[:ecs_security_groups].inspect %>
|
34
|
-
assign_public_ip: "ENABLED" # accepts ENABLED, DISABLED
|
35
|
-
```
|
36
|
-
|
37
|
-
Ufo provides 1st class citizen access to adjust the params sent to the aws-sdk calls:
|
38
|
-
|
39
|
-
ERB and [shared variables]({% link _docs/variables.md %}) are available in the params file. You can also define the subnets in your config/variables and use them in them in the params.yml file.
|
40
|
-
|
41
|
-
Note, the params.yml file does not have access to the `task_definition_name` helper method. That is only available in the `task_definitions.rb` template_definition code blocks.
|
42
|
-
|
43
|
-
{% include prev_next.md %}
|
@@ -1,21 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: ufo tasks register
|
3
|
-
---
|
4
|
-
|
5
|
-
The `ufo tasks register` command registers all the generated task definitions in `output/` to AWS ECS. Let's run it:
|
6
|
-
|
7
|
-
```sh
|
8
|
-
ufo tasks register
|
9
|
-
```
|
10
|
-
|
11
|
-
You should see something similiar to this:
|
12
|
-
|
13
|
-
```sh
|
14
|
-
demo-clock task definition registered.
|
15
|
-
demo-web task definition registered.
|
16
|
-
demo-worker task definition registered.
|
17
|
-
```
|
18
|
-
|
19
|
-
You can verify that the task definitions have been registered properly by viewing the AWS ECS Console Task Definitions page. You should see something similar to this:
|
20
|
-
|
21
|
-
<img src="/img/tutorials/ecs-console-task-definitions.png" class="doc-photo" />
|