r10k 3.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitattributes +1 -0
- data/.github/pull_request_template.md +1 -0
- data/.github/workflows/docker.yml +56 -0
- data/.github/workflows/release.yml +36 -0
- data/.gitignore +9 -0
- data/.travis.yml +45 -0
- data/CHANGELOG.mkd +1759 -0
- data/CODEOWNERS +2 -0
- data/CONTRIBUTING.mkd +105 -0
- data/Gemfile +15 -0
- data/LICENSE +14 -0
- data/README.mkd +118 -0
- data/Rakefile +3 -0
- data/azure-pipelines.yml +86 -0
- data/bin/r10k +17 -0
- data/doc/common-patterns.mkd +44 -0
- data/doc/dynamic-environments.mkd +31 -0
- data/doc/dynamic-environments/configuration.mkd +669 -0
- data/doc/dynamic-environments/git-environments.mkd +75 -0
- data/doc/dynamic-environments/introduction.mkd +69 -0
- data/doc/dynamic-environments/master-configuration.mkd +40 -0
- data/doc/dynamic-environments/quickstart.mkd +201 -0
- data/doc/dynamic-environments/svn-environments.mkd +45 -0
- data/doc/dynamic-environments/usage.mkd +132 -0
- data/doc/dynamic-environments/workflow-guide.mkd +247 -0
- data/doc/faq.mkd +164 -0
- data/doc/git/cloning-and-mirroring.mkd +60 -0
- data/doc/git/providers.mkd +111 -0
- data/doc/puppetfile.mkd +309 -0
- data/doc/updating-your-puppetfile.mkd +38 -0
- data/docker/.gitignore +1 -0
- data/docker/.rspec +4 -0
- data/docker/Gemfile +11 -0
- data/docker/Makefile +89 -0
- data/docker/README.md +28 -0
- data/docker/r10k/Dockerfile +67 -0
- data/docker/r10k/adduser.sh +13 -0
- data/docker/r10k/docker-entrypoint.d/10-analytics.sh +30 -0
- data/docker/r10k/docker-entrypoint.sh +11 -0
- data/docker/r10k/release.Dockerfile +54 -0
- data/docker/spec/dockerfile_spec.rb +43 -0
- data/docker/spec/fixtures/Puppetfile +2 -0
- data/integration/Gemfile +19 -0
- data/integration/README.mkd +29 -0
- data/integration/Rakefile +77 -0
- data/integration/component/pre-suite/05_install_dev_r10k.rb +12 -0
- data/integration/files/README.mkd +4 -0
- data/integration/files/hiera.yaml +8 -0
- data/integration/files/modules/helloworld/manifests/init.pp +3 -0
- data/integration/files/modules/hieratest/manifests/init.pp +3 -0
- data/integration/files/modules/unicode/files/pretend_unicode +1 -0
- data/integration/files/modules/unicode/manifests/init.pp +6 -0
- data/integration/files/pre-suite/git_config.pp.erb +19 -0
- data/integration/files/pre-suite/prod_env.config +3 -0
- data/integration/files/r10k_conf.yaml.erb +9 -0
- data/integration/lib/README.mkd +4 -0
- data/integration/lib/git_utils.rb +205 -0
- data/integration/lib/master_manipulator.rb +205 -0
- data/integration/lib/r10k_utils.rb +222 -0
- data/integration/manifests/README.mkd +4 -0
- data/integration/pre-suite/00_pe_install.rb +6 -0
- data/integration/pre-suite/10_git_config.rb +48 -0
- data/integration/pre-suite/20_pe_r10k.rb +55 -0
- data/integration/pre-suite/README.mkd +5 -0
- data/integration/tests/Puppetfile/HTTP_PROXY_affects_forge_source.rb +72 -0
- data/integration/tests/Puppetfile/HTTP_PROXY_affects_git_source.rb +70 -0
- data/integration/tests/README.mkd +4 -0
- data/integration/tests/basic_functionality/install_pe_only_module_with_puppetfile.rb +83 -0
- data/integration/tests/basic_functionality/negative/neg_deploy_with_invalid_r10k_yaml.rb +51 -0
- data/integration/tests/basic_functionality/negative/neg_deploy_with_missing_r10k_yaml.rb +28 -0
- data/integration/tests/basic_functionality/negative/neg_invalid_git_provider.rb +45 -0
- data/integration/tests/basic_functionality/negative/negative_bad_proxy.rb +34 -0
- data/integration/tests/basic_functionality/proxy_specified_in_configuration.rb +103 -0
- data/integration/tests/basic_functionality/proxy_with_pe_only_module.rb +128 -0
- data/integration/tests/basic_functionality/proxy_with_puppetfile.rb +61 -0
- data/integration/tests/basic_functionality/rugged_git_provider_with_ssh.rb +109 -0
- data/integration/tests/basic_functionality/rugged_git_provider_without_ssh.rb +108 -0
- data/integration/tests/command_line/deploy_env_without_mod_update.rb +76 -0
- data/integration/tests/command_line/negative/neg_deploy_env_with_module_update.rb +77 -0
- data/integration/tests/command_line/negative/neg_invalid_cmd_line_arg.rb +23 -0
- data/integration/tests/git_source/HTTP_proxy_and_git_source.rb +70 -0
- data/integration/tests/git_source/git_source_git.rb +128 -0
- data/integration/tests/git_source/git_source_ssh.rb +87 -0
- data/integration/tests/git_source/git_source_submodule.rb +70 -0
- data/integration/tests/git_source/negative/neg_git_broken_remote.rb +38 -0
- data/integration/tests/git_source/negative/neg_git_unauthorized_https.rb +46 -0
- data/integration/tests/git_source/negative/neg_git_unauthorized_ssh.rb +73 -0
- data/integration/tests/git_source/negative/neg_git_unicode_branch.rb +35 -0
- data/integration/tests/i18n/deploy_module_with_unicode_in_file_name.rb +64 -0
- data/integration/tests/purging/content_not_purged_at_root.rb +89 -0
- data/integration/tests/purging/default_purging.rb +125 -0
- data/integration/tests/purging/does_not_purge_files_on_white_list.rb +93 -0
- data/integration/tests/purging/invalid_whitelist_types.rb +63 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_1000_branches.rb +66 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb +111 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb +117 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_hiera.rb +100 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_multi_source.rb +133 -0
- data/integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb +161 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_basedir.rb +46 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_forge_module.rb +48 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module.rb +45 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module_ref.rb +43 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_remote.rb +45 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_branch_name_collision.rb +64 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_disk_full.rb +75 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_duplicate_module_names.rb +44 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_inaccessible_forge.rb +58 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_invalid_env_name.rb +34 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_invalid_puppet_file.rb +36 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_module_specified_at_deleted_release.rb +49 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_read_only.rb +58 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb +51 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_10000_files.rb +75 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb +104 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_module.rb +81 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_module.rb +49 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_large_files.rb +75 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_module_already_installed.rb +82 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_module_last_release_deleted.rb +68 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_non-existent_base_dir.rb +94 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb +93 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_switch_forge_git_module.rb +117 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_unicode_paths.rb +60 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_upgrade_forge_mod_revert_change.rb +166 -0
- data/integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb +163 -0
- data/integration/tests/user_scenario/complex_workflow/multi_env_remove_re-add.rb +111 -0
- data/integration/tests/user_scenario/complex_workflow/multi_env_unamanaged.rb +78 -0
- data/integration/tests/user_scenario/complex_workflow/single_env_git_module_update.rb +100 -0
- data/lib/r10k.rb +11 -0
- data/lib/r10k/action/base.rb +31 -0
- data/lib/r10k/action/cri_runner.rb +72 -0
- data/lib/r10k/action/deploy.rb +9 -0
- data/lib/r10k/action/deploy/deploy_helpers.rb +34 -0
- data/lib/r10k/action/deploy/display.rb +89 -0
- data/lib/r10k/action/deploy/environment.rb +196 -0
- data/lib/r10k/action/deploy/module.rb +84 -0
- data/lib/r10k/action/puppetfile.rb +10 -0
- data/lib/r10k/action/puppetfile/check.rb +31 -0
- data/lib/r10k/action/puppetfile/cri_runner.rb +26 -0
- data/lib/r10k/action/puppetfile/install.rb +45 -0
- data/lib/r10k/action/puppetfile/purge.rb +28 -0
- data/lib/r10k/action/runner.rb +96 -0
- data/lib/r10k/action/visitor.rb +31 -0
- data/lib/r10k/cli.rb +51 -0
- data/lib/r10k/cli/deploy.rb +114 -0
- data/lib/r10k/cli/ext/logging.rb +15 -0
- data/lib/r10k/cli/help.rb +7 -0
- data/lib/r10k/cli/puppetfile.rb +74 -0
- data/lib/r10k/cli/version.rb +31 -0
- data/lib/r10k/deployment.rb +132 -0
- data/lib/r10k/deployment/config.rb +56 -0
- data/lib/r10k/environment.rb +37 -0
- data/lib/r10k/environment/bare.rb +16 -0
- data/lib/r10k/environment/base.rb +150 -0
- data/lib/r10k/environment/git.rb +81 -0
- data/lib/r10k/environment/name.rb +86 -0
- data/lib/r10k/environment/svn.rb +91 -0
- data/lib/r10k/environment/with_modules.rb +139 -0
- data/lib/r10k/errors.rb +61 -0
- data/lib/r10k/errors/formatting.rb +28 -0
- data/lib/r10k/feature.rb +56 -0
- data/lib/r10k/feature/collection.rb +23 -0
- data/lib/r10k/features.rb +20 -0
- data/lib/r10k/forge/module_release.rb +228 -0
- data/lib/r10k/git.rb +196 -0
- data/lib/r10k/git/alternates.rb +63 -0
- data/lib/r10k/git/cache.rb +108 -0
- data/lib/r10k/git/errors.rb +34 -0
- data/lib/r10k/git/rugged.rb +17 -0
- data/lib/r10k/git/rugged/bare_repository.rb +85 -0
- data/lib/r10k/git/rugged/base_repository.rb +93 -0
- data/lib/r10k/git/rugged/cache.rb +11 -0
- data/lib/r10k/git/rugged/credentials.rb +91 -0
- data/lib/r10k/git/rugged/thin_repository.rb +89 -0
- data/lib/r10k/git/rugged/working_repository.rb +145 -0
- data/lib/r10k/git/shellgit.rb +9 -0
- data/lib/r10k/git/shellgit/bare_repository.rb +43 -0
- data/lib/r10k/git/shellgit/base_repository.rb +137 -0
- data/lib/r10k/git/shellgit/cache.rb +11 -0
- data/lib/r10k/git/shellgit/thin_repository.rb +69 -0
- data/lib/r10k/git/shellgit/working_repository.rb +111 -0
- data/lib/r10k/git/stateful_repository.rb +95 -0
- data/lib/r10k/initializers.rb +67 -0
- data/lib/r10k/instance_cache.rb +32 -0
- data/lib/r10k/keyed_factory.rb +39 -0
- data/lib/r10k/logging.rb +109 -0
- data/lib/r10k/logging/terminaloutputter.rb +36 -0
- data/lib/r10k/module.rb +38 -0
- data/lib/r10k/module/base.rb +113 -0
- data/lib/r10k/module/forge.rb +177 -0
- data/lib/r10k/module/git.rb +109 -0
- data/lib/r10k/module/local.rb +36 -0
- data/lib/r10k/module/metadata_file.rb +31 -0
- data/lib/r10k/module/svn.rb +112 -0
- data/lib/r10k/puppetfile.rb +286 -0
- data/lib/r10k/settings.rb +194 -0
- data/lib/r10k/settings/collection.rb +123 -0
- data/lib/r10k/settings/container.rb +97 -0
- data/lib/r10k/settings/definition.rb +124 -0
- data/lib/r10k/settings/enum_definition.rb +30 -0
- data/lib/r10k/settings/helpers.rb +38 -0
- data/lib/r10k/settings/list.rb +107 -0
- data/lib/r10k/settings/loader.rb +99 -0
- data/lib/r10k/settings/mixin.rb +54 -0
- data/lib/r10k/settings/uri_definition.rb +19 -0
- data/lib/r10k/source.rb +42 -0
- data/lib/r10k/source/base.rb +74 -0
- data/lib/r10k/source/exec.rb +51 -0
- data/lib/r10k/source/git.rb +142 -0
- data/lib/r10k/source/hash.rb +182 -0
- data/lib/r10k/source/svn.rb +136 -0
- data/lib/r10k/source/yaml.rb +20 -0
- data/lib/r10k/source/yamldir.rb +32 -0
- data/lib/r10k/svn.rb +6 -0
- data/lib/r10k/svn/remote.rb +68 -0
- data/lib/r10k/svn/working_dir.rb +125 -0
- data/lib/r10k/util/attempt.rb +84 -0
- data/lib/r10k/util/basedir.rb +65 -0
- data/lib/r10k/util/commands.rb +31 -0
- data/lib/r10k/util/exec_env.rb +36 -0
- data/lib/r10k/util/license.rb +24 -0
- data/lib/r10k/util/platform.rb +42 -0
- data/lib/r10k/util/purgeable.rb +88 -0
- data/lib/r10k/util/setopts.rb +55 -0
- data/lib/r10k/util/subprocess.rb +84 -0
- data/lib/r10k/util/subprocess/result.rb +56 -0
- data/lib/r10k/util/subprocess/runner.rb +26 -0
- data/lib/r10k/util/subprocess/runner/jruby.rb +23 -0
- data/lib/r10k/util/subprocess/runner/posix.rb +103 -0
- data/lib/r10k/util/subprocess/runner/pump.rb +59 -0
- data/lib/r10k/util/subprocess/runner/windows.rb +23 -0
- data/lib/r10k/util/subprocess/subprocess_error.rb +24 -0
- data/lib/r10k/util/symbolize_keys.rb +35 -0
- data/lib/r10k/version.rb +6 -0
- data/locales/config.yaml +21 -0
- data/locales/r10k.pot +545 -0
- data/r10k.gemspec +50 -0
- data/r10k.yaml.example +112 -0
- data/spec/fixtures/empty/.empty +0 -0
- data/spec/fixtures/integration/git/puppet-boolean-bare.tar +0 -0
- data/spec/fixtures/module/forge/bad_module/metadata.json +1 -0
- data/spec/fixtures/module/forge/eight_hundred/Modulefile +8 -0
- data/spec/fixtures/module/forge/eight_hundred/metadata.json +19 -0
- data/spec/fixtures/unit/action/r10k.yaml +5 -0
- data/spec/fixtures/unit/action/r10k_cachedir.yaml +2 -0
- data/spec/fixtures/unit/action/r10k_generate_types.yaml +3 -0
- data/spec/fixtures/unit/action/r10k_puppet_path.yaml +3 -0
- data/spec/fixtures/unit/puppetfile/argument-error/Puppetfile +1 -0
- data/spec/fixtures/unit/puppetfile/default-branch-override/Puppetfile +5 -0
- data/spec/fixtures/unit/puppetfile/duplicate-module-error/Puppetfile +10 -0
- data/spec/fixtures/unit/puppetfile/invalid-syntax/Puppetfile +1 -0
- data/spec/fixtures/unit/puppetfile/load-error/Puppetfile +1 -0
- data/spec/fixtures/unit/puppetfile/name-error/Puppetfile +1 -0
- data/spec/fixtures/unit/puppetfile/valid-forge-with-version/Puppetfile +1 -0
- data/spec/fixtures/unit/puppetfile/valid-forge-without-version/Puppetfile +1 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/expected_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_unmanaged_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/unmanaged_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_two/expected_2 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2 +0 -0
- data/spec/fixtures/unit/util/subprocess/runner/no-execute.sh +3 -0
- data/spec/integration/git/rugged/bare_repository_spec.rb +13 -0
- data/spec/integration/git/rugged/thin_repository_spec.rb +14 -0
- data/spec/integration/git/rugged/working_repository_spec.rb +48 -0
- data/spec/integration/git/shellgit/bare_repository_spec.rb +13 -0
- data/spec/integration/git/shellgit/thin_repository_spec.rb +14 -0
- data/spec/integration/git/shellgit/working_repository_spec.rb +13 -0
- data/spec/integration/git/stateful_repository_spec.rb +159 -0
- data/spec/matchers/exit_with.rb +28 -0
- data/spec/matchers/match_realpath.rb +18 -0
- data/spec/r10k-mocks.rb +3 -0
- data/spec/r10k-mocks/mock_config.rb +33 -0
- data/spec/r10k-mocks/mock_env.rb +15 -0
- data/spec/r10k-mocks/mock_source.rb +13 -0
- data/spec/shared-contexts/git-fixtures.rb +55 -0
- data/spec/shared-examples/deploy-actions.rb +69 -0
- data/spec/shared-examples/git-repository.rb +38 -0
- data/spec/shared-examples/git/bare_repository.rb +132 -0
- data/spec/shared-examples/git/thin_repository.rb +26 -0
- data/spec/shared-examples/git/working_repository.rb +207 -0
- data/spec/shared-examples/puppetfile-action.rb +39 -0
- data/spec/shared-examples/settings/ancestry.rb +44 -0
- data/spec/shared-examples/subprocess-runner.rb +83 -0
- data/spec/spec_helper.rb +40 -0
- data/spec/unit/action/cri_runner_spec.rb +72 -0
- data/spec/unit/action/deploy/deploy_helpers_spec.rb +38 -0
- data/spec/unit/action/deploy/display_spec.rb +31 -0
- data/spec/unit/action/deploy/environment_spec.rb +395 -0
- data/spec/unit/action/deploy/module_spec.rb +139 -0
- data/spec/unit/action/puppetfile/check_spec.rb +41 -0
- data/spec/unit/action/puppetfile/cri_runner_spec.rb +47 -0
- data/spec/unit/action/puppetfile/install_spec.rb +84 -0
- data/spec/unit/action/puppetfile/purge_spec.rb +42 -0
- data/spec/unit/action/runner_spec.rb +213 -0
- data/spec/unit/action/visitor_spec.rb +39 -0
- data/spec/unit/cli_spec.rb +9 -0
- data/spec/unit/deployment/config_spec.rb +33 -0
- data/spec/unit/deployment_spec.rb +162 -0
- data/spec/unit/environment/base_spec.rb +109 -0
- data/spec/unit/environment/git_spec.rb +97 -0
- data/spec/unit/environment/name_spec.rb +135 -0
- data/spec/unit/environment/svn_spec.rb +133 -0
- data/spec/unit/errors/formatting_spec.rb +84 -0
- data/spec/unit/feature_spec.rb +50 -0
- data/spec/unit/forge/module_release_spec.rb +213 -0
- data/spec/unit/git/alternates_spec.rb +116 -0
- data/spec/unit/git/cache_spec.rb +55 -0
- data/spec/unit/git/rugged/cache_spec.rb +29 -0
- data/spec/unit/git/rugged/credentials_spec.rb +109 -0
- data/spec/unit/git/shellgit/cache_spec.rb +27 -0
- data/spec/unit/git/stateful_repository_spec.rb +40 -0
- data/spec/unit/git_spec.rb +102 -0
- data/spec/unit/initializers_spec.rb +68 -0
- data/spec/unit/instance_cache_spec.rb +78 -0
- data/spec/unit/keyed_factory_spec.rb +51 -0
- data/spec/unit/logging/terminaloutputter_spec.rb +53 -0
- data/spec/unit/logging_spec.rb +68 -0
- data/spec/unit/module/base_spec.rb +72 -0
- data/spec/unit/module/forge_spec.rb +207 -0
- data/spec/unit/module/git_spec.rb +274 -0
- data/spec/unit/module/metadata_file_spec.rb +68 -0
- data/spec/unit/module/svn_spec.rb +178 -0
- data/spec/unit/module_spec.rb +29 -0
- data/spec/unit/puppetfile_spec.rb +300 -0
- data/spec/unit/settings/collection_spec.rb +123 -0
- data/spec/unit/settings/container_spec.rb +92 -0
- data/spec/unit/settings/definition_spec.rb +79 -0
- data/spec/unit/settings/enum_definition_spec.rb +20 -0
- data/spec/unit/settings/inheritance_spec.rb +38 -0
- data/spec/unit/settings/list_spec.rb +88 -0
- data/spec/unit/settings/loader_spec.rb +110 -0
- data/spec/unit/settings/uri_definition_spec.rb +23 -0
- data/spec/unit/settings_spec.rb +246 -0
- data/spec/unit/source/base_spec.rb +31 -0
- data/spec/unit/source/exec_spec.rb +81 -0
- data/spec/unit/source/git_spec.rb +185 -0
- data/spec/unit/source/hash_spec.rb +54 -0
- data/spec/unit/source/svn_spec.rb +196 -0
- data/spec/unit/source/yaml_spec.rb +42 -0
- data/spec/unit/source_spec.rb +10 -0
- data/spec/unit/svn/remote_spec.rb +21 -0
- data/spec/unit/svn/working_dir_spec.rb +56 -0
- data/spec/unit/util/attempt_spec.rb +82 -0
- data/spec/unit/util/commands_spec.rb +61 -0
- data/spec/unit/util/exec_env_spec.rb +56 -0
- data/spec/unit/util/purgeable_spec.rb +230 -0
- data/spec/unit/util/setopts_spec.rb +59 -0
- data/spec/unit/util/subprocess/result_spec.rb +36 -0
- data/spec/unit/util/subprocess/runner/posix_spec.rb +7 -0
- data/spec/unit/util/subprocess/runner/pump_spec.rb +79 -0
- data/spec/unit/util/subprocess/runner/windows_spec.rb +7 -0
- data/spec/unit/util/subprocess/subprocess_error_spec.rb +26 -0
- data/spec/unit/util/subprocess_spec.rb +65 -0
- data/spec/unit/util/symbolize_keys_spec.rb +67 -0
- metadata +582 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
require 'git_utils'
|
|
2
|
+
|
|
3
|
+
# Retrieve the file path for the "r10k.yaml" configuration file.
|
|
4
|
+
#
|
|
5
|
+
# ==== Attributes
|
|
6
|
+
#
|
|
7
|
+
# * +master+ - The Puppet master on which r10k is installed.
|
|
8
|
+
#
|
|
9
|
+
# ==== Returns
|
|
10
|
+
#
|
|
11
|
+
# +string+ - Absolute file path to "r10k.yaml" config file.
|
|
12
|
+
#
|
|
13
|
+
# ==== Examples
|
|
14
|
+
#
|
|
15
|
+
# get_r10k_config_file_path(master)
|
|
16
|
+
def get_r10k_config_file_path(master)
|
|
17
|
+
confdir = on(master, puppet('config print confdir')).stdout.rstrip
|
|
18
|
+
|
|
19
|
+
return File.join(File.dirname(confdir), 'r10k', 'r10k.yaml')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Verify that a pristine "production" environment exists on the master.
|
|
23
|
+
# (And only the "production" environment!)
|
|
24
|
+
#
|
|
25
|
+
# ==== Attributes
|
|
26
|
+
#
|
|
27
|
+
# * +master+ - The Puppet master on which to verify the "production" environment.
|
|
28
|
+
#
|
|
29
|
+
# ==== Returns
|
|
30
|
+
#
|
|
31
|
+
# +nil+
|
|
32
|
+
#
|
|
33
|
+
# ==== Examples
|
|
34
|
+
#
|
|
35
|
+
# verify_production_environment(master)
|
|
36
|
+
def verify_production_environment(master)
|
|
37
|
+
environment_path = on(master, puppet('config', 'print', 'environmentpath')).stdout.rstrip
|
|
38
|
+
prod_env_md5sum_path = File.join(environment_path, 'production', 'manifests', '.site_pp.md5')
|
|
39
|
+
|
|
40
|
+
#Verify MD5 sum of "site.pp"
|
|
41
|
+
on(master, "md5sum -c #{prod_env_md5sum_path}")
|
|
42
|
+
|
|
43
|
+
#Verify that "production" is the only environment available.
|
|
44
|
+
on(master, "test `ls #{environment_path} | wc -l` -eq 1")
|
|
45
|
+
on(master, "ls #{environment_path} | grep \"production\"")
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Revert the Puppet environments back to a pristine 'production' branch while deleting all other branches.
|
|
49
|
+
#
|
|
50
|
+
# ==== Attributes
|
|
51
|
+
#
|
|
52
|
+
# * +host+ - One or more hosts to act upon, or a role (String or Symbol) that identifies one or more hosts.
|
|
53
|
+
# * +commit_sha+ - The reset 'production' branch HEAD to this commit SHA.
|
|
54
|
+
# * +git_repo_path+ - The path to the git repository on the target host.
|
|
55
|
+
#
|
|
56
|
+
# ==== Returns
|
|
57
|
+
#
|
|
58
|
+
# +nil+
|
|
59
|
+
#
|
|
60
|
+
# ==== Examples
|
|
61
|
+
#
|
|
62
|
+
# r10k_revert_environment(master, 'ff81c01c5', '~/git_repo')
|
|
63
|
+
def r10k_revert_environment(host, commit_sha, git_repo_path)
|
|
64
|
+
#Reset 'production' branch to know clean state.
|
|
65
|
+
git_on(host, 'checkout production', git_repo_path)
|
|
66
|
+
git_reset_hard(host, commit_sha, git_repo_path)
|
|
67
|
+
|
|
68
|
+
#Get all branches except for 'production'.
|
|
69
|
+
local_branches = git_on(host, 'branch | grep -v "production" | xargs', git_repo_path).stdout()
|
|
70
|
+
|
|
71
|
+
#Delete all other branches except for 'production' locally and remotely.
|
|
72
|
+
if local_branches != "\n"
|
|
73
|
+
git_on(host, "branch -D #{local_branches}", git_repo_path)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
#Force push changes to remote.
|
|
77
|
+
git_on(host, 'push origin --mirror --force', git_repo_path)
|
|
78
|
+
git_on(host, 'push origin --mirror --force', git_repo_path)
|
|
79
|
+
|
|
80
|
+
#Remove r10k cache
|
|
81
|
+
cachedir = '/var/cache/r10k'
|
|
82
|
+
on(master, "rm -rf #{cachedir}")
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Clean-up the r10k environment on the master to bring it back to a known good state.
|
|
86
|
+
#
|
|
87
|
+
# ==== Attributes
|
|
88
|
+
#
|
|
89
|
+
# * +host+ - The Puppet master on which to verify the "production" environment.
|
|
90
|
+
# * +commit_sha+ - The reset HEAD to this commit SHA.
|
|
91
|
+
# * +git_repo_path+ - The path to the git repository on the target host.
|
|
92
|
+
#
|
|
93
|
+
# ==== Returns
|
|
94
|
+
#
|
|
95
|
+
# +nil+
|
|
96
|
+
#
|
|
97
|
+
# ==== Examples
|
|
98
|
+
#
|
|
99
|
+
# clean_up_r10k(master, 'ff81c01c5', '~/git_repo')
|
|
100
|
+
def clean_up_r10k(master, commit_sha, git_repo_path)
|
|
101
|
+
environment_path = on(master, puppet('config', 'print', 'environmentpath')).stdout.rstrip
|
|
102
|
+
prod_env_modules_path = File.join(environment_path, 'production', 'modules')
|
|
103
|
+
prod_env_site_path = File.join(environment_path, 'production', 'site')
|
|
104
|
+
r10k_fqp = get_r10k_fqp(master)
|
|
105
|
+
|
|
106
|
+
step 'Reset Git Repo to Known Good State'
|
|
107
|
+
r10k_revert_environment(master, commit_sha, git_repo_path)
|
|
108
|
+
|
|
109
|
+
# RK-297 workaround. Without this, tests will fail with an error like the following:
|
|
110
|
+
# [2017-06-02 11:11:46 - ERROR] Object not found - no match for id (60e4ea82c9fdf86974a13f78b839a497325de04b)
|
|
111
|
+
# This cleanup should not be necessary when RK-297 has been resolved.
|
|
112
|
+
#
|
|
113
|
+
step 'Remove git directories from codedir to prevent cache errors'
|
|
114
|
+
on(master, "find #{environment_path } -name .git -type d -print0 | xargs -r0 -- rm -r")
|
|
115
|
+
|
|
116
|
+
step 'Restore Original "production" Environment'
|
|
117
|
+
on(master, "#{r10k_fqp} deploy environment -v")
|
|
118
|
+
|
|
119
|
+
step 'Verify "production" Environment is at Original State'
|
|
120
|
+
verify_production_environment(master)
|
|
121
|
+
|
|
122
|
+
step 'Remove Any Modules from the "production" Environment'
|
|
123
|
+
on(master, "rm -rf #{prod_env_modules_path}/*")
|
|
124
|
+
on(master, "rm -rf #{prod_env_site_path}/*")
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Create a new r10k Git source that is copied from the current "production" environment.
|
|
128
|
+
#
|
|
129
|
+
# ==== Attributes
|
|
130
|
+
#
|
|
131
|
+
# * +master+ - The Puppet master on which to create a new Git source.
|
|
132
|
+
# * +git_repo_parent_path+ - The parent path that contains the desired Git repository.
|
|
133
|
+
# * +git_repo_name+ - The name of the repository.
|
|
134
|
+
# * +git_clone_path+ - The destination path for the git clone.
|
|
135
|
+
# * +env_name+ - The initial branch name (environment) for first commit.
|
|
136
|
+
# * +deploy?+ - A flag indicating if r10k environment deployment should be kicked off after cloning.
|
|
137
|
+
#
|
|
138
|
+
# ==== Returns
|
|
139
|
+
#
|
|
140
|
+
# +string+ - The path to the newly created Git repository.
|
|
141
|
+
#
|
|
142
|
+
# ==== Examples
|
|
143
|
+
#
|
|
144
|
+
# init_r10k_source_from_prod(master, '/git/repos', 'environments', '~/repos/r10k', 'test', deploy=true)
|
|
145
|
+
def init_r10k_source_from_prod(master, git_repo_parent_path, git_repo_name, git_clone_path, env_name, deploy=false)
|
|
146
|
+
#Init
|
|
147
|
+
env_path = on(master, puppet('config print environmentpath')).stdout.rstrip
|
|
148
|
+
prod_env_path = File.join(env_path, 'production')
|
|
149
|
+
r10k_fqp = get_r10k_fqp(master)
|
|
150
|
+
|
|
151
|
+
local_files_root_path = ENV['FILES'] || 'files'
|
|
152
|
+
prod_env_config_path = 'pre-suite/prod_env.config'
|
|
153
|
+
prod_env_config = File.read(File.join(local_files_root_path, prod_env_config_path))
|
|
154
|
+
|
|
155
|
+
#Create Git origin repo and clone.
|
|
156
|
+
git_init_bare_repo_and_clone(master, git_repo_parent_path, git_repo_name, git_clone_path)
|
|
157
|
+
|
|
158
|
+
#Copy current contents of production environment to the git clone path
|
|
159
|
+
on(master, "cp -r #{prod_env_path}/* #{git_clone_path}")
|
|
160
|
+
|
|
161
|
+
#Create hidden files in the "site" and "modules" folders so that git copies the directories.
|
|
162
|
+
on(master, "mkdir -p #{git_clone_path}/modules #{git_clone_path}/site")
|
|
163
|
+
on(master, "touch #{git_clone_path}/modules/.keep;touch #{git_clone_path}/site/.keep")
|
|
164
|
+
|
|
165
|
+
#Create MD5 sum file for the "site.pp" file.
|
|
166
|
+
on(master, "md5sum #{git_clone_path}/manifests/site.pp > #{git_clone_path}/manifests/.site_pp.md5")
|
|
167
|
+
|
|
168
|
+
#Add environment config that specifies module lookup path for production.
|
|
169
|
+
create_remote_file(master, "#{git_clone_path}/environment.conf", prod_env_config)
|
|
170
|
+
git_on(master, "add #{git_clone_path}/*", git_clone_path)
|
|
171
|
+
git_on(master, "commit -m \"Add #{env_name} environment.\"", git_clone_path)
|
|
172
|
+
git_on(master, "branch -m #{env_name}", git_clone_path)
|
|
173
|
+
git_on(master, "push -u origin #{env_name}", git_clone_path)
|
|
174
|
+
|
|
175
|
+
#Attempt to deploy environments.
|
|
176
|
+
if deploy
|
|
177
|
+
on(master, "#{r10k_fqp} deploy environment -v")
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# Get the fully qualified path for r10k.
|
|
182
|
+
#
|
|
183
|
+
# ==== Arguments
|
|
184
|
+
#
|
|
185
|
+
# * +host+ - The Beaker host to introspect
|
|
186
|
+
#
|
|
187
|
+
# ==== Returns
|
|
188
|
+
#
|
|
189
|
+
# +string+ - The fully qualified path for r10k
|
|
190
|
+
#
|
|
191
|
+
# ==== Examples
|
|
192
|
+
#
|
|
193
|
+
# get_r10k_fqp(master)
|
|
194
|
+
def get_r10k_fqp(host)
|
|
195
|
+
puppet_version = get_puppet_version(host)
|
|
196
|
+
if puppet_version < 4.0
|
|
197
|
+
fqp = '/opt/puppet/bin/r10k'
|
|
198
|
+
else
|
|
199
|
+
fqp = '/opt/puppetlabs/puppet/bin/r10k'
|
|
200
|
+
end
|
|
201
|
+
fqp
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# Get the version of puppet that is installed on a host.
|
|
205
|
+
#
|
|
206
|
+
# ==== Arguments
|
|
207
|
+
#
|
|
208
|
+
# * +host+ - The Beaker host to introspect
|
|
209
|
+
#
|
|
210
|
+
# ==== Returns
|
|
211
|
+
#
|
|
212
|
+
# +float+ - the version of puppet as a float
|
|
213
|
+
#
|
|
214
|
+
# ==== Examples
|
|
215
|
+
#
|
|
216
|
+
# get_puppet_version(master)
|
|
217
|
+
def get_puppet_version(host)
|
|
218
|
+
on(host, puppet('--version')) do |result|
|
|
219
|
+
@version = result.stdout.match(/(\d){1}.(\d){1,2}.(\d){1,2}/)[0].to_f
|
|
220
|
+
end
|
|
221
|
+
@version
|
|
222
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'erb'
|
|
2
|
+
require 'git_utils'
|
|
3
|
+
require 'r10k_utils'
|
|
4
|
+
require 'master_manipulator'
|
|
5
|
+
test_name 'CODEMGMT-20 - C59120 - Install and Configure Git for r10k'
|
|
6
|
+
|
|
7
|
+
#Init
|
|
8
|
+
env_path = on(master, puppet('config print environmentpath')).stdout.rstrip
|
|
9
|
+
prod_env_path = File.join(env_path, 'production')
|
|
10
|
+
|
|
11
|
+
git_repo_path = '/git_repos'
|
|
12
|
+
git_repo_name = 'environments'
|
|
13
|
+
git_control_remote = File.join(git_repo_path, "#{git_repo_name}.git")
|
|
14
|
+
git_control_remote_head_path = File.join(git_control_remote, 'HEAD')
|
|
15
|
+
git_environments_path = File.join('/root', git_repo_name)
|
|
16
|
+
|
|
17
|
+
local_files_root_path = ENV['FILES'] || 'files'
|
|
18
|
+
git_manifest_template_path = File.join(local_files_root_path, 'pre-suite', 'git_config.pp.erb')
|
|
19
|
+
git_manifest = ERB.new(File.read(git_manifest_template_path)).result(binding)
|
|
20
|
+
|
|
21
|
+
step 'Get PE Version'
|
|
22
|
+
pe_version = get_puppet_version(master)
|
|
23
|
+
fail_test('This pre-suite requires PE 3.7 or above!') if pe_version < 3.7
|
|
24
|
+
|
|
25
|
+
#Setup
|
|
26
|
+
step 'Stub Forge on Master'
|
|
27
|
+
stub_forge_on(master)
|
|
28
|
+
|
|
29
|
+
step 'Read module path'
|
|
30
|
+
on(master, puppet('config print basemodulepath')) do |result|
|
|
31
|
+
(result.stdout.include? ':') ? separator = ':' : separator = ';'
|
|
32
|
+
@module_path = result.stdout.split(separator).first
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
step 'Install "git" Module'
|
|
36
|
+
on(master, puppet("module install puppetlabs-git --modulepath #{@module_path}"))
|
|
37
|
+
|
|
38
|
+
step 'Install and Configure Git'
|
|
39
|
+
on(master, puppet('apply'), :stdin => git_manifest, :acceptable_exit_codes => [0,2]) do |result|
|
|
40
|
+
assert_no_match(/Error:/, result.stderr, 'Unexpected error was detected!')
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
step 'Create "production" Environment on Git'
|
|
44
|
+
init_r10k_source_from_prod(master, git_repo_path, git_repo_name, git_environments_path, 'production')
|
|
45
|
+
|
|
46
|
+
step 'Change Default Branch to "production" on Git Control Remote'
|
|
47
|
+
create_remote_file(master, git_control_remote_head_path, "ref: refs/heads/production\n")
|
|
48
|
+
on(master, "chmod 644 #{git_control_remote_head_path}")
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'git_utils'
|
|
2
|
+
require 'r10k_utils'
|
|
3
|
+
require 'master_manipulator'
|
|
4
|
+
test_name 'CODEMGMT-21 - C59119 - Configure r10k for Puppet Enterprise'
|
|
5
|
+
|
|
6
|
+
#Init
|
|
7
|
+
env_path = on(master, puppet('config print environmentpath')).stdout.rstrip
|
|
8
|
+
prod_env_path = File.join(env_path, 'production')
|
|
9
|
+
|
|
10
|
+
r10k_config_path = get_r10k_config_file_path(master)
|
|
11
|
+
|
|
12
|
+
git_repo_path = '/git_repos'
|
|
13
|
+
git_repo_name = 'environments'
|
|
14
|
+
git_control_remote = File.join(git_repo_path, "#{git_repo_name}.git")
|
|
15
|
+
git_provider = ENV['GIT_PROVIDER'] || 'shellgit'
|
|
16
|
+
r10k_fqp = get_r10k_fqp(master)
|
|
17
|
+
|
|
18
|
+
step 'Get PE Version'
|
|
19
|
+
pe_version = get_puppet_version(master)
|
|
20
|
+
fail_test('This pre-suite requires PE 3.7 or above!') if pe_version < 3.7
|
|
21
|
+
|
|
22
|
+
#In-line files
|
|
23
|
+
r10k_conf = <<-CONF
|
|
24
|
+
cachedir: '/var/cache/r10k'
|
|
25
|
+
git:
|
|
26
|
+
provider: '#{git_provider}'
|
|
27
|
+
sources:
|
|
28
|
+
control:
|
|
29
|
+
basedir: "#{env_path}"
|
|
30
|
+
remote: "#{git_control_remote}"
|
|
31
|
+
CONF
|
|
32
|
+
|
|
33
|
+
#Setup
|
|
34
|
+
step 'Remove Current Puppet "production" Environment'
|
|
35
|
+
on(master, "rm -rf #{prod_env_path}")
|
|
36
|
+
|
|
37
|
+
step 'Configure r10k'
|
|
38
|
+
create_remote_file(master, r10k_config_path, r10k_conf)
|
|
39
|
+
on(master, "chmod 644 #{r10k_config_path}")
|
|
40
|
+
|
|
41
|
+
step 'Deploy "production" Environment via r10k'
|
|
42
|
+
on(master, "#{r10k_fqp} deploy environment -v")
|
|
43
|
+
|
|
44
|
+
step 'Disable Environment Caching on Master'
|
|
45
|
+
on(master, puppet('config set environment_timeout 0 --section main'))
|
|
46
|
+
|
|
47
|
+
#This should be temporary until we get a better solution.
|
|
48
|
+
step 'Disable Node Classifier'
|
|
49
|
+
on(master, puppet('config', 'set node_terminus plain', '--section master'))
|
|
50
|
+
|
|
51
|
+
step 'Restart the Puppet Server Service'
|
|
52
|
+
restart_puppet_server(master)
|
|
53
|
+
|
|
54
|
+
step 'Run Puppet Agent on All Nodes'
|
|
55
|
+
on(agents, puppet('agent', '--test', '--environment production'))
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'git_utils'
|
|
2
|
+
require 'r10k_utils'
|
|
3
|
+
require 'master_manipulator'
|
|
4
|
+
test_name 'CODEMGMT-730 - C97981 - HTTP_PROXY affects git source in puppetfile'
|
|
5
|
+
|
|
6
|
+
#Init
|
|
7
|
+
env_path = on(master, puppet('config print environmentpath')).stdout.rstrip
|
|
8
|
+
r10k_fqp = get_r10k_fqp(master)
|
|
9
|
+
|
|
10
|
+
git_repo_path = '/git_repos'
|
|
11
|
+
git_repo_name = 'environments'
|
|
12
|
+
git_control_remote = File.join(git_repo_path, "#{git_repo_name}.git")
|
|
13
|
+
git_environments_path = '/root/environments'
|
|
14
|
+
last_commit = git_last_commit(master, git_environments_path)
|
|
15
|
+
git_provider = ENV['GIT_PROVIDER']
|
|
16
|
+
|
|
17
|
+
r10k_config_path = get_r10k_config_file_path(master)
|
|
18
|
+
r10k_config_bak_path = "#{r10k_config_path}.bak"
|
|
19
|
+
|
|
20
|
+
puppetfile =<<-EOS
|
|
21
|
+
mod 'puppetlabs/apache', '0.10.0'
|
|
22
|
+
EOS
|
|
23
|
+
|
|
24
|
+
proxy_env_value = 'http://iloveferrits.net:3219'
|
|
25
|
+
|
|
26
|
+
#In-line files
|
|
27
|
+
r10k_conf = <<-CONF
|
|
28
|
+
proxy: 'http://ilovedogs.com:3128'
|
|
29
|
+
cachedir: '/var/cache/r10k'
|
|
30
|
+
git:
|
|
31
|
+
provider: '#{git_provider}'
|
|
32
|
+
sources:
|
|
33
|
+
control:
|
|
34
|
+
basedir: "#{env_path}"
|
|
35
|
+
remote: "#{git_control_remote}"
|
|
36
|
+
forge:
|
|
37
|
+
proxy: "http://ilovecats.net:3128"
|
|
38
|
+
CONF
|
|
39
|
+
|
|
40
|
+
teardown do
|
|
41
|
+
master.clear_env_var('HTTP_PROXY')
|
|
42
|
+
|
|
43
|
+
step 'Restore Original "r10k" Config'
|
|
44
|
+
on(master, "mv #{r10k_config_bak_path} #{r10k_config_path}")
|
|
45
|
+
|
|
46
|
+
step 'cleanup r10k'
|
|
47
|
+
clean_up_r10k(master, last_commit, git_environments_path)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
master.add_env_var('HTTP_PROXY', proxy_env_value)
|
|
51
|
+
|
|
52
|
+
step 'Backup Current "r10k" Config'
|
|
53
|
+
on(master, "mv #{r10k_config_path} #{r10k_config_bak_path}")
|
|
54
|
+
|
|
55
|
+
step 'Update the "r10k" Config'
|
|
56
|
+
create_remote_file(master, r10k_config_path, r10k_conf)
|
|
57
|
+
|
|
58
|
+
step 'Checkout "production" Branch'
|
|
59
|
+
git_on(master, 'checkout production', git_environments_path)
|
|
60
|
+
|
|
61
|
+
step 'Copy Puppetfile to "production" Environment Git Repo'
|
|
62
|
+
create_remote_file(master, "#{git_environments_path}/Puppetfile", puppetfile)
|
|
63
|
+
|
|
64
|
+
step 'Push Changes'
|
|
65
|
+
git_add_commit_push(master, 'production', 'add Puppetfile', git_environments_path)
|
|
66
|
+
|
|
67
|
+
#test
|
|
68
|
+
on(master, "#{r10k_fqp} deploy environment -p", :accept_all_exit_codes => true) do |r|
|
|
69
|
+
regex = /using proxy http:\/\/ilovecats\.net:3128/i
|
|
70
|
+
assert(r.exit_code == 1, 'expected error code was not observed')
|
|
71
|
+
assert_match(regex, r.stderr, 'The expected error message was not observed' )
|
|
72
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require 'git_utils'
|
|
2
|
+
require 'r10k_utils'
|
|
3
|
+
require 'master_manipulator'
|
|
4
|
+
test_name 'CODEMGMT-730 - C97982 - HTTP_PROXY affects git source in puppetfile'
|
|
5
|
+
|
|
6
|
+
#Init
|
|
7
|
+
env_path = on(master, puppet('config print environmentpath')).stdout.rstrip
|
|
8
|
+
r10k_fqp = get_r10k_fqp(master)
|
|
9
|
+
|
|
10
|
+
git_repo_path = '/git_repos'
|
|
11
|
+
git_repo_name = 'environments'
|
|
12
|
+
git_control_remote = File.join(git_repo_path, "#{git_repo_name}.git")
|
|
13
|
+
git_environments_path = '/root/environments'
|
|
14
|
+
last_commit = git_last_commit(master, git_environments_path)
|
|
15
|
+
git_provider = ENV['GIT_PROVIDER']
|
|
16
|
+
|
|
17
|
+
r10k_config_path = get_r10k_config_file_path(master)
|
|
18
|
+
r10k_config_bak_path = "#{r10k_config_path}.bak"
|
|
19
|
+
|
|
20
|
+
puppetfile =<<-EOS
|
|
21
|
+
mod 'motd',
|
|
22
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-motd'
|
|
23
|
+
EOS
|
|
24
|
+
|
|
25
|
+
proxy_env_value = 'http://ferritsarebest.net:3219'
|
|
26
|
+
|
|
27
|
+
#In-line files
|
|
28
|
+
r10k_conf = <<-CONF
|
|
29
|
+
cachedir: '/var/cache/r10k'
|
|
30
|
+
git:
|
|
31
|
+
provider: '#{git_provider}'
|
|
32
|
+
sources:
|
|
33
|
+
control:
|
|
34
|
+
basedir: "#{env_path}"
|
|
35
|
+
remote: "#{git_control_remote}"
|
|
36
|
+
CONF
|
|
37
|
+
|
|
38
|
+
teardown do
|
|
39
|
+
master.clear_env_var('HTTP_PROXY')
|
|
40
|
+
|
|
41
|
+
step 'Restore Original "r10k" Config'
|
|
42
|
+
on(master, "mv #{r10k_config_bak_path} #{r10k_config_path}")
|
|
43
|
+
|
|
44
|
+
step 'cleanup r10k'
|
|
45
|
+
clean_up_r10k(master, last_commit, git_environments_path)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
master.add_env_var('HTTP_PROXY', proxy_env_value)
|
|
49
|
+
|
|
50
|
+
step 'Backup Current "r10k" Config'
|
|
51
|
+
on(master, "mv #{r10k_config_path} #{r10k_config_bak_path}")
|
|
52
|
+
|
|
53
|
+
step 'Update the "r10k" Config'
|
|
54
|
+
create_remote_file(master, r10k_config_path, r10k_conf)
|
|
55
|
+
|
|
56
|
+
step 'Checkout "production" Branch'
|
|
57
|
+
git_on(master, 'checkout production', git_environments_path)
|
|
58
|
+
|
|
59
|
+
step 'Copy Puppetfile to "production" Environment Git Repo'
|
|
60
|
+
create_remote_file(master, "#{git_environments_path}/Puppetfile", puppetfile)
|
|
61
|
+
|
|
62
|
+
step 'Push Changes'
|
|
63
|
+
git_add_commit_push(master, 'production', 'add Puppetfile', git_environments_path)
|
|
64
|
+
|
|
65
|
+
#test
|
|
66
|
+
on(master, "#{r10k_fqp} deploy environment -p", :accept_all_exit_codes => true) do |r|
|
|
67
|
+
regex = /(Couldn't|Could not) resolve proxy.*ferritsarebest\.net/i
|
|
68
|
+
assert(r.exit_code == 1, 'expected error code was not observed')
|
|
69
|
+
assert_match(regex, r.stderr, 'The expected error message was not observed' )
|
|
70
|
+
end
|