r10k 3.5.2
Sign up to get free protection for your applications and to get access to all the features.
- 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,75 @@
|
|
1
|
+
Git Based Dynamic Environments
|
2
|
+
==============================
|
3
|
+
|
4
|
+
R10k can use Git repositories to implement dynamic environments. You can create,
|
5
|
+
update, and delete Puppet environments automatically as part of your normal Git
|
6
|
+
workflow.
|
7
|
+
|
8
|
+
Dynamic Environments in a nutshell
|
9
|
+
----------------------------------
|
10
|
+
|
11
|
+
The core idea of dynamic environments is that you should be able to manage your
|
12
|
+
Puppet modules in the same manner that you would manage any other code base. It
|
13
|
+
builds on top of Git topic branch model.
|
14
|
+
|
15
|
+
[git-topic-branching]: http://git-scm.com/book/en/Git-Branching-Branching-Workflows#Topic-Branches
|
16
|
+
|
17
|
+
One of the most prevalent ways of using Git relies on using [topic branches][git-topic-branching].
|
18
|
+
Whenever changes need to be made that need to be reviewed or tested before going
|
19
|
+
live, they should be done in a different, short lived branch called a topic
|
20
|
+
branch. Work can be freely done on a topic branch in isolation and when the work
|
21
|
+
is completed it is merged into a "master" or "production" branch. This is very
|
22
|
+
powerful because it allows any number of people to rapidly develop features in
|
23
|
+
isolation and merge features in a single operation.
|
24
|
+
|
25
|
+
The dynamic environment model extends this git branching strategy to
|
26
|
+
your live Puppet masters. It creates a mapping between Git branches and Puppet
|
27
|
+
environments so that you can use the Git branching model and have that be
|
28
|
+
seamlessly reflected in Puppet environments. This means that creating a new Git
|
29
|
+
branch creates a new Puppet environment, updating a Git branch will update that
|
30
|
+
environment, and deleting a Git branch will remove that environment.
|
31
|
+
|
32
|
+
R10k supports both [directory and config file environments](https://puppet.com/docs/puppet/latest/env_environments.html).
|
33
|
+
Ensure that the basedir for your sources and your puppet config align.
|
34
|
+
|
35
|
+
How it works
|
36
|
+
------------
|
37
|
+
|
38
|
+
R10k works by tracking the state of your Git repository or repositories. Each
|
39
|
+
repository's branches will be cloned into a directory with a matching name,
|
40
|
+
creating a Puppet environment for the branch. If a repository includes a
|
41
|
+
Puppetfile, such as the control repo, the Forge modules and Git/SVN
|
42
|
+
repositories described within will be cloned as well, into the same directories.
|
43
|
+
Subsequent changes to the branches will be kept in sync on the filesystem by
|
44
|
+
future r10k runs. Finally, if there are directories that do not match existing
|
45
|
+
branches, r10k will assume that the branches for those environments were delete
|
46
|
+
and will remove those environments.
|
47
|
+
|
48
|
+
r10k will need to be be able to authenticate with each repository. Most Git
|
49
|
+
systems support authentication with SSH keys. GitHub calls them [deploy
|
50
|
+
keys][github-deploy-keys]. Bitbucket calls them [deployment
|
51
|
+
keys][bitbucket-deployment-keys]. Stash calls them [SSH access
|
52
|
+
keys][stash-access-keys].
|
53
|
+
|
54
|
+
[github-deploy-keys]: https://developer.github.com/guides/managing-deploy-keys/#deploy-keys
|
55
|
+
[bitbucket-deployment-keys]: https://confluence.atlassian.com/display/BITBUCKET/Use+deployment+keys
|
56
|
+
[stash-access-keys]: https://confluence.atlassian.com/display/STASH/SSH+access+keys+for+system+use
|
57
|
+
|
58
|
+
Configuration
|
59
|
+
-------------
|
60
|
+
|
61
|
+
The following configuration options can be specified for Git based environment
|
62
|
+
sources.
|
63
|
+
|
64
|
+
### invalid_branches:
|
65
|
+
|
66
|
+
This setting specifies how Git branch names that cannot be cleanly mapped to
|
67
|
+
Puppet environments will be handled.
|
68
|
+
|
69
|
+
Valid values:
|
70
|
+
|
71
|
+
* 'correct_and_warn': Non-word characters will be replaced with underscores
|
72
|
+
and a warning will be emitted. (Default)
|
73
|
+
* 'correct': Non-word characters will silently be replaced with underscores.
|
74
|
+
* 'error': Branches with non-word characters will be ignored and an error will
|
75
|
+
be emitted.
|
@@ -0,0 +1,69 @@
|
|
1
|
+
Dynamic Environments
|
2
|
+
====================
|
3
|
+
|
4
|
+
One of the most important functions of r10k is its ability to dynamically manage
|
5
|
+
your Puppet environments.
|
6
|
+
|
7
|
+
When environments were originally built into Puppet they were meant to be static
|
8
|
+
in nature. Each environment had to be defined beforehand in the master's
|
9
|
+
puppet.conf file in a section, like so:
|
10
|
+
|
11
|
+
```ini
|
12
|
+
[master]
|
13
|
+
# Environment independent settings
|
14
|
+
vardir = '/var/lib/puppet'
|
15
|
+
|
16
|
+
[production]
|
17
|
+
modulepath = '/etc/puppet/environments/production/modules'
|
18
|
+
|
19
|
+
[testing]
|
20
|
+
modulepath = '/etc/puppet/environments/testing/modules'
|
21
|
+
|
22
|
+
[development]
|
23
|
+
modulepath = '/etc/puppet/environments/development/modules'
|
24
|
+
```
|
25
|
+
|
26
|
+
Static Puppet environments were frequently used to implement a pipeline for
|
27
|
+
developing Puppet code. New Puppet code would be developed and deployed to the
|
28
|
+
development environment, pushed to testing for validation, and then finally
|
29
|
+
pushed to the production for general deployment.
|
30
|
+
|
31
|
+
This static nature of Puppet environments turned out to be inflexible in
|
32
|
+
practice. With a predefined list of environments it could be very cumbersome to
|
33
|
+
develop on different parts of a Puppet codebase in isolation; you could either
|
34
|
+
develop multiple features in the same environment and risk cross pollution, or
|
35
|
+
manually create new environments every time you needed isolation.
|
36
|
+
|
37
|
+
Dynamic environments work by dynamically determining the settings for Puppet
|
38
|
+
environment when the environment is used, rather than by defining an explicit
|
39
|
+
section in puppet.conf. This works by making the current environment (in the
|
40
|
+
'$environment' variable) part of of the path to environment specific settings,
|
41
|
+
like modulepath, manifest, and so forth.
|
42
|
+
|
43
|
+
```ini
|
44
|
+
[master]
|
45
|
+
environmentpath = $confdir/environments'
|
46
|
+
```
|
47
|
+
|
48
|
+
Running `puppet agent -t --environment myenv` will cause $environment to be
|
49
|
+
expanded to 'myenv', so the modulepath for that environment will be set to
|
50
|
+
'/etc/puppet/environments/myenv/modules'.
|
51
|
+
|
52
|
+
This approach of allowing environments to be defined on the fly is a complete
|
53
|
+
reversal of the original architecture of environments. This approach means that
|
54
|
+
it can be very easy to create new environments, update existing environments,
|
55
|
+
and remove environments that aren't needed anymore. It's common practice
|
56
|
+
to create a temporary environment to test an idea and destroy it shortly after.
|
57
|
+
R10k is designed to enable this sort of fluid workflow.
|
58
|
+
|
59
|
+
R10k predominantly uses version control systems to implement dynamic
|
60
|
+
environments. This works by inspecting the VCS repositories containing your
|
61
|
+
Puppet code and checking out that code on your masters so, that there's a 1:1
|
62
|
+
connection between a branch in your VCS repository and a Puppet environment on
|
63
|
+
your masters. This approach allows you to define the way you want to work and
|
64
|
+
use that with your chosen VCS, and r10k will make Puppet implement that
|
65
|
+
workflow.
|
66
|
+
|
67
|
+
Different version control systems will implement dynamic environments in
|
68
|
+
slightly different ways; check out the VCS specific documentation for more
|
69
|
+
information.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Puppet master configuration
|
2
|
+
===========================
|
3
|
+
|
4
|
+
In order to use environments, your Puppet masters will need to be
|
5
|
+
configured to load manifests and modules relative to the requested environment.
|
6
|
+
|
7
|
+
This is the default behavior in Puppet 4+
|
8
|
+
|
9
|
+
This behavior is controled by the following settings
|
10
|
+
(listed with their default values):
|
11
|
+
|
12
|
+
```
|
13
|
+
codedir = /etc/puppetlabs/code
|
14
|
+
environmentpath = $codedir/environments
|
15
|
+
basemodulepath = $codedir/modules:/opt/puppetlabs/puppet/share/modules
|
16
|
+
```
|
17
|
+
|
18
|
+
The environment requested by the agent or assigned to it by an ENC is looked
|
19
|
+
for at `$environmentpath/$environment`.
|
20
|
+
|
21
|
+
That environment may have an environment.conf file in its base directory that
|
22
|
+
specifies its own modulepath. If not, the default computed modulepath for that
|
23
|
+
environment is `$environmentpath/$environment/modules:$basemodulepath`.
|
24
|
+
|
25
|
+
These configuration variables are documented at
|
26
|
+
[Puppet Configuration Reference](https://puppet.com/docs/puppet/latest/configuration.html)
|
27
|
+
and their interaction in forming the modulepath is documented at
|
28
|
+
[Directories and the Modulepath](https://puppet.com/docs/puppet/latest/dirs_modulepath.html).
|
29
|
+
More information can be found about environments in general at
|
30
|
+
[Creating Environmnets](https://puppet.com/docs/puppet/latest/environments_creating.html).
|
31
|
+
|
32
|
+
The evolution to using environments in this way was a gradual one from community
|
33
|
+
conventions to supported feature and there were several intermediate stages that
|
34
|
+
had different configuration requirements within the puppet.conf. Some Puppet
|
35
|
+
documentation from the 3.x and 4.x series may no longer be applicable to the
|
36
|
+
above which solidified in Puppet 4.x.
|
37
|
+
|
38
|
+
If you need to upgrade away from any intermediate setup see
|
39
|
+
[Environments in Puppet 3.8](https://puppet.com/docs/puppet/3.8/environments.html)
|
40
|
+
for examples that may help.
|
@@ -0,0 +1,201 @@
|
|
1
|
+
# Overview
|
2
|
+
|
3
|
+
This intent of this document is to serve as a basic guide for getting started with r10k and a fresh Puppet installation, including the following:
|
4
|
+
|
5
|
+
* Installing Puppet and its dependencies
|
6
|
+
* Installing r10k and its dependencies
|
7
|
+
* Configuring all components to support r10k
|
8
|
+
* Configuring your git repository and initial files
|
9
|
+
|
10
|
+
This document is based around Puppet 4+, specifically using the Puppet Collection repositories provided by Puppet Labs.
|
11
|
+
|
12
|
+
# Pre-Requisites
|
13
|
+
|
14
|
+
* Clean install of CentOS 7 or Debian 7.0 with root access / sudo rights.
|
15
|
+
* Clean github repository with a deploy key generated by the server above.
|
16
|
+
|
17
|
+
# Installing Puppetmaster on Centos 7
|
18
|
+
|
19
|
+
Install and enable the official Puppet Labs package repositories.
|
20
|
+
|
21
|
+
```
|
22
|
+
yum localinstall http://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
|
23
|
+
```
|
24
|
+
|
25
|
+
Clean all yum data and rebuild the metadata cache.
|
26
|
+
|
27
|
+
```
|
28
|
+
yum clean all && yum makecache
|
29
|
+
```
|
30
|
+
|
31
|
+
Install the Puppet master.
|
32
|
+
|
33
|
+
```
|
34
|
+
yum install puppetserver
|
35
|
+
```
|
36
|
+
|
37
|
+
# Installing Puppetmaster on Debian 7
|
38
|
+
|
39
|
+
Install and enable the official Puppet Labs package repositories
|
40
|
+
|
41
|
+
```
|
42
|
+
wget http://apt.puppetlabs.com/puppetlabs-release-pc1-wheezy.deb
|
43
|
+
dpkg -i puppetlabs-release-pc1-wheezy.deb
|
44
|
+
apt-get update
|
45
|
+
```
|
46
|
+
|
47
|
+
Install the Pupppet master
|
48
|
+
```
|
49
|
+
apt-get install puppetserver
|
50
|
+
```
|
51
|
+
|
52
|
+
# Configuring Puppet
|
53
|
+
|
54
|
+
Configure the Puppet master by editing `/etc/puppetlabs/puppet/puppet.conf` and ensuring it has the following contents:
|
55
|
+
|
56
|
+
```
|
57
|
+
[main]
|
58
|
+
dns_alt_names = $_Insert FQDN of Puppet Master Here_$
|
59
|
+
|
60
|
+
[agent]
|
61
|
+
server = $_Insert FQDN of Puppet Master Here_$
|
62
|
+
```
|
63
|
+
|
64
|
+
Restart the Puppet master service.
|
65
|
+
|
66
|
+
```
|
67
|
+
service puppetserver restart
|
68
|
+
```
|
69
|
+
|
70
|
+
Ensure the certificate for the Puppet master was created.
|
71
|
+
|
72
|
+
```
|
73
|
+
# /opt/puppetlabs/bin/puppet cert list --all
|
74
|
+
|
75
|
+
+ "puppet-master.domain.local" (SHA256) 3F:F3:63:BB:EE:57:46:A4:7B:03:AB:9D:FD:97:0F:8F:73:87:40:3B:6D:E5:DC:FC:C3:49:F5:C9:B6:F4:DE:B8 (alt names: "DNS:puppet-master.domain.local")
|
76
|
+
```
|
77
|
+
|
78
|
+
Notice for Debian users: apt post-configure will build the certificate for the server BEFORE you configure it. Therefore you should rebuild your certs after done with /etc/puppetlabs/puppet/puppet.conf configuration.
|
79
|
+
To do so you need to remove old certs and restart puppetmaster:
|
80
|
+
```
|
81
|
+
service puppetserver stop
|
82
|
+
find $(/opt/puppetlabs/bin/puppet master --configprint ssldir) -name "$(/opt/puppetlabs/bin/puppet master --configprint certname).pem" -delete
|
83
|
+
service puppetserver start
|
84
|
+
```
|
85
|
+
|
86
|
+
# Install and Configure R10k
|
87
|
+
|
88
|
+
Install r10k via Ruby Gems.
|
89
|
+
|
90
|
+
```
|
91
|
+
/opt/puppetlabs/puppet/bin/gem install r10k
|
92
|
+
```
|
93
|
+
|
94
|
+
Configure r10k by creating the following directory structure and file `/etc/puppetlabs/r10k/r10k.yaml` and ensuring it has the following contents:
|
95
|
+
|
96
|
+
```
|
97
|
+
# The location to use for storing cached Git repos
|
98
|
+
:cachedir: '/var/cache/r10k'
|
99
|
+
|
100
|
+
# A list of git repositories to create
|
101
|
+
:sources:
|
102
|
+
# This will clone the git repository and instantiate an environment per
|
103
|
+
# branch in /etc/puppetlabs/code/environments
|
104
|
+
:my-org:
|
105
|
+
remote: 'git@github.com:$_Insert GitHub Organization Here_$/$_Insert GitHub Repository That Will Be Used For Your Puppet Code Here_$'
|
106
|
+
basedir: '/etc/puppetlabs/code/environments'
|
107
|
+
```
|
108
|
+
# Configure Puppet Code Repository
|
109
|
+
|
110
|
+
Populate the repository by cloning it locally and performing each of the following actions within it:
|
111
|
+
|
112
|
+
Note that puppet defaults to the `production` environment. You may wish to change your default git
|
113
|
+
branch from `master` to `production` in order to match this. Alternatively, you can set your agents'
|
114
|
+
environment to `master`.
|
115
|
+
|
116
|
+
```
|
117
|
+
mkdir -p {modules,site/profile/manifests,hieradata}
|
118
|
+
touch hieradata/common.yaml
|
119
|
+
touch site/profile/manifests/base.pp
|
120
|
+
touch environment.conf
|
121
|
+
touch Puppetfile
|
122
|
+
touch site.pp
|
123
|
+
```
|
124
|
+
|
125
|
+
Edit the `environment.conf` file and ensure it has the following contents:
|
126
|
+
|
127
|
+
```
|
128
|
+
manifest = site.pp
|
129
|
+
modulepath = modules:site
|
130
|
+
```
|
131
|
+
|
132
|
+
Edit the `site.pp` file and ensure it has the following contents:
|
133
|
+
|
134
|
+
```
|
135
|
+
hiera_include('classes')
|
136
|
+
```
|
137
|
+
|
138
|
+
Edit the `hieradata/common.yaml file and ensure it has the following contents:
|
139
|
+
|
140
|
+
```
|
141
|
+
---
|
142
|
+
classes:
|
143
|
+
- 'profile::base'
|
144
|
+
|
145
|
+
ntp::servers:
|
146
|
+
- 0.us.pool.ntp.org
|
147
|
+
- 1.us.pool.ntp.org
|
148
|
+
```
|
149
|
+
|
150
|
+
Edit the `Puppetfile` file and ensure it has the following contents:
|
151
|
+
|
152
|
+
```
|
153
|
+
forge 'forge.puppetlabs.com'
|
154
|
+
|
155
|
+
# Forge Modules
|
156
|
+
mod 'puppetlabs/ntp', '4.1.0'
|
157
|
+
mod 'puppetlabs/stdlib'
|
158
|
+
```
|
159
|
+
|
160
|
+
Edit the `site/profile/manifests/base.pp` file and ensure it has the following contents:
|
161
|
+
|
162
|
+
```
|
163
|
+
class profile::base {
|
164
|
+
class { '::ntp': }
|
165
|
+
}
|
166
|
+
```
|
167
|
+
|
168
|
+
Ensure that the user r10k runs as (typically root) can access the git
|
169
|
+
repository. See the [git environment guide](git-environments.mkd)
|
170
|
+
for more detail. You can test
|
171
|
+
the access by using su/sudo to perform `git clone yourrepoURL` as the correct
|
172
|
+
user.
|
173
|
+
|
174
|
+
# Summary
|
175
|
+
|
176
|
+
We now have the following functional pieces:
|
177
|
+
|
178
|
+
1. Puppet master
|
179
|
+
2. Hiera
|
180
|
+
3. r10k
|
181
|
+
4. Puppet code repository
|
182
|
+
5. Initial 'profile' named 'base' that will configure NTP on our servers.
|
183
|
+
|
184
|
+
This base will allow us to do all sorts of useful things. Most interesting (to me and for the purposes of this tutorial) is the ability to now utilize Git branches to help manage infrastructure as part of your software development lifecycle. Now, when you want to test a new profile, you can do the following:
|
185
|
+
|
186
|
+
1. Create a new branch of the Puppet code repository
|
187
|
+
2. Create your Puppet code in this new branch
|
188
|
+
3. Push the new branch up to the repository
|
189
|
+
4. Deploy it as a new environment using the `/opt/puppetlabs/puppet/bin/r10k deploy environment -p` command.
|
190
|
+
|
191
|
+
From any agent node (including the master), you may run the agent against the new environment by specifying it on the command line. For example, if you create the branch `test`, run puppet as:
|
192
|
+
```
|
193
|
+
puppet agent -t --environment test
|
194
|
+
```
|
195
|
+
You can also modify the `/etc/puppetlabs/puppet/puppet.conf` file on a node and add the environment setting to the agent section to make the change permanent:
|
196
|
+
```
|
197
|
+
...
|
198
|
+
[agent]
|
199
|
+
environment = test
|
200
|
+
```
|
201
|
+
Voila - you're testing code without impacting your production environment!
|
@@ -0,0 +1,45 @@
|
|
1
|
+
SVN Based Dynamic Environments
|
2
|
+
==============================
|
3
|
+
|
4
|
+
R10k can use SVN repositories to implement dynamic environments. You can create,
|
5
|
+
update, and delete Puppet environments automatically as part of your normal SVN
|
6
|
+
workflow.
|
7
|
+
|
8
|
+
How it works
|
9
|
+
------------
|
10
|
+
|
11
|
+
R10k implements a branching workflow similar to Git by using the SVN concept of
|
12
|
+
branches. SVN repositories must conform to the conventional SVN repository
|
13
|
+
structure with the directories trunk/, branches/, and optionally tags/ in the
|
14
|
+
root of the repository. R10k maps the trunk/ directory to the production
|
15
|
+
environment, and production environment, and branches (directories in branches/)
|
16
|
+
are created as environments with the name of the given branch.
|
17
|
+
|
18
|
+
Configuration
|
19
|
+
-------------
|
20
|
+
|
21
|
+
In addition to the settings that all sources support, SVN sources can specify
|
22
|
+
the following additional options:
|
23
|
+
|
24
|
+
### username/password
|
25
|
+
|
26
|
+
If the SVN repository requires credentials, you can supply the `username` and
|
27
|
+
`password` options.
|
28
|
+
|
29
|
+
Both `username` and `password` must be specified in order to SVN authentication.
|
30
|
+
|
31
|
+
**Note**: SVN credentials are passed as command line options, so the SVN
|
32
|
+
credentials may be visible in the process table when r10k is running. If you
|
33
|
+
choose to supply SVN credentials make sure that the system running r10k is
|
34
|
+
appropriately secured.
|
35
|
+
|
36
|
+
```yaml
|
37
|
+
---
|
38
|
+
sources:
|
39
|
+
myenvs:
|
40
|
+
type: svn
|
41
|
+
remote: 'svn://my-svn.server/my-svn-repo'
|
42
|
+
basedir: '/etc/puppet/environments'
|
43
|
+
username: 'azurediamond'
|
44
|
+
password: 'hunter2'
|
45
|
+
```
|
@@ -0,0 +1,132 @@
|
|
1
|
+
Usage
|
2
|
+
=====
|
3
|
+
|
4
|
+
R10k provides fairly fine grained controls over your environments to fit your
|
5
|
+
needs. If you want to do a full update of all of your environments and modules
|
6
|
+
and don't need it to be done in real time, you can trigger a full update and let
|
7
|
+
it run in the background. If you are actively developing code and need to run
|
8
|
+
very fast updates of one specific environment, you can do a targeted update of
|
9
|
+
that code as well.
|
10
|
+
|
11
|
+
All commands that deal with deploying environments are grouped under the `r10k
|
12
|
+
deploy` subcommand.
|
13
|
+
|
14
|
+
Command line invocation
|
15
|
+
-----------------------
|
16
|
+
|
17
|
+
### Deploying environments
|
18
|
+
|
19
|
+
Recursively update all environments:
|
20
|
+
|
21
|
+
r10k deploy environment --puppetfile
|
22
|
+
|
23
|
+
The simplest way to use r10k is by simply updating all environments and modules
|
24
|
+
and takes the brute force approach of "update everything, ever." When this
|
25
|
+
command is run r10k will update all sources, create new environments and delete
|
26
|
+
old environments, and recursively update all environment modules specified in
|
27
|
+
environment Puppetfiles. While this is the simplest method for running r10k, is
|
28
|
+
is also the slowest by a very large degree because it does the maximum possible
|
29
|
+
work. This should not be something you run interactively, or use on a regular
|
30
|
+
basis.
|
31
|
+
|
32
|
+
- - -
|
33
|
+
|
34
|
+
Update environments while avoiding unnecessary recursion:
|
35
|
+
|
36
|
+
r10k deploy environment
|
37
|
+
|
38
|
+
This will update existing environments and recursively create new environments.
|
39
|
+
Note that when an environment is deployed for the first time, it will
|
40
|
+
automatically update all modules as well. For subsequent updates only the
|
41
|
+
environment itself will be updated.
|
42
|
+
|
43
|
+
- - -
|
44
|
+
|
45
|
+
Update a single environment:
|
46
|
+
|
47
|
+
r10k deploy environment my_working_environment
|
48
|
+
|
49
|
+
When you're actively developing on a given environment, this is the best way to
|
50
|
+
deploy your changes. Note that when an environment is deployed for the first
|
51
|
+
time, it will automatically update all modules as well. For subsequent updates
|
52
|
+
only the environment itself will be updated.
|
53
|
+
|
54
|
+
- - -
|
55
|
+
|
56
|
+
Update a single environment and force an update of modules:
|
57
|
+
|
58
|
+
r10k deploy environment my_working_environment --puppetfile
|
59
|
+
|
60
|
+
This will update the given environment and update all contained modules. This is
|
61
|
+
useful if you want to make sure that a given environment is fully up to date.
|
62
|
+
|
63
|
+
- - -
|
64
|
+
|
65
|
+
Update a single environment and specify a default branch override:
|
66
|
+
|
67
|
+
r10k deploy environment my_working_environment --puppetfile --default-branch-override default_branch_override
|
68
|
+
|
69
|
+
This will update the given environment and update all contained modules, overrideing
|
70
|
+
the :default_branch entry in the Puppetfile of each module. This is used primarily to allow
|
71
|
+
automated r10k solutions using the control_branch pattern with a temporary branch deployment to
|
72
|
+
ensure the deployment is pushed to the correct module repository branch. Note that the :default_branch
|
73
|
+
is only ever utilized if the desired ref cannot be located.
|
74
|
+
|
75
|
+
### Deploying modules
|
76
|
+
|
77
|
+
Update a single module across all environments:
|
78
|
+
|
79
|
+
r10k deploy module apache
|
80
|
+
|
81
|
+
This is useful for when you're working on a module specified in a Puppetfile
|
82
|
+
and want to update it across all environments. See
|
83
|
+
[Puppetfile documentation](doc/puppetfile.mkd) for details on how this affects
|
84
|
+
Forge vs. Git/SVN modules.
|
85
|
+
|
86
|
+
- - -
|
87
|
+
|
88
|
+
Update multiple modules across all environments:
|
89
|
+
|
90
|
+
r10k deploy module apache jenkins java
|
91
|
+
|
92
|
+
- - -
|
93
|
+
|
94
|
+
Update one or more modules in a single environment:
|
95
|
+
|
96
|
+
r10k deploy module -e production apache jenkins java
|
97
|
+
|
98
|
+
### Viewing environments
|
99
|
+
|
100
|
+
Display all environments being managed by r10k:
|
101
|
+
|
102
|
+
r10k deploy display
|
103
|
+
|
104
|
+
Display all environments being managed by r10k, and modules specified in the
|
105
|
+
Puppetfile:
|
106
|
+
|
107
|
+
r10k deploy display -p
|
108
|
+
|
109
|
+
Display all environments being managed by r10k, and modules specified in the
|
110
|
+
Puppetfile along with their expected and actual versions:
|
111
|
+
|
112
|
+
r10k deploy display -p --detail
|
113
|
+
|
114
|
+
Display an explicit list of environments being managed by r10k and modules
|
115
|
+
specified in the Puppetfile along with their expected and actual versions:
|
116
|
+
|
117
|
+
r10k deploy display -p --detail production vmwr webrefactor
|
118
|
+
|
119
|
+
User accounts
|
120
|
+
-------------
|
121
|
+
|
122
|
+
When running commands to deploy code on a master, r10k needs to have write
|
123
|
+
access to your Puppet environment path and should create files that are
|
124
|
+
readable by the user account running the master. If you're using Puppet
|
125
|
+
Enterprise this account is `pe-puppet`, and if you're using Puppet open source
|
126
|
+
this account is `puppet`.
|
127
|
+
|
128
|
+
This can be done in a few ways. First off, you can run r10k as the puppet user
|
129
|
+
itself. You can also create a new user that has write access to the Puppet
|
130
|
+
environment path, has the same GID as the puppet user, and has a umask of 0027.
|
131
|
+
You can also run r10k as root, which is the simplest solution but does require
|
132
|
+
access control to the root user.
|