ufo 5.0.7 → 6.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cody/README.md +19 -0
- data/.cody/acceptance/bin/build.sh +90 -0
- data/.cody/acceptance/buildspec.yml +10 -0
- data/.cody/acceptance/project.rb +11 -0
- data/.cody/acceptance/role.rb +28 -0
- data/.cody/shared/script/install/ufo.sh +40 -0
- data/.cody/shared/script/install.sh +5 -0
- data/.github/workflows/main.yml +28 -0
- data/CHANGELOG.md +15 -1
- data/Gemfile +0 -2
- data/README.md +1 -32
- data/lib/templates/docker/Dockerfile +4 -0
- data/lib/templates/helper/%underscore_name%_helper.rb.tt +6 -0
- data/lib/templates/init/.ufo/config/web/base.rb +6 -0
- data/lib/templates/init/.ufo/config/web/dev.rb +6 -0
- data/lib/templates/init/.ufo/config/web/prod.rb +6 -0
- data/lib/templates/init/.ufo/config.rb.tt +39 -0
- data/lib/templates/init/.ufo/resources/iam_roles/execution_role.rb +23 -0
- data/lib/templates/init/.ufo/resources/iam_roles/task_role.rb +20 -0
- data/lib/templates/init/.ufo/resources/task_definitions/web.yml +31 -0
- data/lib/templates/init/.ufo/vars/base.rb +20 -0
- data/lib/templates/init/.ufo/vars/dev.rb +4 -0
- data/lib/templates/init/.ufo/vars/prod.rb +4 -0
- data/lib/ufo/aws_services.rb +118 -0
- data/lib/ufo/booter.rb +27 -0
- data/lib/ufo/cfn/base.rb +7 -0
- data/lib/ufo/cfn/deploy.rb +54 -0
- data/lib/ufo/{stack → cfn/stack}/builder/base.rb +12 -23
- data/lib/ufo/cfn/stack/builder/conditions.rb +25 -0
- data/lib/ufo/{stack → cfn/stack}/builder/outputs.rb +2 -2
- data/lib/ufo/cfn/stack/builder/parameters.rb +34 -0
- data/lib/ufo/cfn/stack/builder/resources/base.rb +4 -0
- data/lib/ufo/cfn/stack/builder/resources/dns.rb +47 -0
- data/lib/ufo/{stack/builder/resources/ecs.rb → cfn/stack/builder/resources/ecs_service.rb} +24 -10
- data/lib/ufo/cfn/stack/builder/resources/elb.rb +35 -0
- data/lib/ufo/cfn/stack/builder/resources/iam_roles/base.rb +32 -0
- data/lib/ufo/cfn/stack/builder/resources/iam_roles/execution_role.rb +4 -0
- data/lib/ufo/cfn/stack/builder/resources/iam_roles/task_role.rb +4 -0
- data/lib/ufo/cfn/stack/builder/resources/listener.rb +65 -0
- data/lib/ufo/cfn/stack/builder/resources/listener_ssl.rb +44 -0
- data/lib/ufo/cfn/stack/builder/resources/scaling/base.rb +5 -0
- data/lib/ufo/cfn/stack/builder/resources/scaling/policy.rb +27 -0
- data/lib/ufo/cfn/stack/builder/resources/scaling/role.rb +33 -0
- data/lib/ufo/cfn/stack/builder/resources/scaling/target.rb +22 -0
- data/lib/ufo/cfn/stack/builder/resources/security_group/base.rb +4 -0
- data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/ecs.rb +4 -4
- data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/ecs_rule.rb +2 -2
- data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/elb.rb +5 -6
- data/lib/ufo/{stack → cfn/stack}/builder/resources/target_group.rb +4 -4
- data/lib/ufo/{stack → cfn/stack}/builder/resources/task_definition/reconstructor.rb +4 -4
- data/lib/ufo/{stack → cfn/stack}/builder/resources/task_definition.rb +4 -4
- data/lib/ufo/cfn/stack/builder/resources.rb +24 -0
- data/lib/ufo/cfn/stack/builder.rb +30 -0
- data/lib/ufo/{stack → cfn/stack}/custom_properties.rb +21 -5
- data/lib/ufo/cfn/stack/params.rb +51 -0
- data/lib/ufo/{stack → cfn/stack}/status.rb +2 -2
- data/lib/ufo/cfn/stack/template.rb +8 -0
- data/lib/ufo/cfn/stack/vars.rb +110 -0
- data/lib/ufo/cfn/stack/vpc.rb +31 -0
- data/lib/ufo/cfn/stack.rb +170 -0
- data/lib/ufo/cli/base.rb +18 -0
- data/lib/ufo/cli/build.rb +30 -0
- data/lib/ufo/cli/cancel.rb +18 -0
- data/lib/ufo/cli/central/update.rb +87 -0
- data/lib/ufo/cli/central.rb +12 -0
- data/lib/ufo/cli/clean.rb +17 -0
- data/lib/ufo/cli/destroy.rb +31 -0
- data/lib/ufo/{docker.rb → cli/docker.rb} +18 -18
- data/lib/ufo/cli/exec.rb +82 -0
- data/lib/ufo/cli/help/central/update.md +20 -0
- data/lib/ufo/{help → cli/help}/completion.md +0 -0
- data/lib/ufo/{help → cli/help}/completion_script.md +0 -0
- data/lib/ufo/cli/help/destroy.md +9 -0
- data/lib/ufo/cli/help/docker/base.md +39 -0
- data/lib/ufo/{help → cli/help}/docker/build.md +9 -9
- data/lib/ufo/{help → cli/help}/docker/clean.md +8 -8
- data/lib/ufo/{help → cli/help}/docker/compile.md +0 -0
- data/lib/ufo/cli/help/docker/name.md +16 -0
- data/lib/ufo/{help → cli/help}/docker/push.md +0 -0
- data/lib/ufo/cli/help/docker.md +6 -0
- data/lib/ufo/{help → cli/help}/help.md +1 -1
- data/lib/ufo/cli/help/init.md +27 -0
- data/lib/ufo/{help → cli/help}/logs.md +5 -4
- data/lib/ufo/cli/help/ps.md +12 -0
- data/lib/ufo/cli/help/releases.md +15 -0
- data/lib/ufo/cli/help/rollback.md +40 -0
- data/lib/ufo/cli/help/scale.md +7 -0
- data/lib/ufo/cli/help/ship.md +41 -0
- data/lib/ufo/cli/help/stop.md +3 -0
- data/lib/ufo/cli/help.rb +62 -0
- data/lib/ufo/{logs.rb → cli/logs.rb} +13 -6
- data/lib/ufo/cli/new/concerns.rb +16 -0
- data/lib/ufo/cli/new/helper.rb +24 -0
- data/lib/ufo/cli/new/init.rb +68 -0
- data/lib/ufo/{sequence.rb → cli/new/sequence.rb} +26 -4
- data/lib/ufo/cli/new.rb +10 -0
- data/lib/ufo/cli/opts.rb +35 -0
- data/lib/ufo/cli/ps/errors.rb +132 -0
- data/lib/ufo/{ps → cli/ps}/task.rb +32 -34
- data/lib/ufo/cli/ps.rb +164 -0
- data/lib/ufo/{releases.rb → cli/releases.rb} +4 -4
- data/lib/ufo/{rollback.rb → cli/rollback.rb} +24 -12
- data/lib/ufo/cli/scale.rb +83 -0
- data/lib/ufo/cli/ship.rb +28 -0
- data/lib/ufo/cli/status.rb +8 -0
- data/lib/ufo/cli/stop.rb +49 -0
- data/lib/ufo/{tasks.rb → cli/tasks.rb} +2 -2
- data/lib/ufo/{upgrade.rb → cli/upgrade.rb} +2 -2
- data/lib/ufo/cli.rb +83 -172
- data/lib/ufo/command.rb +56 -1
- data/lib/ufo/concerns/autoscaling.rb +11 -0
- data/lib/ufo/concerns/names.rb +9 -0
- data/lib/ufo/concerns.rb +26 -0
- data/lib/ufo/config/inits.rb +13 -0
- data/lib/ufo/config.rb +190 -0
- data/lib/ufo/core.rb +32 -44
- data/lib/ufo/docker/builder.rb +44 -40
- data/lib/ufo/docker/cleaner.rb +9 -12
- data/lib/ufo/docker/compiler.rb +10 -4
- data/lib/ufo/docker/concerns.rb +7 -0
- data/lib/ufo/docker/dockerfile.rb +13 -9
- data/lib/ufo/docker/pusher.rb +13 -25
- data/lib/ufo/docker/state.rb +63 -0
- data/lib/ufo/ecr/auth.rb +8 -7
- data/lib/ufo/ecr/cleaner.rb +10 -14
- data/lib/ufo/ext/core/module.rb +31 -0
- data/lib/ufo/ext/core/nil_class.rb +11 -0
- data/lib/ufo/ext.rb +2 -0
- data/lib/ufo/{role → iam_role}/builder.rb +1 -1
- data/lib/ufo/{role → iam_role}/dsl.rb +8 -2
- data/lib/ufo/{role → iam_role}/registry.rb +1 -1
- data/lib/ufo/info.rb +23 -4
- data/lib/ufo/layering/layer.rb +95 -0
- data/lib/ufo/layering.rb +23 -0
- data/lib/ufo/log_group.rb +18 -10
- data/lib/ufo/logger/formatter.rb +13 -0
- data/lib/ufo/logger.rb +32 -0
- data/lib/ufo/names.rb +69 -0
- data/lib/ufo/param.rb +2 -1
- data/lib/ufo/task_definition/builder.rb +7 -0
- data/lib/ufo/task_definition/context.rb +45 -0
- data/lib/ufo/task_definition/erb/base.rb +18 -0
- data/lib/ufo/task_definition/erb/json.rb +28 -0
- data/lib/ufo/task_definition/erb/yaml.rb +25 -0
- data/lib/ufo/task_definition/erb.rb +83 -0
- data/lib/ufo/task_definition/helpers/aws_data_helper.rb +18 -0
- data/lib/ufo/task_definition/helpers/core.rb +50 -0
- data/lib/ufo/task_definition/helpers/ssm/fetcher.rb +39 -0
- data/lib/ufo/task_definition/helpers/ssm.rb +8 -0
- data/lib/ufo/task_definition/helpers/stack_output.rb +23 -0
- data/lib/ufo/{dsl/helper → task_definition/helpers}/vars.rb +40 -19
- data/lib/ufo/task_definition/helpers/vpc.rb +48 -0
- data/lib/ufo/task_definition/helpers.rb +5 -0
- data/lib/ufo/task_definition.rb +19 -0
- data/lib/ufo/upgrade/upgrade3.rb +1 -1
- data/lib/ufo/upgrade/upgrade4.rb +3 -3
- data/lib/ufo/utils/execute.rb +30 -0
- data/lib/ufo/utils/logging.rb +7 -0
- data/lib/ufo/utils/pretty.rb +18 -0
- data/lib/ufo/utils/squeezer.rb +1 -1
- data/lib/ufo/utils/sure.rb +23 -0
- data/lib/ufo/version.rb +1 -1
- data/lib/ufo/yaml/loader.rb +48 -0
- data/lib/ufo/yaml/validator.rb +51 -0
- data/lib/ufo/yaml.rb +13 -0
- data/lib/ufo.rb +12 -2
- data/spec/spec_helper.rb +4 -26
- data/spec/{lib → ufo}/ecr_auth_spec.rb +0 -0
- data/spec/{lib → ufo}/ecr_cleaner_spec.rb +0 -2
- data/spec/{lib/role → ufo/iam_role}/builder_spec.rb +5 -5
- data/spec/{lib/role → ufo/iam_role}/dsl_spec.rb +3 -3
- data/spec/{lib → ufo}/logs_spec.rb +2 -2
- data/ufo.gemspec +9 -3
- metadata +245 -341
- data/.circleci/bin/commit_docs.sh +0 -26
- data/.circleci/config.yml +0 -78
- data/.gitmodules +0 -0
- data/docs/.gitignore +0 -5
- data/docs/CNAME +0 -1
- data/docs/Gemfile +0 -4
- data/docs/LICENSE +0 -21
- data/docs/README.md +0 -20
- data/docs/_config.yml +0 -75
- data/docs/_docs/aws-ecs-task-execution-role.md +0 -28
- data/docs/_docs/conventions.md +0 -47
- data/docs/_docs/extras/codebuild-iam-role.md +0 -46
- data/docs/_docs/extras/dockerfile-erb.md +0 -60
- data/docs/_docs/extras/ecs-network-mode.md +0 -37
- data/docs/_docs/extras/load-balancer.md +0 -83
- data/docs/_docs/extras/minimal-deploy-iam.md +0 -79
- data/docs/_docs/extras/notification-arns.md +0 -21
- data/docs/_docs/extras/redirection-support.md +0 -27
- data/docs/_docs/extras/route53-support.md +0 -27
- data/docs/_docs/extras/security-groups.md +0 -36
- data/docs/_docs/extras/ssl-support.md +0 -20
- data/docs/_docs/faq.md +0 -100
- data/docs/_docs/fargate.md +0 -5
- data/docs/_docs/helpers.md +0 -24
- data/docs/_docs/iam-roles.md +0 -112
- data/docs/_docs/install.md +0 -25
- data/docs/_docs/more/auto-completion.md +0 -24
- data/docs/_docs/more/automated-cleanup.md +0 -14
- data/docs/_docs/more/customize-cloudformation.md +0 -35
- data/docs/_docs/more/migrations.md +0 -25
- data/docs/_docs/more/run-in-pieces.md +0 -30
- data/docs/_docs/more/single-task.md +0 -25
- data/docs/_docs/more/stuck-cloudformation.md +0 -29
- data/docs/_docs/more/why-cloudformation.md +0 -21
- data/docs/_docs/next-steps.md +0 -16
- data/docs/_docs/quick-start-ec2.md +0 -86
- data/docs/_docs/secrets.md +0 -135
- data/docs/_docs/settings/aws_profile.md +0 -36
- data/docs/_docs/settings/cfn.md +0 -12
- data/docs/_docs/settings/cluster.md +0 -66
- data/docs/_docs/settings/manage-security-groups.md +0 -24
- data/docs/_docs/settings/network.md +0 -45
- data/docs/_docs/settings.md +0 -55
- data/docs/_docs/ssl_errors.md +0 -40
- data/docs/_docs/structure.md +0 -41
- data/docs/_docs/tutorial-ufo-docker-build.md +0 -61
- data/docs/_docs/tutorial-ufo-init.md +0 -86
- data/docs/_docs/tutorial-ufo-ship.md +0 -95
- data/docs/_docs/tutorial-ufo-ships.md +0 -38
- data/docs/_docs/tutorial-ufo-tasks-build.md +0 -177
- data/docs/_docs/tutorial.md +0 -14
- data/docs/_docs/ufo-current.md +0 -49
- data/docs/_docs/ufo-env-extra.md +0 -22
- data/docs/_docs/ufo-env.md +0 -46
- data/docs/_docs/ufo-logs.md +0 -49
- data/docs/_docs/ufo-task-params.md +0 -43
- data/docs/_docs/ufo-tasks-register.md +0 -21
- data/docs/_docs/upgrading/upgrade4.5.md +0 -52
- data/docs/_docs/upgrading/upgrade4.md +0 -48
- data/docs/_docs/upgrading/upgrade5.md +0 -19
- data/docs/_docs/upgrading.md +0 -13
- data/docs/_docs/variables.md +0 -55
- data/docs/_includes/about.html +0 -19
- data/docs/_includes/banner/foot.html +0 -2
- data/docs/_includes/banner/head.html +0 -5
- data/docs/_includes/cfn-customize.md +0 -53
- data/docs/_includes/commands.html +0 -80
- data/docs/_includes/contact.html +0 -17
- data/docs/_includes/contact_disqus.html +0 -16
- data/docs/_includes/contact_static.html +0 -17
- data/docs/_includes/content.html +0 -26
- data/docs/_includes/css/bootstrap.min.css +0 -7
- data/docs/_includes/css/main.css +0 -501
- data/docs/_includes/css/quotes.css +0 -102
- data/docs/_includes/css/syntax.css +0 -65
- data/docs/_includes/css/table.css +0 -53
- data/docs/_includes/css/timeline.css +0 -201
- data/docs/_includes/css/ufo.css +0 -218
- data/docs/_includes/edit-on-github.html +0 -11
- data/docs/_includes/example.html +0 -63
- data/docs/_includes/footer.html +0 -44
- data/docs/_includes/google_analytics.html +0 -10
- data/docs/_includes/head.html +0 -32
- data/docs/_includes/header.html +0 -15
- data/docs/_includes/js.html +0 -32
- data/docs/_includes/js_disqus.html +0 -21
- data/docs/_includes/modals.html +0 -40
- data/docs/_includes/nav.html +0 -27
- data/docs/_includes/prev_next.md +0 -19
- data/docs/_includes/quotes.html +0 -19
- data/docs/_includes/reference.md +0 -5
- data/docs/_includes/repo_push_access.md +0 -11
- data/docs/_includes/subnav.html +0 -78
- data/docs/_includes/summary.html +0 -22
- data/docs/_includes/ufo-ship-options.md +0 -12
- data/docs/_includes/uses.html +0 -19
- data/docs/_layouts/default.html +0 -13
- data/docs/_layouts/style.css +0 -6
- data/docs/_reference/ufo-apps.md +0 -37
- data/docs/_reference/ufo-cancel.md +0 -24
- data/docs/_reference/ufo-completion.md +0 -46
- data/docs/_reference/ufo-completion_script.md +0 -27
- data/docs/_reference/ufo-current.md +0 -93
- data/docs/_reference/ufo-deploy.md +0 -76
- data/docs/_reference/ufo-destroy.md +0 -36
- data/docs/_reference/ufo-docker-base.md +0 -71
- data/docs/_reference/ufo-docker-build.md +0 -91
- data/docs/_reference/ufo-docker-clean.md +0 -44
- data/docs/_reference/ufo-docker-compile.md +0 -19
- data/docs/_reference/ufo-docker-help.md +0 -15
- data/docs/_reference/ufo-docker-name.md +0 -37
- data/docs/_reference/ufo-docker-push.md +0 -49
- data/docs/_reference/ufo-docker.md +0 -38
- data/docs/_reference/ufo-init.md +0 -125
- data/docs/_reference/ufo-logs.md +0 -40
- data/docs/_reference/ufo-network-help.md +0 -15
- data/docs/_reference/ufo-network-init.md +0 -39
- data/docs/_reference/ufo-network.md +0 -26
- data/docs/_reference/ufo-ps.md +0 -56
- data/docs/_reference/ufo-releases.md +0 -40
- data/docs/_reference/ufo-resources.md +0 -44
- data/docs/_reference/ufo-rollback.md +0 -61
- data/docs/_reference/ufo-scale.md +0 -50
- data/docs/_reference/ufo-ship.md +0 -129
- data/docs/_reference/ufo-ships.md +0 -68
- data/docs/_reference/ufo-status.md +0 -23
- data/docs/_reference/ufo-stop.md +0 -31
- data/docs/_reference/ufo-task.md +0 -56
- data/docs/_reference/ufo-tasks-build.md +0 -178
- data/docs/_reference/ufo-tasks-help.md +0 -15
- data/docs/_reference/ufo-tasks-register.md +0 -29
- data/docs/_reference/ufo-tasks.md +0 -35
- data/docs/_reference/ufo-upgrade-help.md +0 -15
- data/docs/_reference/ufo-upgrade-v2to3.md +0 -15
- data/docs/_reference/ufo-upgrade-v33to34.md +0 -15
- data/docs/_reference/ufo-upgrade-v3to4.md +0 -27
- data/docs/_reference/ufo-upgrade-v43to45.md +0 -15
- data/docs/_reference/ufo-upgrade.md +0 -29
- data/docs/_reference/ufo-version.md +0 -23
- data/docs/articles.md +0 -14
- data/docs/bin/web +0 -4
- data/docs/css/font-awesome/css/font-awesome.css +0 -1566
- data/docs/css/font-awesome/css/font-awesome.min.css +0 -4
- data/docs/css/font-awesome/fonts/FontAwesome.otf +0 -0
- data/docs/css/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/docs/css/font-awesome/fonts/fontawesome-webfont.svg +0 -504
- data/docs/css/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/docs/css/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/docs/docs.md +0 -29
- data/docs/img/docs/cloudformation-resources.png +0 -0
- data/docs/img/logos/boltops-logo-full.png +0 -0
- data/docs/img/logos/boltops-logo.png +0 -0
- data/docs/img/logos/ufo-logo-2.png +0 -0
- data/docs/img/logos/ufo-logo.png +0 -0
- data/docs/img/logos/ufo-site-header.png +0 -0
- data/docs/img/logos/ufo.jpg +0 -0
- data/docs/img/tutorials/ecs-console-task-definitions.png +0 -0
- data/docs/img/tutorials/ecs-console-ufo-ship.png +0 -0
- data/docs/img/tutorials/ecs-console-ufo-ships.png +0 -0
- data/docs/index.html +0 -10
- data/docs/js/bootstrap.js +0 -2114
- data/docs/js/bootstrap.min.js +0 -6
- data/docs/js/cbpAnimatedHeader.js +0 -44
- data/docs/js/cbpAnimatedHeader.min.js +0 -11
- data/docs/js/classie.js +0 -80
- data/docs/js/contact_me.js +0 -70
- data/docs/js/contact_me_static.js +0 -23
- data/docs/js/freelancer.js +0 -37
- data/docs/js/jqBootstrapValidation.js +0 -912
- data/docs/js/jquery-1.11.0.js +0 -4
- data/docs/js/jquery.easing.min.js +0 -44
- data/docs/js/nav.js +0 -53
- data/docs/quick-start.md +0 -133
- data/docs/reference.md +0 -29
- data/docs/style.css +0 -3
- data/docs/utils/ssl-doctor.rb +0 -89
- data/docs/utils/test-aws-api-access.rb +0 -11
- data/docs/utils/update-cert-chains.sh +0 -11
- data/lib/template/.env +0 -3
- data/lib/template/.secrets +0 -5
- data/lib/template/.ufo/iam_roles/execution_role.rb +0 -7
- data/lib/template/.ufo/iam_roles/task_role.rb +0 -21
- data/lib/template/.ufo/params.yml.tt +0 -27
- data/lib/template/.ufo/settings/cfn/default.yml.tt +0 -72
- data/lib/template/.ufo/settings/network/default.yml.tt +0 -26
- data/lib/template/.ufo/settings.yml.tt +0 -26
- data/lib/template/.ufo/task_definitions.rb.tt +0 -61
- data/lib/template/.ufo/templates/fargate.json.erb +0 -39
- data/lib/template/.ufo/templates/main.json.erb +0 -43
- data/lib/template/.ufo/variables/base.rb.tt +0 -19
- data/lib/template/.ufo/variables/development.rb +0 -8
- data/lib/template/.ufo/variables/production.rb +0 -7
- data/lib/template/Dockerfile +0 -15
- data/lib/template/bin/deploy.tt +0 -7
- data/lib/ufo/apps/cfn_map.rb +0 -70
- data/lib/ufo/apps/cluster.rb +0 -24
- data/lib/ufo/apps/service.rb +0 -56
- data/lib/ufo/apps.rb +0 -56
- data/lib/ufo/aws_service.rb +0 -36
- data/lib/ufo/base.rb +0 -35
- data/lib/ufo/cancel.rb +0 -23
- data/lib/ufo/current.rb +0 -104
- data/lib/ufo/default/settings.yml +0 -24
- data/lib/ufo/default/templates/main.json.erb +0 -39
- data/lib/ufo/destroy.rb +0 -41
- data/lib/ufo/docker/variables.rb +0 -26
- data/lib/ufo/dsl/helper.rb +0 -79
- data/lib/ufo/dsl/outputter.rb +0 -43
- data/lib/ufo/dsl/task_definition.rb +0 -108
- data/lib/ufo/dsl.rb +0 -96
- data/lib/ufo/help/apps.md +0 -12
- data/lib/ufo/help/balancer.md +0 -3
- data/lib/ufo/help/completions.md +0 -16
- data/lib/ufo/help/completions_script.md +0 -1
- data/lib/ufo/help/current.md +0 -65
- data/lib/ufo/help/deploy.md +0 -38
- data/lib/ufo/help/destroy.md +0 -9
- data/lib/ufo/help/docker/base.md +0 -49
- data/lib/ufo/help/docker/name.md +0 -16
- data/lib/ufo/help/docker.md +0 -6
- data/lib/ufo/help/init.md +0 -91
- data/lib/ufo/help/network/init.md +0 -13
- data/lib/ufo/help/ps.md +0 -27
- data/lib/ufo/help/releases.md +0 -16
- data/lib/ufo/help/resources.md +0 -20
- data/lib/ufo/help/rollback.md +0 -35
- data/lib/ufo/help/scale.md +0 -26
- data/lib/ufo/help/ship.md +0 -95
- data/lib/ufo/help/ships.md +0 -35
- data/lib/ufo/help/stop.md +0 -7
- data/lib/ufo/help/task.md +0 -27
- data/lib/ufo/help/tasks/build.md +0 -158
- data/lib/ufo/help/tasks/register.md +0 -14
- data/lib/ufo/help/tasks.md +0 -7
- data/lib/ufo/help/upgrade/v3to4.md +0 -3
- data/lib/ufo/help.rb +0 -9
- data/lib/ufo/init.rb +0 -119
- data/lib/ufo/network/fetch.rb +0 -48
- data/lib/ufo/network/helper.rb +0 -23
- data/lib/ufo/network/init.rb +0 -26
- data/lib/ufo/network.rb +0 -21
- data/lib/ufo/ps.rb +0 -129
- data/lib/ufo/scale.rb +0 -28
- data/lib/ufo/setting/profile.rb +0 -44
- data/lib/ufo/setting/security_groups.rb +0 -22
- data/lib/ufo/setting.rb +0 -75
- data/lib/ufo/settings.rb +0 -20
- data/lib/ufo/ship.rb +0 -103
- data/lib/ufo/stack/builder/conditions.rb +0 -23
- data/lib/ufo/stack/builder/parameters.rb +0 -45
- data/lib/ufo/stack/builder/resources/base.rb +0 -4
- data/lib/ufo/stack/builder/resources/dns.rb +0 -17
- data/lib/ufo/stack/builder/resources/elb.rb +0 -45
- data/lib/ufo/stack/builder/resources/listener.rb +0 -42
- data/lib/ufo/stack/builder/resources/listener_ssl.rb +0 -16
- data/lib/ufo/stack/builder/resources/roles/base.rb +0 -22
- data/lib/ufo/stack/builder/resources/roles/execution_role.rb +0 -4
- data/lib/ufo/stack/builder/resources/roles/task_role.rb +0 -4
- data/lib/ufo/stack/builder/resources/security_group/base.rb +0 -4
- data/lib/ufo/stack/builder/resources.rb +0 -20
- data/lib/ufo/stack/builder.rb +0 -26
- data/lib/ufo/stack/context.rb +0 -253
- data/lib/ufo/stack/helper.rb +0 -55
- data/lib/ufo/stack/template_body.rb +0 -13
- data/lib/ufo/stack.rb +0 -213
- data/lib/ufo/status.rb +0 -56
- data/lib/ufo/stop.rb +0 -49
- data/lib/ufo/task.rb +0 -225
- data/lib/ufo/tasks/builder.rb +0 -40
- data/lib/ufo/tasks/register.rb +0 -90
- data/lib/ufo/template_scope.rb +0 -57
- data/lib/ufo/util.rb +0 -69
- data/spec/lib/apps_spec.rb +0 -20
- data/spec/lib/builder_spec.rb +0 -23
- data/spec/lib/cli_spec.rb +0 -73
- data/spec/lib/completion_spec.rb +0 -18
- data/spec/lib/ps_spec.rb +0 -14
- data/spec/lib/register_spec.rb +0 -49
- data/spec/lib/setting_spec.rb +0 -18
- data/spec/lib/ship_spec.rb +0 -46
- data/spec/lib/stack/status_spec.rb +0 -76
- data/spec/lib/stop_spec.rb +0 -13
- data/spec/lib/task_spec.rb +0 -54
@@ -0,0 +1,39 @@
|
|
1
|
+
module Ufo::TaskDefinition::Helpers::Ssm
|
2
|
+
class Fetcher
|
3
|
+
include Ufo::AwsServices
|
4
|
+
include Ufo::Utils::Logging
|
5
|
+
include Ufo::Concerns::Names
|
6
|
+
|
7
|
+
def initialize(options={})
|
8
|
+
@options = options
|
9
|
+
@base64 = options[:base64]
|
10
|
+
end
|
11
|
+
|
12
|
+
def fetch(name)
|
13
|
+
name = names.expansion(name, dasherize: false)
|
14
|
+
parameter = fetch_parameter(name)
|
15
|
+
return unless parameter
|
16
|
+
value = parameter.value
|
17
|
+
value = Base64.strict_encode64(value).strip if base64?(parameter.type)
|
18
|
+
value
|
19
|
+
end
|
20
|
+
|
21
|
+
def base64?(type)
|
22
|
+
if @base64.nil?
|
23
|
+
type == "SecureString"
|
24
|
+
else
|
25
|
+
@base64
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Note: Cannot use logger if since if ssm helper is used in config it'll cause an infinite loop
|
30
|
+
def fetch_parameter(name)
|
31
|
+
resp = ssm_client.get_parameter(name: name, with_decryption: true)
|
32
|
+
resp.parameter
|
33
|
+
rescue Aws::SSM::Errors::ParameterNotFound => e
|
34
|
+
puts "WARN: name #{name} not found".color(:yellow)
|
35
|
+
puts e.message
|
36
|
+
nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Ufo::TaskDefinition::Helpers
|
2
|
+
module StackOutput
|
3
|
+
include Ufo::AwsServices
|
4
|
+
include Ufo::Concerns::Names
|
5
|
+
|
6
|
+
def stack_output(name)
|
7
|
+
stack_name, output_key = name.split(".")
|
8
|
+
stack_name = names.expansion(stack_name)
|
9
|
+
resp = cloudformation.describe_stacks(stack_name: stack_name)
|
10
|
+
stack = resp.stacks.first
|
11
|
+
if stack
|
12
|
+
o = stack.outputs.detect { |h| h.output_key == output_key }
|
13
|
+
end
|
14
|
+
|
15
|
+
if o
|
16
|
+
o.output_value
|
17
|
+
else
|
18
|
+
logger.info "WARN: NOT FOUND: output #{key} for stack #{stack_name}"
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,8 +1,11 @@
|
|
1
1
|
require "aws_data"
|
2
2
|
|
3
|
-
|
3
|
+
module Ufo::TaskDefinition::Helpers
|
4
4
|
class Vars
|
5
5
|
extend Memoist
|
6
|
+
include AwsDataHelper
|
7
|
+
include Ufo::Concerns::Names
|
8
|
+
include Ufo::Utils::Pretty
|
6
9
|
|
7
10
|
def initialize(options={})
|
8
11
|
# use either file or text. text takes higher precedence
|
@@ -17,7 +20,7 @@ class Ufo::DSL::Helper
|
|
17
20
|
def read(path)
|
18
21
|
full_path = "#{Ufo.root}/#{path}"
|
19
22
|
unless File.exist?(full_path)
|
20
|
-
puts "The #{full_path} env file could not be found. Are you sure it exists?"
|
23
|
+
puts "The #{pretty_path(full_path)} env file could not be found. Are you sure it exists?"
|
21
24
|
exit 1
|
22
25
|
end
|
23
26
|
IO.read(full_path)
|
@@ -41,24 +44,55 @@ class Ufo::DSL::Helper
|
|
41
44
|
secrets = env
|
42
45
|
secrets.map do |item|
|
43
46
|
value = item.delete(:value)
|
44
|
-
item[:
|
47
|
+
arn = normalize_to_arn(item[:name], value)
|
48
|
+
value = expansion(arn)
|
49
|
+
value = value.sub('parameter//','parameter/') # auto fix accidental leading slash for user
|
50
|
+
item[:valueFrom] = value
|
45
51
|
end
|
46
52
|
secrets
|
47
53
|
end
|
48
54
|
|
49
|
-
def
|
55
|
+
def normalize_to_arn(name, value)
|
50
56
|
case value
|
51
57
|
when /^ssm:/i
|
52
58
|
value.sub(/^ssm:/i, "arn:aws:ssm:#{region}:#{account}:parameter/")
|
53
59
|
when /^secretsmanager:/i
|
54
60
|
value.sub(/^secretsmanager:/i, "arn:aws:secretsmanager:#{region}:#{account}:secret:")
|
61
|
+
when '' # blank string will mean use convention
|
62
|
+
conventional_pattern(name, value)
|
55
63
|
else
|
56
64
|
value # assume full arn has been passed
|
57
65
|
end
|
58
66
|
end
|
59
67
|
|
60
|
-
|
61
|
-
|
68
|
+
# arn:aws:ssm:us-west-2:111111111111:parameter/demo/dev/DB-NAME
|
69
|
+
# arn:aws:ssm:us-west-2:111111111111:parameter/demo/dev/DB-NAME
|
70
|
+
def expansion(arn)
|
71
|
+
# performance improvement only run names.expansion on the name portion
|
72
|
+
md = arn.match(/(.*:)(parameter\/|secret:)(.*)/)
|
73
|
+
prefix, type, name = md[1], md[2], md[3]
|
74
|
+
expanded_name = names.expansion(name, dasherize: false) # dasherize: false. dont turn SECRET_NAME => SECRET-NAME
|
75
|
+
"#{prefix}#{type}#{expanded_name}"
|
76
|
+
end
|
77
|
+
|
78
|
+
# Examples with config.secrets.provider = "ssm"
|
79
|
+
#
|
80
|
+
# .secrets
|
81
|
+
#
|
82
|
+
# DB_NAME
|
83
|
+
#
|
84
|
+
# Results
|
85
|
+
#
|
86
|
+
# DB_NAME=:APP/:ENV/:SECRET_NAME # expansion will use => demo/dev/DB_NAME
|
87
|
+
#
|
88
|
+
def conventional_pattern(name, value)
|
89
|
+
secrets = Ufo.config.secrets
|
90
|
+
provider = secrets.provider # ssm or secretsmanager
|
91
|
+
namespace = provider == "ssm" ? "parameter/" : "secret:"
|
92
|
+
pattern = secrets.pattern[provider] # IE: Ufo.config.secrets.pattern.ssm => :APP/:ENV/:SECRET_NAME
|
93
|
+
# replace :SECRET_NAME since names expand doesnt know how to nor do we want to add logic there
|
94
|
+
pattern = pattern.sub(':SECRET_NAME', name)
|
95
|
+
"arn:aws:#{provider}:#{region}:#{account}:#{namespace}#{pattern}"
|
62
96
|
end
|
63
97
|
|
64
98
|
def remove_surrounding_quotes(s)
|
@@ -80,18 +114,5 @@ class Ufo::DSL::Helper
|
|
80
114
|
# filter out empty lines
|
81
115
|
lines = lines.reject { |l| l.strip.empty? }
|
82
116
|
end
|
83
|
-
|
84
|
-
def aws_data
|
85
|
-
AwsData.new
|
86
|
-
end
|
87
|
-
memoize :aws_data
|
88
|
-
|
89
|
-
def region
|
90
|
-
aws_data.region
|
91
|
-
end
|
92
|
-
|
93
|
-
def account
|
94
|
-
aws_data.account
|
95
|
-
end
|
96
117
|
end
|
97
118
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Ufo::TaskDefinition::Helpers
|
2
|
+
module Vpc
|
3
|
+
extend Memoist
|
4
|
+
include Ufo::AwsServices
|
5
|
+
|
6
|
+
def default_vpc
|
7
|
+
resp = ec2.describe_vpcs(filters: [name: "isDefault", values: ["true"]])
|
8
|
+
vpc = resp.vpcs.first
|
9
|
+
if vpc
|
10
|
+
vpc.vpc_id
|
11
|
+
else
|
12
|
+
logger.error "No default vpc found".color(:red)
|
13
|
+
logger.error <<~EOL
|
14
|
+
Please configure the `config.vpc` settings.
|
15
|
+
|
16
|
+
Docs: https://ufoships.com/config/vpc/
|
17
|
+
|
18
|
+
EOL
|
19
|
+
exit 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
memoize :default_vpc
|
23
|
+
|
24
|
+
def subnets_for(vpc_id)
|
25
|
+
resp = ec2.describe_subnets(filters: [name: "vpc-id", values: [vpc_id]])
|
26
|
+
subnets = resp.subnets
|
27
|
+
subnets.map(&:subnet_id)
|
28
|
+
end
|
29
|
+
|
30
|
+
def default_subnets
|
31
|
+
if default_vpc.nil?
|
32
|
+
logger.error "ERROR: no default subnets because no default vpc found".color(:red)
|
33
|
+
exit 1
|
34
|
+
end
|
35
|
+
resp = ec2.describe_subnets(filters: [name: "vpc-id", values: [default_vpc]])
|
36
|
+
subnets = resp.subnets
|
37
|
+
subnets.map(&:subnet_id)
|
38
|
+
end
|
39
|
+
memoize :default_subnets
|
40
|
+
|
41
|
+
def key_pairs(regexp=nil)
|
42
|
+
resp = ec2.describe_key_pairs
|
43
|
+
key_names = resp.key_pairs.map(&:key_name)
|
44
|
+
key_names.select! { |k| k =~ regexp } if regexp
|
45
|
+
key_names
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Ufo
|
2
|
+
class TaskDefinition
|
3
|
+
extend Memoist
|
4
|
+
include Ufo::Concerns # for names
|
5
|
+
|
6
|
+
attr_reader :name, :role
|
7
|
+
def initialize(options={})
|
8
|
+
@options = options
|
9
|
+
@role = Ufo.role
|
10
|
+
@name = names.task_definition # IE: :APP-:ROLE-:ENV => demo-web-dev
|
11
|
+
end
|
12
|
+
|
13
|
+
def path
|
14
|
+
expr = "#{Ufo.root}/.ufo/resources/task_definitions/{#{@role},web,default}.{json,yml}"
|
15
|
+
Dir.glob(expr).first
|
16
|
+
end
|
17
|
+
memoize :path
|
18
|
+
end
|
19
|
+
end
|
data/lib/ufo/upgrade/upgrade3.rb
CHANGED
data/lib/ufo/upgrade/upgrade4.rb
CHANGED
@@ -36,8 +36,8 @@ class Ufo::Upgrade
|
|
36
36
|
private
|
37
37
|
def update_task_definitions
|
38
38
|
text = <<-EOL
|
39
|
-
# HINT: shows how Ufo.
|
40
|
-
# awslogs_group: ["ecs/TASK_DEFINITION_NAME", Ufo.
|
39
|
+
# HINT: shows how Ufo.extra can to create different log groups
|
40
|
+
# awslogs_group: ["ecs/TASK_DEFINITION_NAME", Ufo.extra].compact.join('-'),
|
41
41
|
EOL
|
42
42
|
insert_into_file ".ufo/task_definitions.rb", text, :before => / awslogs_group:/
|
43
43
|
end
|
@@ -112,7 +112,7 @@ EOL
|
|
112
112
|
def upsert_gitignore
|
113
113
|
text =<<-EOL
|
114
114
|
.ufo/current
|
115
|
-
.ufo/
|
115
|
+
.ufo/tmp/state
|
116
116
|
.ufo/log
|
117
117
|
.ufo/output
|
118
118
|
EOL
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Ufo::Utils
|
2
|
+
module Execute
|
3
|
+
def execute(command, options={})
|
4
|
+
log = options[:log]
|
5
|
+
if log
|
6
|
+
command += " >> #{log}"
|
7
|
+
logger.info "=> #{command}"
|
8
|
+
FileUtils.mkdir_p(File.dirname(log))
|
9
|
+
File.open(log, 'a') { |f| f.puts "=> #{command}" }
|
10
|
+
out = `#{command}`
|
11
|
+
success = $?.success?
|
12
|
+
unless success
|
13
|
+
logger.error out
|
14
|
+
exit 1
|
15
|
+
end
|
16
|
+
out
|
17
|
+
else
|
18
|
+
logger.info "=> #{command}"
|
19
|
+
system(command)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# TODO: remove these other metohds
|
24
|
+
# Custom user params from .ufo/params.yml
|
25
|
+
# Param keys are symbols for the aws-sdk calls.
|
26
|
+
def user_params
|
27
|
+
@user_params ||= Param.new.data
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Ufo::Utils
|
2
|
+
module Pretty
|
3
|
+
def pretty_path(path)
|
4
|
+
path.sub("#{Ufo.root}/",'').sub(/^\.\//,'')
|
5
|
+
end
|
6
|
+
|
7
|
+
# http://stackoverflow.com/questions/4175733/convert-duration-to-hoursminutesseconds-or-similar-in-rails-3-or-ruby
|
8
|
+
def pretty_time(total_seconds)
|
9
|
+
minutes = (total_seconds / 60) % 60
|
10
|
+
seconds = total_seconds % 60
|
11
|
+
if total_seconds < 60
|
12
|
+
"#{seconds.to_i}s"
|
13
|
+
else
|
14
|
+
"#{minutes.to_i}m #{seconds.to_i}s"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/ufo/utils/squeezer.rb
CHANGED
@@ -13,7 +13,7 @@ module Ufo::Utils
|
|
13
13
|
when Hash
|
14
14
|
data.each_with_object({}) do |(k,v), squeezed|
|
15
15
|
# only remove nil and empty Array values within Hash structures
|
16
|
-
squeezed[k] = squeeze(v) unless v.nil? || v.is_a?(Array) && v.empty?
|
16
|
+
squeezed[k] = squeeze(v) unless v.nil? # || v.is_a?(Array) && v.empty?
|
17
17
|
squeezed
|
18
18
|
end
|
19
19
|
else
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Ufo::Utils
|
2
|
+
module Sure
|
3
|
+
def sure?(message=nil)
|
4
|
+
confirm = 'Are you sure?'
|
5
|
+
if @options[:yes]
|
6
|
+
yes = 'y'
|
7
|
+
else
|
8
|
+
out = if message
|
9
|
+
"#{message}\n#{confirm} (y/N) "
|
10
|
+
else
|
11
|
+
"#{confirm} (y/N) "
|
12
|
+
end
|
13
|
+
print out
|
14
|
+
yes = $stdin.gets
|
15
|
+
end
|
16
|
+
|
17
|
+
unless yes =~ /^y/
|
18
|
+
puts "Whew! Exiting."
|
19
|
+
exit 0
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/ufo/version.rb
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
require "yaml"
|
2
|
+
|
3
|
+
class Ufo::Yaml
|
4
|
+
class Loader
|
5
|
+
def initialize(text)
|
6
|
+
@text = text
|
7
|
+
end
|
8
|
+
|
9
|
+
def load
|
10
|
+
add_domain_types!
|
11
|
+
YAML.load(@text)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
def add_domain_types!
|
16
|
+
intrinsic_functions.each do |name|
|
17
|
+
YAML.add_domain_type('', name) do |type,val|
|
18
|
+
key = type.split('::').last
|
19
|
+
key = "Fn::" + key unless name == 'Ref'
|
20
|
+
{ key => val }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def intrinsic_functions
|
26
|
+
%w[
|
27
|
+
And
|
28
|
+
Base64
|
29
|
+
Cidr
|
30
|
+
Equals
|
31
|
+
FindInMap
|
32
|
+
GetAtt
|
33
|
+
GetAZs
|
34
|
+
If
|
35
|
+
If
|
36
|
+
ImportValue
|
37
|
+
Join
|
38
|
+
Not
|
39
|
+
Or
|
40
|
+
Ref
|
41
|
+
Select
|
42
|
+
Split
|
43
|
+
Sub
|
44
|
+
Transform
|
45
|
+
]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
class Ufo::Yaml
|
2
|
+
class Validator
|
3
|
+
def initialize(path)
|
4
|
+
@path = path
|
5
|
+
end
|
6
|
+
|
7
|
+
def validate!
|
8
|
+
validate_yaml(@path)
|
9
|
+
end
|
10
|
+
|
11
|
+
def validate_yaml(path)
|
12
|
+
text = IO.read(path)
|
13
|
+
begin
|
14
|
+
YAML.load(text)
|
15
|
+
rescue Psych::SyntaxError => e
|
16
|
+
handle_yaml_syntax_error(e, path)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def handle_yaml_syntax_error(e, path)
|
21
|
+
io = StringIO.new
|
22
|
+
io.puts "Invalid yaml. Output written for debugging: #{path}".color(:red)
|
23
|
+
io.puts "ERROR: #{e.message}".color(:red)
|
24
|
+
|
25
|
+
# Grab line info. Example error:
|
26
|
+
# ERROR: (<unknown>): could not find expected ':' while scanning a simple key at line 2 column 1
|
27
|
+
md = e.message.match(/at line (\d+) column (\d+)/)
|
28
|
+
line = md[1].to_i
|
29
|
+
|
30
|
+
lines = IO.read(path).split("\n")
|
31
|
+
context = 5 # lines of context
|
32
|
+
top, bottom = [line-context-1, 0].max, line+context-1
|
33
|
+
spacing = lines.size.to_s.size
|
34
|
+
lines[top..bottom].each_with_index do |line_content, index|
|
35
|
+
line_number = top+index+1
|
36
|
+
if line_number == line
|
37
|
+
io.printf("%#{spacing}d %s\n".color(:red), line_number, line_content)
|
38
|
+
else
|
39
|
+
io.printf("%#{spacing}d %s\n", line_number, line_content)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
if ENV['LONO_TEST']
|
44
|
+
io.string
|
45
|
+
else
|
46
|
+
puts io.string
|
47
|
+
exit 1
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/ufo/yaml.rb
ADDED
data/lib/ufo.rb
CHANGED
@@ -1,20 +1,30 @@
|
|
1
1
|
$stdout.sync = true unless ENV["UFO_STDOUT_SYNC"] == "0"
|
2
2
|
|
3
|
-
$:.unshift(File.expand_path('../', __FILE__))
|
4
3
|
require 'active_support'
|
5
4
|
require 'active_support/core_ext/class'
|
5
|
+
require 'active_support/core_ext/hash'
|
6
|
+
require 'active_support/core_ext/module/delegation'
|
7
|
+
require 'cli-format'
|
6
8
|
require 'deep_merge/rails_compat'
|
9
|
+
require 'dsl_evaluator'
|
7
10
|
require 'fileutils'
|
8
11
|
require 'memoist'
|
9
12
|
require 'rainbow/ext/string'
|
10
13
|
require 'render_me_pretty'
|
14
|
+
require 'ufo/ext'
|
11
15
|
require 'ufo/version'
|
16
|
+
require 'yaml'
|
12
17
|
|
13
18
|
require "ufo/autoloader"
|
14
19
|
Ufo::Autoloader.setup
|
15
20
|
|
16
21
|
module Ufo
|
22
|
+
class UfoError < RuntimeError; end
|
23
|
+
class ShipmentOverridden < UfoError; end
|
24
|
+
|
17
25
|
extend Core
|
18
26
|
end
|
19
27
|
|
20
|
-
|
28
|
+
CliFormat.default_format = "table"
|
29
|
+
|
30
|
+
Ufo::Booter.boot
|
data/spec/spec_helper.rb
CHANGED
@@ -1,42 +1,20 @@
|
|
1
|
-
ENV["
|
1
|
+
ENV["UFO_TEST"] = "1"
|
2
2
|
# Ensures aws api never called. Fixture home does not contain ~/.aws/credentials
|
3
3
|
ENV['HOME'] = "spec/fixtures/home"
|
4
4
|
|
5
|
-
# CodeClimate test coverage: https://docs.codeclimate.com/docs/configuring-test-coverage
|
6
|
-
# require 'simplecov'
|
7
|
-
# SimpleCov.start
|
8
|
-
|
9
5
|
require "pp"
|
10
6
|
require "byebug"
|
11
7
|
root = File.expand_path("../", File.dirname(__FILE__))
|
12
8
|
require "#{root}/lib/ufo"
|
13
9
|
|
14
|
-
ENV['UFO_ROOT'] = "tmp/project"
|
15
|
-
|
16
10
|
module Helpers
|
17
|
-
def create_ufo_project
|
18
|
-
FileUtils.rm_rf(Ufo.root)
|
19
|
-
execute("exe/ufo init --app demo --image tongueroo/demo-ufo")
|
20
|
-
create_test_settings
|
21
|
-
end
|
22
|
-
|
23
|
-
# modify the generated settings so we can spec the settings themselves
|
24
|
-
def create_test_settings
|
25
|
-
FileUtils.cp("spec/fixtures/settings.yml", "#{Ufo.root}/.ufo/settings.yml")
|
26
|
-
end
|
27
|
-
|
28
11
|
def execute(cmd)
|
29
|
-
|
12
|
+
show_command = ENV['DEBUG'] || ENV['SHOW_COMMAND']
|
13
|
+
puts "Running: #{cmd}" if show_command
|
30
14
|
out = `#{cmd}`
|
31
|
-
puts out if show_command
|
15
|
+
puts out if show_command
|
32
16
|
out
|
33
17
|
end
|
34
|
-
|
35
|
-
# Added SHOW_COMMAND because DEBUG is also used by other libraries like
|
36
|
-
# bundler and it shows its internal debugging logging also.
|
37
|
-
def show_command?
|
38
|
-
ENV['DEBUG'] || ENV['SHOW_COMMAND']
|
39
|
-
end
|
40
18
|
end
|
41
19
|
|
42
20
|
RSpec.configure do |c|
|
File without changes
|
@@ -3,9 +3,7 @@ describe Ufo::Ecr::Cleaner do
|
|
3
3
|
let(:repo_domain) { "123456789.dkr.ecr.us-east-1.amazonaws.com" }
|
4
4
|
let(:cleaner) do
|
5
5
|
Ufo::Ecr::Cleaner.new(docker_image_name,
|
6
|
-
project_root: "spec/fixtures/hi",
|
7
6
|
ecr_keep: 3, # using 3 to test, default is 30
|
8
|
-
mute: true
|
9
7
|
)
|
10
8
|
end
|
11
9
|
before(:each) do
|
@@ -1,25 +1,25 @@
|
|
1
|
-
describe Ufo::
|
1
|
+
describe Ufo::IamRole::Builder do
|
2
2
|
let(:builder) { described_class.new(role_type) }
|
3
3
|
let(:role_type) { "task_role" }
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
Ufo::
|
6
|
+
Ufo::IamRole::Registry.register_policy("task_role",
|
7
7
|
"AmazonS3ReadOnlyAccess",
|
8
8
|
{:Action=>["s3:Get*", "s3:List*"], :Effect=>"Allow", :Resource=>"*"}
|
9
9
|
)
|
10
|
-
Ufo::
|
10
|
+
Ufo::IamRole::Registry.register_policy("task_role",
|
11
11
|
"CloudwatchWrite",
|
12
12
|
{:Action=>["cloudwatch:PutMetricData"], :Effect=>"Allow", :Resource=>"*"}
|
13
13
|
)
|
14
14
|
# Called twice on purpose to show that duplicated items in the set wont create doubles.
|
15
15
|
# This allows the DSL evaluate to be ran multiple times.
|
16
|
-
Ufo::
|
16
|
+
Ufo::IamRole::Registry.register_policy("task_role",
|
17
17
|
"CloudwatchWrite",
|
18
18
|
{:Action=>["cloudwatch:PutMetricData"], :Effect=>"Allow", :Resource=>"*"}
|
19
19
|
)
|
20
20
|
|
21
21
|
|
22
|
-
Ufo::
|
22
|
+
Ufo::IamRole::Registry.register_managed_policy("task_role",
|
23
23
|
"AmazonS3ReadOnlyAccess", "AmazonEC2ReadOnlyAccess"
|
24
24
|
)
|
25
25
|
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
describe Ufo::
|
1
|
+
describe Ufo::IamRole::DSL do
|
2
2
|
let(:dsl) { described_class.new(path) }
|
3
3
|
let(:path) { "spec/fixtures/iam_roles/task_role.rb" }
|
4
4
|
|
5
5
|
context "evaluate" do
|
6
6
|
it "registers policies from role DSL" do
|
7
7
|
dsl.evaluate
|
8
|
-
expect(Ufo::
|
9
|
-
expect(Ufo::
|
8
|
+
expect(Ufo::IamRole::Registry.policies).not_to be_empty
|
9
|
+
expect(Ufo::IamRole::Registry.managed_policies).not_to be_empty
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
describe Ufo::Logs do
|
1
|
+
describe Ufo::CLI::Logs do
|
2
2
|
let(:logs) do
|
3
|
-
logs = Ufo::Logs.new
|
3
|
+
logs = Ufo::CLI::Logs.new
|
4
4
|
allow(logs).to receive(:exit).and_return(null)
|
5
5
|
allow(logs).to receive(:info).and_return(null)
|
6
6
|
allow(logs).to receive(:ecs).and_return(ecs)
|
data/ufo.gemspec
CHANGED
@@ -19,21 +19,27 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "aws-logs"
|
22
|
-
spec.add_dependency "aws-mfa-secure", "
|
22
|
+
spec.add_dependency "aws-mfa-secure", ">= 0.4.3"
|
23
|
+
spec.add_dependency "aws-sdk-applicationautoscaling"
|
23
24
|
spec.add_dependency "aws-sdk-cloudformation"
|
24
25
|
spec.add_dependency "aws-sdk-cloudwatchlogs"
|
25
26
|
spec.add_dependency "aws-sdk-ec2"
|
26
27
|
spec.add_dependency "aws-sdk-ecr"
|
27
28
|
spec.add_dependency "aws-sdk-ecs"
|
29
|
+
spec.add_dependency "aws-sdk-ssm"
|
28
30
|
spec.add_dependency "aws-sdk-elasticloadbalancingv2"
|
29
31
|
spec.add_dependency "aws_data"
|
30
|
-
spec.add_dependency "
|
32
|
+
spec.add_dependency "cfn-status"
|
33
|
+
spec.add_dependency "cli-format"
|
31
34
|
spec.add_dependency "deep_merge"
|
35
|
+
spec.add_dependency "dsl_evaluator", ">= 0.2.5" # for DslEvaluator.print_code
|
32
36
|
spec.add_dependency "memoist"
|
33
37
|
spec.add_dependency "plissken"
|
38
|
+
spec.add_dependency "rainbow"
|
34
39
|
spec.add_dependency "render_me_pretty"
|
35
|
-
spec.add_dependency "
|
40
|
+
spec.add_dependency "rexml"
|
36
41
|
spec.add_dependency "thor"
|
42
|
+
spec.add_dependency "tty-screen"
|
37
43
|
spec.add_dependency "zeitwerk"
|
38
44
|
|
39
45
|
spec.add_development_dependency "bundler"
|