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,26 +0,0 @@
|
|
1
|
-
#!/bin/bash -eux
|
2
|
-
|
3
|
-
# Even though specs also generate docs, lets run again to ensure clean slate
|
4
|
-
rake docs
|
5
|
-
|
6
|
-
out=$(git status docs)
|
7
|
-
if [[ "$out" = *"nothing to commit"* ]]; then
|
8
|
-
exit
|
9
|
-
fi
|
10
|
-
|
11
|
-
COMMIT_MESSAGE="docs updated by circleci"
|
12
|
-
|
13
|
-
# If the last commit already updated the docs, then exit.
|
14
|
-
# Preventable measure to avoid infinite loop.
|
15
|
-
if git log -1 --pretty=oneline | grep "$COMMIT_MESSAGE" ; then
|
16
|
-
exit
|
17
|
-
fi
|
18
|
-
|
19
|
-
# If reach here, we have some changes on docs that we should commit.
|
20
|
-
# Even though s
|
21
|
-
git add docs
|
22
|
-
git commit -m "$COMMIT_MESSAGE"
|
23
|
-
|
24
|
-
# https://makandracards.com/makandra/12107-git-show-current-branch-name-only
|
25
|
-
current_branch=$(git rev-parse --abbrev-ref HEAD)
|
26
|
-
git push origin "$current_branch"
|
data/.circleci/config.yml
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
# Ruby CircleCI 2.0 configuration file
|
2
|
-
#
|
3
|
-
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
|
4
|
-
#
|
5
|
-
version: 2
|
6
|
-
jobs:
|
7
|
-
build:
|
8
|
-
docker:
|
9
|
-
# specify the version you desire here
|
10
|
-
- image: circleci/ruby:2.5.0-node-browsers
|
11
|
-
|
12
|
-
# Specify service dependencies here if necessary
|
13
|
-
# CircleCI maintains a library of pre-built images
|
14
|
-
# documented at https://circleci.com/docs/2.0/circleci-images/
|
15
|
-
# - image: circleci/postgres:9.4
|
16
|
-
|
17
|
-
working_directory: ~/repo
|
18
|
-
|
19
|
-
steps:
|
20
|
-
- checkout
|
21
|
-
|
22
|
-
- run:
|
23
|
-
name: submodule sync
|
24
|
-
command: |
|
25
|
-
git submodule sync
|
26
|
-
git submodule update --init
|
27
|
-
|
28
|
-
# Download and cache dependencies
|
29
|
-
- restore_cache:
|
30
|
-
keys:
|
31
|
-
- v1-dependencies-{{ checksum "Gemfile" }}
|
32
|
-
# fallback to using the latest cache if no exact match is found
|
33
|
-
- v1-dependencies-
|
34
|
-
|
35
|
-
# Thanks: https://discuss.circleci.com/t/using-bundler-2-0-during-ci-fails/27411/3
|
36
|
-
- run:
|
37
|
-
name: configure bundler
|
38
|
-
command: |
|
39
|
-
echo 'export BUNDLER_VERSION=$(cat Gemfile.lock | tail -1 | tr -d " ")' >> $BASH_ENV
|
40
|
-
source $BASH_ENV
|
41
|
-
gem install bundler
|
42
|
-
|
43
|
-
- run:
|
44
|
-
name: install dependencies
|
45
|
-
command: |
|
46
|
-
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
47
|
-
|
48
|
-
- save_cache:
|
49
|
-
paths:
|
50
|
-
- ./vendor/bundle
|
51
|
-
key: v1-dependencies-{{ checksum "Gemfile" }}
|
52
|
-
|
53
|
-
# specs need git configured ad commit_docs.sh required it also
|
54
|
-
- run:
|
55
|
-
name: configure git
|
56
|
-
command: |
|
57
|
-
git config --global user.email "tongueroo@gmail.com"
|
58
|
-
git config --global user.name "Tung Nguyen"
|
59
|
-
|
60
|
-
# run tests!
|
61
|
-
- run:
|
62
|
-
name: run tests
|
63
|
-
command: |
|
64
|
-
mkdir /tmp/test-results
|
65
|
-
bundle exec rspec
|
66
|
-
|
67
|
-
- run:
|
68
|
-
name: commit cli reference docs
|
69
|
-
command: |
|
70
|
-
chmod a+x -R .circleci/bin
|
71
|
-
.circleci/bin/commit_docs.sh
|
72
|
-
|
73
|
-
# collect reports
|
74
|
-
- store_test_results:
|
75
|
-
path: /tmp/test-results
|
76
|
-
- store_artifacts:
|
77
|
-
path: /tmp/test-results
|
78
|
-
destination: test-results
|
data/.gitmodules
DELETED
File without changes
|
data/docs/.gitignore
DELETED
data/docs/CNAME
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ufoships.com
|
data/docs/Gemfile
DELETED
data/docs/LICENSE
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c) 2017 BoltOps
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|
data/docs/README.md
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# Ufo Documentation
|
2
|
-
|
3
|
-
This project powers the ufo documementation website: [ufoships.com](http://ufoships.com). It is a static website generated by [Jekyll](https://jekyllrb.com/).
|
4
|
-
|
5
|
-
## Contributing
|
6
|
-
|
7
|
-
For minor changes like typos, you can click **Suggest an edit to this page**, located at the bottom of each article. This will take you to the source file on GitHub, where you can submit a pull request for your change through the UI.
|
8
|
-
|
9
|
-
## Local Setup
|
10
|
-
|
11
|
-
For larger fixes, you can run the site locally with the following:
|
12
|
-
|
13
|
-
```
|
14
|
-
git clone https://github.com/tongueroo/ufo.git
|
15
|
-
cd ufo/docs
|
16
|
-
bundle
|
17
|
-
bin/web # runs jekyll clean and jekyll serve
|
18
|
-
```
|
19
|
-
|
20
|
-
You'll be able to view the site on [http://localhost:4000](http://localhost:4000).
|
data/docs/_config.yml
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
# Site settings
|
2
|
-
title: UFO ECS Deploy Tool
|
3
|
-
email: tongueroo@gmail.com
|
4
|
-
url: http://ufoships.com
|
5
|
-
description: "AWS ECS Deploy Tool"
|
6
|
-
keywords: "AWS EC2 Container Service, AWS ECS, UFO, Deploy to ECS, ufo ship"
|
7
|
-
skills: ""
|
8
|
-
meta_author: Tung Nguyen
|
9
|
-
|
10
|
-
# Google webmaster tools
|
11
|
-
google_verify:
|
12
|
-
google_analytics: UA-98684555-4
|
13
|
-
|
14
|
-
# https://ssl.bing.com/webmaster/configure/verify/ownership Option 2 content= goes here
|
15
|
-
bing_verify:
|
16
|
-
|
17
|
-
# Contact form:
|
18
|
-
# - static : pass through formspree.io to validate email sending
|
19
|
-
# - disqus : replace contact form by disqus thread
|
20
|
-
# - comment the line below if you want to stick with the default PHP contact form
|
21
|
-
contact: static
|
22
|
-
|
23
|
-
# If you use disqus you need disqus shortname
|
24
|
-
# https://help.disqus.com/customer/portal/articles/466208
|
25
|
-
disqus_shortname:
|
26
|
-
|
27
|
-
# Color settings (hex-codes without the leading hash-tag)
|
28
|
-
color:
|
29
|
-
primary: FFF
|
30
|
-
primary-rgb: "24,288,156" #"128,179,255"
|
31
|
-
secondary: 2c3e50 #FD6E8A
|
32
|
-
secondary-dark: 233140 #A2122F
|
33
|
-
links: 0275d8
|
34
|
-
|
35
|
-
# Footer settings
|
36
|
-
footer:
|
37
|
-
copyright: BoltOps, LLC
|
38
|
-
location: San Francisco, CA
|
39
|
-
social: BoltOps
|
40
|
-
credits:
|
41
|
-
contact: contact@boltops.com
|
42
|
-
phone:
|
43
|
-
|
44
|
-
# Social networks usernames (many more available: google-plus, flickr, dribbble, pinterest, instagram, tumblr, linkedin, etc.)
|
45
|
-
social:
|
46
|
-
- title: twitter
|
47
|
-
url: http://twitter.com/boltopslabs
|
48
|
-
- title: github
|
49
|
-
url: http://github.com/boltopslabs
|
50
|
-
|
51
|
-
# Credits content
|
52
|
-
credits: 'BoltOps, LLC'
|
53
|
-
|
54
|
-
# Build settings
|
55
|
-
markdown: kramdown
|
56
|
-
permalink: pretty
|
57
|
-
|
58
|
-
gh_url: "https://github.com/tongueroo/ufo"
|
59
|
-
|
60
|
-
collections:
|
61
|
-
docs:
|
62
|
-
name: "Documentation"
|
63
|
-
output: true
|
64
|
-
reference:
|
65
|
-
name: "Reference"
|
66
|
-
output: true
|
67
|
-
|
68
|
-
defaults:
|
69
|
-
- values:
|
70
|
-
layout: default
|
71
|
-
|
72
|
-
plugins_dir:
|
73
|
-
- jekyll-coffeescript
|
74
|
-
|
75
|
-
ads_url: "https://ads.boltops.com"
|
@@ -1,28 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Create ecsTaskExecutionRole with AWS CLI
|
3
|
-
---
|
4
|
-
|
5
|
-
Here are commands you can copy and paste to create the `ecsTaskExecutionRole` IAM role:
|
6
|
-
|
7
|
-
cat > /tmp/task-execution-assume-role.json <<EOL
|
8
|
-
{
|
9
|
-
"Version": "2012-10-17",
|
10
|
-
"Statement": [
|
11
|
-
{
|
12
|
-
"Sid": "",
|
13
|
-
"Effect": "Allow",
|
14
|
-
"Principal": {
|
15
|
-
"Service": "ecs-tasks.amazonaws.com"
|
16
|
-
},
|
17
|
-
"Action": "sts:AssumeRole"
|
18
|
-
}
|
19
|
-
]
|
20
|
-
}
|
21
|
-
EOL
|
22
|
-
aws iam create-role --role-name ecsTaskExecutionRole --assume-role-policy-document file:///tmp/task-execution-assume-role.json
|
23
|
-
aws iam attach-role-policy --role-name ecsTaskExecutionRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
|
24
|
-
|
25
|
-
This is based from [Tutorial: Creating a Cluster with a Fargate Task Using the Amazon ECS CLI](https://docs.amazonaws.cn/en_us/AmazonECS/latest/userguide/ecs-cli-tutorial-fargate.html).
|
26
|
-
|
27
|
-
Also for a tutorial on how to create this `ecsTaskExecutionRole` via the AWS IAM Console: [Amazon ECS Task Execution IAM Role
|
28
|
-
](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html).
|
data/docs/_docs/conventions.md
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Conventions
|
3
|
-
nav_order: 22
|
4
|
-
---
|
5
|
-
|
6
|
-
Ufo uses a set of naming conventions. This helps enforce some best practices and also allows the ufo commands to be concise. You can override or bypass the conventions easily.
|
7
|
-
|
8
|
-
## UFO_ENV to ECS Cluster Convention
|
9
|
-
|
10
|
-
By default, the ECS cluster value is the same as UFO_ENV's value. So if `UFO_ENV=production` then the ECS Cluster is `production` and if `UFO_ENV=development` then the ECS Cluster is `development`. You can override this convention by specifying the `--cluster` CLI option. You can also override this behavior with [settings.yml]({% link _docs/settings.md %}) to spare you from having to type `--cluster` repeatedly.
|
11
|
-
|
12
|
-
## Service and Task Names Convention
|
13
|
-
|
14
|
-
Ufo assumes a convention that service\_name and the task\_name are the same. If you would like to override this convention, then you can specify the task name.
|
15
|
-
|
16
|
-
```
|
17
|
-
ufo ship demo-web --task my-task
|
18
|
-
```
|
19
|
-
|
20
|
-
This means that in the task_definition.rb you will also define it with `my-task`. For example:
|
21
|
-
|
22
|
-
```ruby
|
23
|
-
task_definition "my-task" do
|
24
|
-
source "web" # this corresponds to the file in "ufo/templates/web.json.erb"
|
25
|
-
variables(
|
26
|
-
family: "my-task",
|
27
|
-
....
|
28
|
-
)
|
29
|
-
end
|
30
|
-
|
31
|
-
```
|
32
|
-
|
33
|
-
## Web Service Load Balancer Convention
|
34
|
-
|
35
|
-
By convention, if the service has a container named "web", ufo will automatically create an ELB. If you would like to name a service with the word "web" without an ELB, specify `--elb false`. Example:
|
36
|
-
|
37
|
-
```sh
|
38
|
-
ufo ship demo-web --elb false
|
39
|
-
```
|
40
|
-
|
41
|
-
You can also use an existing ELB by specifying the target group arn as the value of the `--elb` option. Example:
|
42
|
-
|
43
|
-
```bash
|
44
|
-
ufo ship demo-web --elb arn:aws:elasticloadbalancing:us-east-1:12345689:targetgroup/demo-web/12345
|
45
|
-
```
|
46
|
-
|
47
|
-
{% include prev_next.md %}
|
@@ -1,46 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: CodeBuild IAM Role
|
3
|
-
nav_order: 35
|
4
|
-
---
|
5
|
-
|
6
|
-
Note, the `/tmp/ecs-deploy-policy.json` policy is available at [Minimal Deploy IAM]({% link _docs/extras/minimal-deploy-iam.md %}).
|
7
|
-
|
8
|
-
## Existing IAM Role
|
9
|
-
|
10
|
-
If you're using CodeBuild with `ufo ship` to handle deployments, you can use the same policy for the role that you assign to the the CodeBuild project and attach it to the the CodeBuild service IAM role that is usually created with the CodeBuild Console wizard. For example, of the IAM role was called `codebuild-myapp-service-role`:
|
11
|
-
|
12
|
-
aws iam put-role-policy --role-name codebuild-myapp-service-role --policy-name EcsDeployPolicy --policy-document file:///tmp/ecs-deploy-policy.json
|
13
|
-
aws iam get-role-policy --role-name codebuild-myapp-service-role --policy-name EcsDeployPolicy
|
14
|
-
|
15
|
-
The `put-role-policy` command adds a *inline* policy to the existing IAM role.
|
16
|
-
|
17
|
-
## New IAM Role
|
18
|
-
|
19
|
-
If you are creating the IAM role for CodeBuild yourself from scratch these commands will be helpful:
|
20
|
-
|
21
|
-
Create the policy document:
|
22
|
-
|
23
|
-
cat << 'EOF' > /tmp/role-trust-policy.json
|
24
|
-
{
|
25
|
-
"Version": "2012-10-17",
|
26
|
-
"Statement": [{
|
27
|
-
"Action": "sts:AssumeRole",
|
28
|
-
"Principal": {
|
29
|
-
"Service": "codebuild.amazonaws.com"
|
30
|
-
},
|
31
|
-
"Effect": "Allow",
|
32
|
-
"Sid": ""
|
33
|
-
}]
|
34
|
-
}
|
35
|
-
EOF
|
36
|
-
|
37
|
-
Create the IAM resources:
|
38
|
-
|
39
|
-
aws iam create-role --role-name EcsDeployRole --assume-role-policy-document file:///tmp/role-trust-policy.json
|
40
|
-
aws iam create-policy --policy-name EcsDeployPolicy --policy-document file:///tmp/ecs-deploy-policy.json
|
41
|
-
ACCOUNT=$(aws sts get-caller-identity | jq -r '.Account')
|
42
|
-
aws iam attach-role-policy --policy-arn arn:aws:iam::$ACCOUNT:policy/EcsDeployPolicy --role-name EcsDeployRole
|
43
|
-
|
44
|
-
The `attach-role-policy` command attaches a Customer Managed IAM policy to the IAM role. This is a little more reusable than using an inline policy.
|
45
|
-
|
46
|
-
{% include prev_next.md %}
|
@@ -1,60 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Dynamic Dockerfile.erb
|
3
|
-
nav_order: 36
|
4
|
-
---
|
5
|
-
|
6
|
-
Sometimes you may need a little more dynamic control of your Dockerfile. For these cases, ufo supports dynamically creating a Dockerfile from a Dockerfile.erb. If Dockerfile.erb exists, ufo uses it to generate a Dockerfile as a part of the build process. These means that you should update the source Dockerfile.erb instead, as the Dockerfile will be overwritten. If Dockerfile.erb does not exist, then ufo will use the Dockerfile instead.
|
7
|
-
|
8
|
-
## Example
|
9
|
-
|
10
|
-
The Dockerfile.erb has access to variables defined in `dockerfile_variables.yml`. The variables should be defined underneath a `UFO_ENV` key. Examples:
|
11
|
-
|
12
|
-
.ufo/settings/dockerfile_variables.yml:
|
13
|
-
|
14
|
-
```yaml
|
15
|
-
---
|
16
|
-
development:
|
17
|
-
base_image: 112233445566.dkr.ecr.us-west-1.amazonaws.com/demo/sinatr:base-2019-06-10T03-22-34-f91cdd350
|
18
|
-
production:
|
19
|
-
base_image: 778899001122.dkr.ecr.us-west-1.amazonaws.com/demo/sinatr:base-2019-06-10T03-23-34-abccddxzy
|
20
|
-
```
|
21
|
-
|
22
|
-
Note, the `base_image` key is automatically updated by [ufo docker base](http://ufoships.com/reference/ufo-docker-base/) when Dockerfile.erb exists.
|
23
|
-
|
24
|
-
Here's what the `Dockerfile.erb` looks like:
|
25
|
-
|
26
|
-
```Dockerfile
|
27
|
-
FROM <%= @base_image %>
|
28
|
-
# ...
|
29
|
-
CMD ["bin/web"]
|
30
|
-
```
|
31
|
-
|
32
|
-
When `UFO_ENV=production`, it'll produce the following.
|
33
|
-
|
34
|
-
Dockerfile:
|
35
|
-
|
36
|
-
```Dockerfile
|
37
|
-
FROM 778899001122.dkr.ecr.us-west-1.amazonaws.com/demo/sinatr:base-2019-06-10T03-23-34-abccddxzy
|
38
|
-
# ...
|
39
|
-
CMD ["bin/web"]
|
40
|
-
```
|
41
|
-
|
42
|
-
The above example demonstrates a good use-case. You may want a different FROM statement in your Dockerfile on a per-environment basis. In this case, we're using different ECR repositories from different AWS accounts for development vs. production. The FROM statement changes based on which AWS account you're using.
|
43
|
-
|
44
|
-
## General Steps
|
45
|
-
|
46
|
-
The general steps are:
|
47
|
-
|
48
|
-
1. Create a Dockerfile.erb with `<%= @base_image %>`
|
49
|
-
2. Run: `ufo docker base` to generate `dockerfile_variables.yml`
|
50
|
-
3. Run: `ufo docker build` to build a Dockerfile. Note, the `ufo ship` command also builds the Dockerfile.
|
51
|
-
|
52
|
-
Remember when using the Dockerfile.erb, the Dockerfile is generated and overwritten. So you should update the Dockerfile.erb.
|
53
|
-
|
54
|
-
## Build Args
|
55
|
-
|
56
|
-
Why not use [build args](https://www.jeffgeerling.com/blog/2017/use-arg-dockerfile-dynamic-image-specification)?
|
57
|
-
|
58
|
-
Ufo uses a YAML file so users will not have to remember to provide the build arg. It is also easy to update the `dockerfile_variables.yml` with the `ufo docker base` command.
|
59
|
-
|
60
|
-
{% include prev_next.md %}
|
@@ -1,37 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: ECS Network Mode
|
3
|
-
nav_order: 30
|
4
|
-
---
|
5
|
-
|
6
|
-
## Pros and Cons: bridge network mode
|
7
|
-
|
8
|
-
With network bridge mode, the Docker containers of multiple services share the EC2 container instance's security group. So you have less granular control over opening ports for specific services only. For example, let’s say service A and B both are configured use bridge network mode. If you open up port 3000 for service A, it will also open up port 3000 for service B because they use the same security group at the EC2 instance level.
|
9
|
-
|
10
|
-
One advantage of bridge mode is you can use dynamic port mapping and do not have to worry about network card limits.
|
11
|
-
|
12
|
-
## Pros and Cons: awsvpc mode
|
13
|
-
|
14
|
-
With awsvpc network mode, you must consider the limit of ethernet cards for the instance type. If the instance supports ENI Trunking, then this is limit is decently large. However, if the instance does not support ENI Trunking, then the ENI limit is rather small.
|
15
|
-
|
16
|
-
For ENI Trunking Task limits per instance: [Elastic Network Interface Trunking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-eni.html)
|
17
|
-
|
18
|
-
For example, a m5.large instance has a limit of 10 tasks per instance.
|
19
|
-
For EC2 instances that do not support ENI Trunking,
|
20
|
-
the table that lists the limits are under section the aws EC2 docs under [IP Addresses Per Network Interface Per Instance Type](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)
|
21
|
-
|
22
|
-
For example, a t3.small instance has a limit of 3 ethernet cards. This means, at most, you can run 2 ECS tasks on that instance in awsvpc network mode, since one network card is already used by the host.
|
23
|
-
|
24
|
-
In awsvpc mode, each ECS task gets its own network card. The advantage is there’s more granular control of the permissions per ECS service. For example, when service A and B are using awsvpc mode, they can have different security groups associated with them. In this mode, ufo creates a security group and sets up the permissions so the load balancer can talk to the containers. You can also add additional security groups to the `.ufo/settings/network/default.yml` config.
|
25
|
-
|
26
|
-
The following table summarizes the pros and cons:
|
27
|
-
|
28
|
-
Network mode | Pros | Cons
|
29
|
-
--- | ---
|
30
|
-
bridge | The numbers of containers you can run will not be limited due to EC2 instance network cards limits. | Less fine grain security control over security group permissions with multiple ECS services.
|
31
|
-
awsvpc | Fine grain security group permissions for each ECS service. | The number of containers can be limited by the number of network cards the EC2 instance type supports.
|
32
|
-
|
33
|
-
## Recommendation
|
34
|
-
|
35
|
-
It is generally recommended to use awsvpc mode with ENI trunking supported instances. You get the best of both worlds in this situation: a strong security posture as well as container density.
|
36
|
-
|
37
|
-
{% include prev_next.md %}
|
@@ -1,83 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Load Balancer Support
|
3
|
-
nav_order: 28
|
4
|
-
---
|
5
|
-
|
6
|
-
Ufo can automatically create a load balancer and associate it with an ECS service. The options:
|
7
|
-
|
8
|
-
1. Create an ELB.
|
9
|
-
2. Use existing ELB by providing a target group arn.
|
10
|
-
3. Do not create an ELB.
|
11
|
-
|
12
|
-
## Examples
|
13
|
-
|
14
|
-
Here are examples of each of them:
|
15
|
-
|
16
|
-
# Create an ELB
|
17
|
-
ufo ship demo-web --elb=true
|
18
|
-
|
19
|
-
# Use existing target group from pre-created ELB
|
20
|
-
ufo ship demo-web --elb=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/target-name/2378947392743
|
21
|
-
|
22
|
-
# Disable creating ELB
|
23
|
-
ufo ship demo-web --elb=false
|
24
|
-
|
25
|
-
## Web Service Convention
|
26
|
-
|
27
|
-
By convention, if the container name is 'web' in the task definition. Deployments of new services will automatically create a load balancer. So if the task definition looks something like the following then a load balancer will automatically be created:
|
28
|
-
|
29
|
-
```json
|
30
|
-
{
|
31
|
-
"containerDefinitions": [
|
32
|
-
{
|
33
|
-
"name": "web",
|
34
|
-
...
|
35
|
-
```
|
36
|
-
|
37
|
-
The behavior can be disabled with `--elb=false` for web containers.
|
38
|
-
|
39
|
-
ufo ship demo-web --elb=false
|
40
|
-
|
41
|
-
For non-web container the `--elb` option must be explicitly set to `--elb=true` if you want a load balancer to be created.
|
42
|
-
|
43
|
-
## ELB Retained
|
44
|
-
|
45
|
-
Ufo retains the ELB setting. So future `ufo ship` commands will not suddenly remove the load balancer. If you need to change the elb setting, then you need to explicitly set a new `--elb` value.
|
46
|
-
|
47
|
-
Important: Adding and removing load balancers will change the ELB DNS. Please take pre-caution using the elb options. This risk is mitigated if you have configured [Route53 support]({% link _docs/extras/route53-support.md %}).
|
48
|
-
|
49
|
-
## ELB Types: Application and Network
|
50
|
-
|
51
|
-
Ufo supports application and network load balancer types. To specify the type use `--elb-type`. Examples:
|
52
|
-
|
53
|
-
ufo ship demo-web --elb-type network
|
54
|
-
ufo ship demo-web --elb-type application # default
|
55
|
-
|
56
|
-
## ELB Static IP addresses for Network Load Balancers
|
57
|
-
|
58
|
-
Network load balancers support static EIP address. You can create a network load balancer using pre-allocated EIP addresses with the the `--elb-eip-ids` option. Example:
|
59
|
-
|
60
|
-
ufo deploy demo-web --elb-eip-ids eipalloc-a8de9ca1 eipalloc-a8de9ca2
|
61
|
-
|
62
|
-
If you use the `--elb-eip-ids` option, ufo assumes you want an `--elb-type=network` since only network load balancers support EIPs.
|
63
|
-
|
64
|
-
When specifying the `--elb-eip-ids` option, the list length must be the same as the number of subnets configured in your `.ufo/settings/network/default.yml` profile. The `--elb-eip-ids` setting is optional. If you do not specify it, a network load balancer will still be created.
|
65
|
-
|
66
|
-
If you need to change the EIPs for existing services, you might get a "TargetGroup cannot be associated with more than one load balancer" error. To work around this you can set the env variable `UFO_FORCE_TARGET_GROUP=1` which will force a re-creation of the target group.
|
67
|
-
|
68
|
-
UFO_FORCE_TARGET_GROUP=1 ufo deploy demo-web --elb-eip-ids eipalloc-ac226fa4 eipalloc-b5206dbd
|
69
|
-
|
70
|
-
To remove the EIPs but still keep the network load balancer, you can specify either:
|
71
|
-
|
72
|
-
UFO_FORCE_TARGET_GROUP=1 ufo deploy demo-web --elb-eip-ids ' ' --elb-type network
|
73
|
-
UFO_FORCE_TARGET_GROUP=1 ufo deploy demo-web --elb-eip-ids 'empty' --elb-type network
|
74
|
-
|
75
|
-
Note be careful using the UFO_FORCE_TARGET_GROUP option. If the deploy fails, then the CloudFormation stack rolls back and can leave the target group with healthy targets resulting in downtime. If it's an production service and you are changing the load balancer type or eip IPs, it is recommended to instead create a temporary additional ECS service, do a DNS switch, and then remove the old ECS.
|
76
|
-
|
77
|
-
## Load Balancer Implementation
|
78
|
-
|
79
|
-
Under the hood, ufo implements load balancer support with CloudFormation. You can see these resources by visiting the CloudFormation console and clicking on the corresponding stack. Here's an example:
|
80
|
-
|
81
|
-
<img src="/img/docs/cloudformation-resources.png" class="doc-photo" />
|
82
|
-
|
83
|
-
{% include prev_next.md %}
|
@@ -1,79 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Minimal Deploy IAM Policy
|
3
|
-
nav_order: 34
|
4
|
-
---
|
5
|
-
|
6
|
-
The IAM user you use to run the `ufo ship` command needs a minimal set of IAM policies in order to deploy to ECS. Here is a table of the baseline services needed:
|
7
|
-
|
8
|
-
Service | Description
|
9
|
-
--- | ---
|
10
|
-
CloudFormation | To create the CloudFormation stack that then creates the most of the AWS resources that Ufo creates like ECS service and the ELB.
|
11
|
-
EC2 | To describe subnets associated with VPC. Used to configured subnets to use for ECS tasks and ELBs.
|
12
|
-
ECR | To pull and push to the ECR registry. If you're using DockerHub this permission is not required.
|
13
|
-
ECS | To create ECS service, task definitions, etc.
|
14
|
-
ElasticloadBalancing | To create the ELB and related load balancing resoures like Listeners and Target Groups.
|
15
|
-
ElasticloadBalancingV2 | To create the ELB and related load balancing resoures like Listeners and Target Groups.
|
16
|
-
Logs | To write to CloudWatch Logs.
|
17
|
-
Route53 | To create vanity DNS endpoint when using [Route53 setting]({% link _docs/extras/route53-support.md %}).
|
18
|
-
|
19
|
-
## Instructions
|
20
|
-
|
21
|
-
It is recommended that you create an IAM group and associate it with the IAM users that need access to use `ufo ship`. Here are starter instructions and a policy that you can tailor for your needs:
|
22
|
-
|
23
|
-
### Commands Summary
|
24
|
-
|
25
|
-
Here's a summary of the commands:
|
26
|
-
|
27
|
-
aws iam create-group --group-name Ufo
|
28
|
-
cat << 'EOF' > /tmp/ecs-deploy-policy.json
|
29
|
-
{
|
30
|
-
"Version": "2012-10-17",
|
31
|
-
"Statement": [
|
32
|
-
{
|
33
|
-
"Action": [
|
34
|
-
"cloudformation:*",
|
35
|
-
"ec2:*",
|
36
|
-
"ecr:*",
|
37
|
-
"ecs:*",
|
38
|
-
"elasticloadbalancing:*",
|
39
|
-
"elasticloadbalancingv2:*",
|
40
|
-
"logs:*",
|
41
|
-
"route53:*"
|
42
|
-
],
|
43
|
-
"Resource": "*",
|
44
|
-
"Effect": "Allow"
|
45
|
-
},
|
46
|
-
{
|
47
|
-
"Action": [
|
48
|
-
"iam:PassRole"
|
49
|
-
],
|
50
|
-
"Effect": "Allow",
|
51
|
-
"Resource": "*",
|
52
|
-
"Condition": {
|
53
|
-
"StringLike": {
|
54
|
-
"iam:PassedToService": [
|
55
|
-
"ecs-tasks.amazonaws.com"
|
56
|
-
]
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
]
|
61
|
-
}
|
62
|
-
EOF
|
63
|
-
aws iam put-group-policy --group-name Ufo --policy-name UfoPolicy --policy-document file:///tmp/ecs-deploy-policy.json
|
64
|
-
|
65
|
-
Then create a user and add the user to IAM group. Here's an example:
|
66
|
-
|
67
|
-
aws iam create-user --user-name tung
|
68
|
-
aws iam add-user-to-group --user-name tung --group-name Ufo
|
69
|
-
|
70
|
-
## CodeBuild IAM Role
|
71
|
-
|
72
|
-
If you are using CodeBuild to deploy, you'll probably be interested the IAM policy for the CodeBuild project: [CodeBuild IAM Role]({% link _docs/extras/codebuild-iam-role.md %})
|
73
|
-
|
74
|
-
## ECS Task IAM Policy vs User Deploy IAM Policy
|
75
|
-
|
76
|
-
This page refers to your **user** IAM policy used when running `ufo ship`. These are different from the IAM Policies associated with ECS Task. For those iam policies refer to [IAM Roles for Tasks
|
77
|
-
](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).
|
78
|
-
|
79
|
-
{% include prev_next.md %}
|
@@ -1,21 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Notification ARNs
|
3
|
-
categories: extras
|
4
|
-
nav_order: 37
|
5
|
-
---
|
6
|
-
|
7
|
-
You can specific notification arns for CloudFormation stack related events with [configs/settings.yml]({% link _docs/settings.md %}). This may be useful for compliance purposes.
|
8
|
-
|
9
|
-
## Example
|
10
|
-
|
11
|
-
configs/settings.yml
|
12
|
-
|
13
|
-
```yaml
|
14
|
-
base:
|
15
|
-
notification_arns:
|
16
|
-
- arn:aws:sns:us-west-2:112233445566:my-sns-topic1
|
17
|
-
```
|
18
|
-
|
19
|
-
This will set the `notification_arns` option as the CloudFormation stack created by `ufo ship`.
|
20
|
-
|
21
|
-
{% include prev_next.md %}
|