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.
Files changed (358) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +1 -0
  3. data/.github/pull_request_template.md +1 -0
  4. data/.github/workflows/docker.yml +56 -0
  5. data/.github/workflows/release.yml +36 -0
  6. data/.gitignore +9 -0
  7. data/.travis.yml +45 -0
  8. data/CHANGELOG.mkd +1759 -0
  9. data/CODEOWNERS +2 -0
  10. data/CONTRIBUTING.mkd +105 -0
  11. data/Gemfile +15 -0
  12. data/LICENSE +14 -0
  13. data/README.mkd +118 -0
  14. data/Rakefile +3 -0
  15. data/azure-pipelines.yml +86 -0
  16. data/bin/r10k +17 -0
  17. data/doc/common-patterns.mkd +44 -0
  18. data/doc/dynamic-environments.mkd +31 -0
  19. data/doc/dynamic-environments/configuration.mkd +669 -0
  20. data/doc/dynamic-environments/git-environments.mkd +75 -0
  21. data/doc/dynamic-environments/introduction.mkd +69 -0
  22. data/doc/dynamic-environments/master-configuration.mkd +40 -0
  23. data/doc/dynamic-environments/quickstart.mkd +201 -0
  24. data/doc/dynamic-environments/svn-environments.mkd +45 -0
  25. data/doc/dynamic-environments/usage.mkd +132 -0
  26. data/doc/dynamic-environments/workflow-guide.mkd +247 -0
  27. data/doc/faq.mkd +164 -0
  28. data/doc/git/cloning-and-mirroring.mkd +60 -0
  29. data/doc/git/providers.mkd +111 -0
  30. data/doc/puppetfile.mkd +309 -0
  31. data/doc/updating-your-puppetfile.mkd +38 -0
  32. data/docker/.gitignore +1 -0
  33. data/docker/.rspec +4 -0
  34. data/docker/Gemfile +11 -0
  35. data/docker/Makefile +89 -0
  36. data/docker/README.md +28 -0
  37. data/docker/r10k/Dockerfile +67 -0
  38. data/docker/r10k/adduser.sh +13 -0
  39. data/docker/r10k/docker-entrypoint.d/10-analytics.sh +30 -0
  40. data/docker/r10k/docker-entrypoint.sh +11 -0
  41. data/docker/r10k/release.Dockerfile +54 -0
  42. data/docker/spec/dockerfile_spec.rb +43 -0
  43. data/docker/spec/fixtures/Puppetfile +2 -0
  44. data/integration/Gemfile +19 -0
  45. data/integration/README.mkd +29 -0
  46. data/integration/Rakefile +77 -0
  47. data/integration/component/pre-suite/05_install_dev_r10k.rb +12 -0
  48. data/integration/files/README.mkd +4 -0
  49. data/integration/files/hiera.yaml +8 -0
  50. data/integration/files/modules/helloworld/manifests/init.pp +3 -0
  51. data/integration/files/modules/hieratest/manifests/init.pp +3 -0
  52. data/integration/files/modules/unicode/files/pretend_unicode +1 -0
  53. data/integration/files/modules/unicode/manifests/init.pp +6 -0
  54. data/integration/files/pre-suite/git_config.pp.erb +19 -0
  55. data/integration/files/pre-suite/prod_env.config +3 -0
  56. data/integration/files/r10k_conf.yaml.erb +9 -0
  57. data/integration/lib/README.mkd +4 -0
  58. data/integration/lib/git_utils.rb +205 -0
  59. data/integration/lib/master_manipulator.rb +205 -0
  60. data/integration/lib/r10k_utils.rb +222 -0
  61. data/integration/manifests/README.mkd +4 -0
  62. data/integration/pre-suite/00_pe_install.rb +6 -0
  63. data/integration/pre-suite/10_git_config.rb +48 -0
  64. data/integration/pre-suite/20_pe_r10k.rb +55 -0
  65. data/integration/pre-suite/README.mkd +5 -0
  66. data/integration/tests/Puppetfile/HTTP_PROXY_affects_forge_source.rb +72 -0
  67. data/integration/tests/Puppetfile/HTTP_PROXY_affects_git_source.rb +70 -0
  68. data/integration/tests/README.mkd +4 -0
  69. data/integration/tests/basic_functionality/install_pe_only_module_with_puppetfile.rb +83 -0
  70. data/integration/tests/basic_functionality/negative/neg_deploy_with_invalid_r10k_yaml.rb +51 -0
  71. data/integration/tests/basic_functionality/negative/neg_deploy_with_missing_r10k_yaml.rb +28 -0
  72. data/integration/tests/basic_functionality/negative/neg_invalid_git_provider.rb +45 -0
  73. data/integration/tests/basic_functionality/negative/negative_bad_proxy.rb +34 -0
  74. data/integration/tests/basic_functionality/proxy_specified_in_configuration.rb +103 -0
  75. data/integration/tests/basic_functionality/proxy_with_pe_only_module.rb +128 -0
  76. data/integration/tests/basic_functionality/proxy_with_puppetfile.rb +61 -0
  77. data/integration/tests/basic_functionality/rugged_git_provider_with_ssh.rb +109 -0
  78. data/integration/tests/basic_functionality/rugged_git_provider_without_ssh.rb +108 -0
  79. data/integration/tests/command_line/deploy_env_without_mod_update.rb +76 -0
  80. data/integration/tests/command_line/negative/neg_deploy_env_with_module_update.rb +77 -0
  81. data/integration/tests/command_line/negative/neg_invalid_cmd_line_arg.rb +23 -0
  82. data/integration/tests/git_source/HTTP_proxy_and_git_source.rb +70 -0
  83. data/integration/tests/git_source/git_source_git.rb +128 -0
  84. data/integration/tests/git_source/git_source_ssh.rb +87 -0
  85. data/integration/tests/git_source/git_source_submodule.rb +70 -0
  86. data/integration/tests/git_source/negative/neg_git_broken_remote.rb +38 -0
  87. data/integration/tests/git_source/negative/neg_git_unauthorized_https.rb +46 -0
  88. data/integration/tests/git_source/negative/neg_git_unauthorized_ssh.rb +73 -0
  89. data/integration/tests/git_source/negative/neg_git_unicode_branch.rb +35 -0
  90. data/integration/tests/i18n/deploy_module_with_unicode_in_file_name.rb +64 -0
  91. data/integration/tests/purging/content_not_purged_at_root.rb +89 -0
  92. data/integration/tests/purging/default_purging.rb +125 -0
  93. data/integration/tests/purging/does_not_purge_files_on_white_list.rb +93 -0
  94. data/integration/tests/purging/invalid_whitelist_types.rb +63 -0
  95. data/integration/tests/user_scenario/basic_workflow/multi_env_1000_branches.rb +66 -0
  96. data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb +111 -0
  97. data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb +117 -0
  98. data/integration/tests/user_scenario/basic_workflow/multi_env_hiera.rb +100 -0
  99. data/integration/tests/user_scenario/basic_workflow/multi_env_multi_source.rb +133 -0
  100. data/integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb +161 -0
  101. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_basedir.rb +46 -0
  102. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_forge_module.rb +48 -0
  103. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module.rb +45 -0
  104. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module_ref.rb +43 -0
  105. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_remote.rb +45 -0
  106. data/integration/tests/user_scenario/basic_workflow/negative/neg_branch_name_collision.rb +64 -0
  107. data/integration/tests/user_scenario/basic_workflow/negative/neg_disk_full.rb +75 -0
  108. data/integration/tests/user_scenario/basic_workflow/negative/neg_duplicate_module_names.rb +44 -0
  109. data/integration/tests/user_scenario/basic_workflow/negative/neg_inaccessible_forge.rb +58 -0
  110. data/integration/tests/user_scenario/basic_workflow/negative/neg_invalid_env_name.rb +34 -0
  111. data/integration/tests/user_scenario/basic_workflow/negative/neg_invalid_puppet_file.rb +36 -0
  112. data/integration/tests/user_scenario/basic_workflow/negative/neg_module_specified_at_deleted_release.rb +49 -0
  113. data/integration/tests/user_scenario/basic_workflow/negative/neg_read_only.rb +58 -0
  114. data/integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb +51 -0
  115. data/integration/tests/user_scenario/basic_workflow/single_env_10000_files.rb +75 -0
  116. data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb +104 -0
  117. data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_module.rb +81 -0
  118. data/integration/tests/user_scenario/basic_workflow/single_env_custom_module.rb +49 -0
  119. data/integration/tests/user_scenario/basic_workflow/single_env_large_files.rb +75 -0
  120. data/integration/tests/user_scenario/basic_workflow/single_env_module_already_installed.rb +82 -0
  121. data/integration/tests/user_scenario/basic_workflow/single_env_module_last_release_deleted.rb +68 -0
  122. data/integration/tests/user_scenario/basic_workflow/single_env_non-existent_base_dir.rb +94 -0
  123. data/integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb +93 -0
  124. data/integration/tests/user_scenario/basic_workflow/single_env_switch_forge_git_module.rb +117 -0
  125. data/integration/tests/user_scenario/basic_workflow/single_env_unicode_paths.rb +60 -0
  126. data/integration/tests/user_scenario/basic_workflow/single_env_upgrade_forge_mod_revert_change.rb +166 -0
  127. data/integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb +163 -0
  128. data/integration/tests/user_scenario/complex_workflow/multi_env_remove_re-add.rb +111 -0
  129. data/integration/tests/user_scenario/complex_workflow/multi_env_unamanaged.rb +78 -0
  130. data/integration/tests/user_scenario/complex_workflow/single_env_git_module_update.rb +100 -0
  131. data/lib/r10k.rb +11 -0
  132. data/lib/r10k/action/base.rb +31 -0
  133. data/lib/r10k/action/cri_runner.rb +72 -0
  134. data/lib/r10k/action/deploy.rb +9 -0
  135. data/lib/r10k/action/deploy/deploy_helpers.rb +34 -0
  136. data/lib/r10k/action/deploy/display.rb +89 -0
  137. data/lib/r10k/action/deploy/environment.rb +196 -0
  138. data/lib/r10k/action/deploy/module.rb +84 -0
  139. data/lib/r10k/action/puppetfile.rb +10 -0
  140. data/lib/r10k/action/puppetfile/check.rb +31 -0
  141. data/lib/r10k/action/puppetfile/cri_runner.rb +26 -0
  142. data/lib/r10k/action/puppetfile/install.rb +45 -0
  143. data/lib/r10k/action/puppetfile/purge.rb +28 -0
  144. data/lib/r10k/action/runner.rb +96 -0
  145. data/lib/r10k/action/visitor.rb +31 -0
  146. data/lib/r10k/cli.rb +51 -0
  147. data/lib/r10k/cli/deploy.rb +114 -0
  148. data/lib/r10k/cli/ext/logging.rb +15 -0
  149. data/lib/r10k/cli/help.rb +7 -0
  150. data/lib/r10k/cli/puppetfile.rb +74 -0
  151. data/lib/r10k/cli/version.rb +31 -0
  152. data/lib/r10k/deployment.rb +132 -0
  153. data/lib/r10k/deployment/config.rb +56 -0
  154. data/lib/r10k/environment.rb +37 -0
  155. data/lib/r10k/environment/bare.rb +16 -0
  156. data/lib/r10k/environment/base.rb +150 -0
  157. data/lib/r10k/environment/git.rb +81 -0
  158. data/lib/r10k/environment/name.rb +86 -0
  159. data/lib/r10k/environment/svn.rb +91 -0
  160. data/lib/r10k/environment/with_modules.rb +139 -0
  161. data/lib/r10k/errors.rb +61 -0
  162. data/lib/r10k/errors/formatting.rb +28 -0
  163. data/lib/r10k/feature.rb +56 -0
  164. data/lib/r10k/feature/collection.rb +23 -0
  165. data/lib/r10k/features.rb +20 -0
  166. data/lib/r10k/forge/module_release.rb +228 -0
  167. data/lib/r10k/git.rb +196 -0
  168. data/lib/r10k/git/alternates.rb +63 -0
  169. data/lib/r10k/git/cache.rb +108 -0
  170. data/lib/r10k/git/errors.rb +34 -0
  171. data/lib/r10k/git/rugged.rb +17 -0
  172. data/lib/r10k/git/rugged/bare_repository.rb +85 -0
  173. data/lib/r10k/git/rugged/base_repository.rb +93 -0
  174. data/lib/r10k/git/rugged/cache.rb +11 -0
  175. data/lib/r10k/git/rugged/credentials.rb +91 -0
  176. data/lib/r10k/git/rugged/thin_repository.rb +89 -0
  177. data/lib/r10k/git/rugged/working_repository.rb +145 -0
  178. data/lib/r10k/git/shellgit.rb +9 -0
  179. data/lib/r10k/git/shellgit/bare_repository.rb +43 -0
  180. data/lib/r10k/git/shellgit/base_repository.rb +137 -0
  181. data/lib/r10k/git/shellgit/cache.rb +11 -0
  182. data/lib/r10k/git/shellgit/thin_repository.rb +69 -0
  183. data/lib/r10k/git/shellgit/working_repository.rb +111 -0
  184. data/lib/r10k/git/stateful_repository.rb +95 -0
  185. data/lib/r10k/initializers.rb +67 -0
  186. data/lib/r10k/instance_cache.rb +32 -0
  187. data/lib/r10k/keyed_factory.rb +39 -0
  188. data/lib/r10k/logging.rb +109 -0
  189. data/lib/r10k/logging/terminaloutputter.rb +36 -0
  190. data/lib/r10k/module.rb +38 -0
  191. data/lib/r10k/module/base.rb +113 -0
  192. data/lib/r10k/module/forge.rb +177 -0
  193. data/lib/r10k/module/git.rb +109 -0
  194. data/lib/r10k/module/local.rb +36 -0
  195. data/lib/r10k/module/metadata_file.rb +31 -0
  196. data/lib/r10k/module/svn.rb +112 -0
  197. data/lib/r10k/puppetfile.rb +286 -0
  198. data/lib/r10k/settings.rb +194 -0
  199. data/lib/r10k/settings/collection.rb +123 -0
  200. data/lib/r10k/settings/container.rb +97 -0
  201. data/lib/r10k/settings/definition.rb +124 -0
  202. data/lib/r10k/settings/enum_definition.rb +30 -0
  203. data/lib/r10k/settings/helpers.rb +38 -0
  204. data/lib/r10k/settings/list.rb +107 -0
  205. data/lib/r10k/settings/loader.rb +99 -0
  206. data/lib/r10k/settings/mixin.rb +54 -0
  207. data/lib/r10k/settings/uri_definition.rb +19 -0
  208. data/lib/r10k/source.rb +42 -0
  209. data/lib/r10k/source/base.rb +74 -0
  210. data/lib/r10k/source/exec.rb +51 -0
  211. data/lib/r10k/source/git.rb +142 -0
  212. data/lib/r10k/source/hash.rb +182 -0
  213. data/lib/r10k/source/svn.rb +136 -0
  214. data/lib/r10k/source/yaml.rb +20 -0
  215. data/lib/r10k/source/yamldir.rb +32 -0
  216. data/lib/r10k/svn.rb +6 -0
  217. data/lib/r10k/svn/remote.rb +68 -0
  218. data/lib/r10k/svn/working_dir.rb +125 -0
  219. data/lib/r10k/util/attempt.rb +84 -0
  220. data/lib/r10k/util/basedir.rb +65 -0
  221. data/lib/r10k/util/commands.rb +31 -0
  222. data/lib/r10k/util/exec_env.rb +36 -0
  223. data/lib/r10k/util/license.rb +24 -0
  224. data/lib/r10k/util/platform.rb +42 -0
  225. data/lib/r10k/util/purgeable.rb +88 -0
  226. data/lib/r10k/util/setopts.rb +55 -0
  227. data/lib/r10k/util/subprocess.rb +84 -0
  228. data/lib/r10k/util/subprocess/result.rb +56 -0
  229. data/lib/r10k/util/subprocess/runner.rb +26 -0
  230. data/lib/r10k/util/subprocess/runner/jruby.rb +23 -0
  231. data/lib/r10k/util/subprocess/runner/posix.rb +103 -0
  232. data/lib/r10k/util/subprocess/runner/pump.rb +59 -0
  233. data/lib/r10k/util/subprocess/runner/windows.rb +23 -0
  234. data/lib/r10k/util/subprocess/subprocess_error.rb +24 -0
  235. data/lib/r10k/util/symbolize_keys.rb +35 -0
  236. data/lib/r10k/version.rb +6 -0
  237. data/locales/config.yaml +21 -0
  238. data/locales/r10k.pot +545 -0
  239. data/r10k.gemspec +50 -0
  240. data/r10k.yaml.example +112 -0
  241. data/spec/fixtures/empty/.empty +0 -0
  242. data/spec/fixtures/integration/git/puppet-boolean-bare.tar +0 -0
  243. data/spec/fixtures/module/forge/bad_module/metadata.json +1 -0
  244. data/spec/fixtures/module/forge/eight_hundred/Modulefile +8 -0
  245. data/spec/fixtures/module/forge/eight_hundred/metadata.json +19 -0
  246. data/spec/fixtures/unit/action/r10k.yaml +5 -0
  247. data/spec/fixtures/unit/action/r10k_cachedir.yaml +2 -0
  248. data/spec/fixtures/unit/action/r10k_generate_types.yaml +3 -0
  249. data/spec/fixtures/unit/action/r10k_puppet_path.yaml +3 -0
  250. data/spec/fixtures/unit/puppetfile/argument-error/Puppetfile +1 -0
  251. data/spec/fixtures/unit/puppetfile/default-branch-override/Puppetfile +5 -0
  252. data/spec/fixtures/unit/puppetfile/duplicate-module-error/Puppetfile +10 -0
  253. data/spec/fixtures/unit/puppetfile/invalid-syntax/Puppetfile +1 -0
  254. data/spec/fixtures/unit/puppetfile/load-error/Puppetfile +1 -0
  255. data/spec/fixtures/unit/puppetfile/name-error/Puppetfile +1 -0
  256. data/spec/fixtures/unit/puppetfile/valid-forge-with-version/Puppetfile +1 -0
  257. data/spec/fixtures/unit/puppetfile/valid-forge-without-version/Puppetfile +1 -0
  258. data/spec/fixtures/unit/util/purgeable/managed_one/expected_1 +0 -0
  259. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1 +0 -0
  260. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_unmanaged_1 +0 -0
  261. data/spec/fixtures/unit/util/purgeable/managed_one/unmanaged_1 +0 -0
  262. data/spec/fixtures/unit/util/purgeable/managed_two/expected_2 +0 -0
  263. data/spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2 +0 -0
  264. data/spec/fixtures/unit/util/subprocess/runner/no-execute.sh +3 -0
  265. data/spec/integration/git/rugged/bare_repository_spec.rb +13 -0
  266. data/spec/integration/git/rugged/thin_repository_spec.rb +14 -0
  267. data/spec/integration/git/rugged/working_repository_spec.rb +48 -0
  268. data/spec/integration/git/shellgit/bare_repository_spec.rb +13 -0
  269. data/spec/integration/git/shellgit/thin_repository_spec.rb +14 -0
  270. data/spec/integration/git/shellgit/working_repository_spec.rb +13 -0
  271. data/spec/integration/git/stateful_repository_spec.rb +159 -0
  272. data/spec/matchers/exit_with.rb +28 -0
  273. data/spec/matchers/match_realpath.rb +18 -0
  274. data/spec/r10k-mocks.rb +3 -0
  275. data/spec/r10k-mocks/mock_config.rb +33 -0
  276. data/spec/r10k-mocks/mock_env.rb +15 -0
  277. data/spec/r10k-mocks/mock_source.rb +13 -0
  278. data/spec/shared-contexts/git-fixtures.rb +55 -0
  279. data/spec/shared-examples/deploy-actions.rb +69 -0
  280. data/spec/shared-examples/git-repository.rb +38 -0
  281. data/spec/shared-examples/git/bare_repository.rb +132 -0
  282. data/spec/shared-examples/git/thin_repository.rb +26 -0
  283. data/spec/shared-examples/git/working_repository.rb +207 -0
  284. data/spec/shared-examples/puppetfile-action.rb +39 -0
  285. data/spec/shared-examples/settings/ancestry.rb +44 -0
  286. data/spec/shared-examples/subprocess-runner.rb +83 -0
  287. data/spec/spec_helper.rb +40 -0
  288. data/spec/unit/action/cri_runner_spec.rb +72 -0
  289. data/spec/unit/action/deploy/deploy_helpers_spec.rb +38 -0
  290. data/spec/unit/action/deploy/display_spec.rb +31 -0
  291. data/spec/unit/action/deploy/environment_spec.rb +395 -0
  292. data/spec/unit/action/deploy/module_spec.rb +139 -0
  293. data/spec/unit/action/puppetfile/check_spec.rb +41 -0
  294. data/spec/unit/action/puppetfile/cri_runner_spec.rb +47 -0
  295. data/spec/unit/action/puppetfile/install_spec.rb +84 -0
  296. data/spec/unit/action/puppetfile/purge_spec.rb +42 -0
  297. data/spec/unit/action/runner_spec.rb +213 -0
  298. data/spec/unit/action/visitor_spec.rb +39 -0
  299. data/spec/unit/cli_spec.rb +9 -0
  300. data/spec/unit/deployment/config_spec.rb +33 -0
  301. data/spec/unit/deployment_spec.rb +162 -0
  302. data/spec/unit/environment/base_spec.rb +109 -0
  303. data/spec/unit/environment/git_spec.rb +97 -0
  304. data/spec/unit/environment/name_spec.rb +135 -0
  305. data/spec/unit/environment/svn_spec.rb +133 -0
  306. data/spec/unit/errors/formatting_spec.rb +84 -0
  307. data/spec/unit/feature_spec.rb +50 -0
  308. data/spec/unit/forge/module_release_spec.rb +213 -0
  309. data/spec/unit/git/alternates_spec.rb +116 -0
  310. data/spec/unit/git/cache_spec.rb +55 -0
  311. data/spec/unit/git/rugged/cache_spec.rb +29 -0
  312. data/spec/unit/git/rugged/credentials_spec.rb +109 -0
  313. data/spec/unit/git/shellgit/cache_spec.rb +27 -0
  314. data/spec/unit/git/stateful_repository_spec.rb +40 -0
  315. data/spec/unit/git_spec.rb +102 -0
  316. data/spec/unit/initializers_spec.rb +68 -0
  317. data/spec/unit/instance_cache_spec.rb +78 -0
  318. data/spec/unit/keyed_factory_spec.rb +51 -0
  319. data/spec/unit/logging/terminaloutputter_spec.rb +53 -0
  320. data/spec/unit/logging_spec.rb +68 -0
  321. data/spec/unit/module/base_spec.rb +72 -0
  322. data/spec/unit/module/forge_spec.rb +207 -0
  323. data/spec/unit/module/git_spec.rb +274 -0
  324. data/spec/unit/module/metadata_file_spec.rb +68 -0
  325. data/spec/unit/module/svn_spec.rb +178 -0
  326. data/spec/unit/module_spec.rb +29 -0
  327. data/spec/unit/puppetfile_spec.rb +300 -0
  328. data/spec/unit/settings/collection_spec.rb +123 -0
  329. data/spec/unit/settings/container_spec.rb +92 -0
  330. data/spec/unit/settings/definition_spec.rb +79 -0
  331. data/spec/unit/settings/enum_definition_spec.rb +20 -0
  332. data/spec/unit/settings/inheritance_spec.rb +38 -0
  333. data/spec/unit/settings/list_spec.rb +88 -0
  334. data/spec/unit/settings/loader_spec.rb +110 -0
  335. data/spec/unit/settings/uri_definition_spec.rb +23 -0
  336. data/spec/unit/settings_spec.rb +246 -0
  337. data/spec/unit/source/base_spec.rb +31 -0
  338. data/spec/unit/source/exec_spec.rb +81 -0
  339. data/spec/unit/source/git_spec.rb +185 -0
  340. data/spec/unit/source/hash_spec.rb +54 -0
  341. data/spec/unit/source/svn_spec.rb +196 -0
  342. data/spec/unit/source/yaml_spec.rb +42 -0
  343. data/spec/unit/source_spec.rb +10 -0
  344. data/spec/unit/svn/remote_spec.rb +21 -0
  345. data/spec/unit/svn/working_dir_spec.rb +56 -0
  346. data/spec/unit/util/attempt_spec.rb +82 -0
  347. data/spec/unit/util/commands_spec.rb +61 -0
  348. data/spec/unit/util/exec_env_spec.rb +56 -0
  349. data/spec/unit/util/purgeable_spec.rb +230 -0
  350. data/spec/unit/util/setopts_spec.rb +59 -0
  351. data/spec/unit/util/subprocess/result_spec.rb +36 -0
  352. data/spec/unit/util/subprocess/runner/posix_spec.rb +7 -0
  353. data/spec/unit/util/subprocess/runner/pump_spec.rb +79 -0
  354. data/spec/unit/util/subprocess/runner/windows_spec.rb +7 -0
  355. data/spec/unit/util/subprocess/subprocess_error_spec.rb +26 -0
  356. data/spec/unit/util/subprocess_spec.rb +65 -0
  357. data/spec/unit/util/symbolize_keys_spec.rb +67 -0
  358. metadata +582 -0
@@ -0,0 +1,2 @@
1
+ * @puppetlabs/puppetserver-maintainers @adrienthebo @dhollinger
2
+ /docker/ @puppetlabs/pupperware
@@ -0,0 +1,105 @@
1
+ Contributing
2
+ ============
3
+
4
+ ## Bug reports and feature requests
5
+
6
+ Bug reports and feature requests may be filed on the [GitHub issue
7
+ tracker][github-issue-tracker]. When filing a bug report or feature request,
8
+ please spend a moment to look for existing issue reports and update those with
9
+ additional information if possible.
10
+
11
+ [github-issue-tracker]: https://github.com/puppetlabs/r10k/issues
12
+
13
+ ### Bug reports
14
+
15
+ When filing a bug report, include as much relevant detailed information as
16
+ possible. Try to include the following:
17
+
18
+ * A descriptive summary of the bug
19
+ * When the bug first occurred
20
+ * What sort of events may have triggered the bug
21
+ * The expected behavior
22
+ * The actual behavior
23
+ * Steps to reproduce
24
+
25
+ If if you're seeing errors or crashes you can run R10K with the `-v debug2` to
26
+ greatly increase the log level and `--trace` to print any stack traces that may
27
+ be caught.
28
+
29
+ Including a reproduction environment with something like Vagrant is tremendously
30
+ helpful and can greatly speed up the time it takes to fix your issue!
31
+
32
+ ### Feature requests
33
+
34
+ When filing a feature request, include information about how important the
35
+ feature is, how it would generally be used in your environment, and how often
36
+ this feature would be used by other users as well. Please keep in mind that
37
+ each added feature incurs additional maintenance costs, so feature requests
38
+ should strive to solve a frequent pain point for users or generally make r10k a
39
+ more effective tool for a large number of r10k users.
40
+
41
+ The policy towards feature requests in r10k has been greatly shaped by Brian
42
+ Granger's post on [features and scope in open source software][features-and-scope].
43
+
44
+ Try to include the following:
45
+
46
+ * A descriptive summary of the feature
47
+ * How you expect to use this feature
48
+ * How important this feature is for your environment
49
+ * How useful this feature would be for other users
50
+ * Any potential caveats this may have or any issues this feature may have
51
+
52
+ [features-and-scope]: http://brianegranger.com/?p=249 "Features and Scope in Open Source Software"
53
+
54
+ ## Documentation
55
+
56
+ Contributing fixes and improvements to the core documentation is a great way to
57
+ help improve R10K. Improvements to the FAQ, example code, and so forth can go a
58
+ long way towards making R10K more approachable for new users and existing users
59
+ alike. For more information about the submission process please see the section
60
+ on [code contributions](#code-contributions).
61
+
62
+ ## Code contributions
63
+
64
+ This documentation is based on the Project Hydra
65
+ [CONTRIBUTING](https://github.com/projecthydra/hydra-head/blob/master/CONTRIBUTING.md)
66
+ guide.
67
+
68
+ ### Making changes
69
+
70
+ * Fork the repository on GitHub
71
+ * Create a topic branch from where you want to base your work.
72
+ * For new features, base your code off of 'master'.
73
+ * For critical bugfixes, base your code off of the appropriate maintenance
74
+ branch series, eg '1.2.x' or '1.3.x'
75
+ * To create a new topic branch; `git checkout -b fix/master/my_contribution master`
76
+ * Please avoid working directly on the 'master' branch.
77
+ * Make commits of logical units.
78
+ * Your commit message should include a high level description of your work.
79
+ * Check for unnecessary whitespace with `git diff --check` before committing.
80
+
81
+ ```
82
+ [code/subsystem] (GH-#) Present tense short summary (80 characters or less)
83
+
84
+ More detailed description, if necessary. It should be wrapped to 80
85
+ characters. Try to be as descriptive as you can, even if you think that
86
+ the commit content is obvious, it may not be obvious to others. You
87
+ should add such description also if it's already present in bug tracker,
88
+ it should not be necessary to visit a webpage to check the history.
89
+ ```
90
+
91
+ * Make sure you have added the necessary tests for your changes.
92
+ * Run _all_ the tests to assure nothing else was accidentally broken.
93
+
94
+ ### Submitting changes
95
+
96
+ * Push your changes to a topic branch in your fork of the repository.
97
+ * Submit a pull request from your fork to the project.
98
+ * Expect to have some further discussion of your submission prior to it being merged.
99
+
100
+ Please note - code review is an essential part of the code review and submission
101
+ process. In order to keep the code base clean and maintainable questions may be
102
+ asked on implementation decisions and you may be asked to make additional
103
+ changes to the contribution. Remember - feedback is never personal and should be
104
+ given to benefit both the submitter as well as the project receiving the
105
+ contribution.
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2
+ gemspec
3
+
4
+ group :extra do
5
+ gem 'rugged', '~> 1.0', :platforms => :ruby
6
+ end
7
+
8
+ group :development do
9
+ gem 'simplecov', '~> 0.9.1'
10
+ gem 'ruby-prof', :platforms => :ruby
11
+ end
12
+
13
+ if File.exists? "#{__FILE__}.local"
14
+ eval(File.read("#{__FILE__}.local"), binding)
15
+ end
data/LICENSE ADDED
@@ -0,0 +1,14 @@
1
+ Copyright 2013, 2014 Adrien Thebo
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+
@@ -0,0 +1,118 @@
1
+ r10k
2
+ ====
3
+
4
+ Puppet environment and module deployment
5
+
6
+ [![Build Status](https://travis-ci.org/puppetlabs/r10k.png?branch=master)](https://travis-ci.org/puppetlabs/r10k)
7
+
8
+ Description
9
+ -----------
10
+
11
+ [workflow]: https://puppet.com/docs/puppet/latest/environments_about.html
12
+
13
+ R10k provides a general purpose toolset for deploying Puppet environments and
14
+ modules. It implements the [Puppetfile](doc/puppetfile.mkd) format and provides a native
15
+ implementation of Puppet [environments][workflow].
16
+
17
+ Requirements
18
+ ------------
19
+
20
+ R10k supports the Ruby versions `>= 2.3.0`. It's tested on Ruby 2.3.0 up to
21
+ Ruby 2.6.0 + Jruby.
22
+
23
+ R10k requires additional components, depending on how you plan on managing
24
+ environments and modules.
25
+
26
+ - Installing modules from the Puppet Forge requires Puppet 5.0.0+ or later.
27
+ Puppet 3 or 4 may work, but is generally not recommended.
28
+ - Git is required for creating environments and modules from Git
29
+ - SVN is required for creating environments and modules from SVN
30
+
31
+ Installation
32
+ ------------
33
+
34
+ ### Rubygems
35
+
36
+ For general use, you should install r10k from Ruby gems:
37
+
38
+ gem install r10k
39
+ r10k help
40
+
41
+ ### Puppet Enterprise 3.x
42
+
43
+ Puppet Enterprise bundles a copy of Ruby, so if you do not want to use the
44
+ system version of Ruby with r10k, you need to use the bundled PE gem command for
45
+ installation:
46
+
47
+ /opt/puppet/bin/gem install r10k
48
+ r10k help
49
+
50
+ ### Puppet 4
51
+
52
+ Puppet 4 bundles a copy of Ruby, so if you do not want to use the
53
+ system version of Ruby with r10k, you need to use the bundled puppet gem command
54
+ for installation.
55
+
56
+ /opt/puppetlabs/puppet/bin/gem install r10k
57
+ /opt/puppetlabs/puppet/bin/r10k help
58
+
59
+ ### Bundler
60
+
61
+ If you have more specific needs or plan on modifying r10k you can run it out of
62
+ a git repository using Bundler for dependencies:
63
+
64
+ git clone git://github.com/puppetlabs/r10k
65
+ cd r10k
66
+ bundle install
67
+ bundle exec r10k help
68
+
69
+ Usage
70
+ -----
71
+
72
+ R10k has two primary roles: installing Puppet modules using a standalone
73
+ Puppetfile, and managing Git and SVN based dynamic environments. For more
74
+ information see the topic specific documentation:
75
+
76
+ * [Puppetfile Documentation](doc/puppetfile.mkd)
77
+ * [Updating your Puppetfile](doc/updating-your-puppetfile.mkd)
78
+ * [Environment Deployment Documentation](doc/dynamic-environments.mkd)
79
+ * [Quickstart](doc/dynamic-environments/quickstart.mkd)
80
+ * [Common Patterns](doc/common-patterns.mkd)
81
+ * [Workflow Guide](doc/dynamic-environments/workflow-guide.mkd)
82
+
83
+ For more general questions, see the [FAQ](doc/faq.mkd).
84
+
85
+ Development
86
+ -----------
87
+
88
+ ### i18n
89
+
90
+ R10k has now had all user-facing strings in error messages and log messages
91
+ externalized. When adding new error or log messages please follow the
92
+ instructions for [writing translatable code](https://github.com/puppetlabs/gettext-setup-gem#writing-translatable-code).
93
+
94
+ ### l10n
95
+
96
+ When localizing the strings found in R10k, follow the prescribed
97
+ [translation workflow](https://github.com/puppetlabs/gettext-setup-gem#translation-workflow).
98
+ The workflow describes the rake tasks provided to generate the .po files for
99
+ each locale.
100
+
101
+ Getting help
102
+ ------------
103
+
104
+ * IRC: r10k has a dedicated channel, `#r10k`, on Freenode where r10k questions
105
+ can be directed. Questions about r10k can frequently be asked in `#puppet` as well.
106
+ * Mailing lists: [puppet-users](https://groups.google.com/forum/#!forum/puppet-users)
107
+ * Q&A: [Puppet Ask](https://ask.puppetlabs.com/questions/)
108
+
109
+ Contributors
110
+ ------------
111
+
112
+ Please see the CHANGELOG for a listing of the (very awesome) contributors.
113
+
114
+ ## Maintenance
115
+
116
+ See [MAINTAINERS](MAINTAINERS) (json file)
117
+
118
+ Tickets: File at https://tickets.puppet.com/browse/RK
@@ -0,0 +1,3 @@
1
+ spec = Gem::Specification.find_by_name 'gettext-setup'
2
+ load "#{spec.gem_dir}/lib/tasks/gettext.rake"
3
+ GettextSetup.initialize(File.absolute_path('locales', File.dirname(__FILE__)))
@@ -0,0 +1,86 @@
1
+ # Don't run Azure when a branch is updated, only when a PR is updated.
2
+ # Prevents double builds when a PR is made from the main repo and not a fork.
3
+ trigger: none
4
+ pr:
5
+ autoCancel: true
6
+ branches:
7
+ include:
8
+ - '*'
9
+
10
+ pool:
11
+ # self-hosted agent on Windows 10 1903 environment
12
+ # includes newer Docker engine with LCOW enabled, new build of LCOW image
13
+ # includes Ruby 2.5, Go 1.10, Node.js 10.10
14
+ name: Default
15
+
16
+ variables:
17
+ NAMESPACE: puppet
18
+ CONTAINER_NAME: r10k
19
+ CONTAINER_BUILD_PATH: .
20
+ LINT_IGNORES:
21
+ DOCKER_BUILDKIT: 1
22
+
23
+ workspace:
24
+ clean: resources
25
+
26
+ steps:
27
+ - checkout: self # self represents the repo where the initial Pipelines YAML file was found
28
+ clean: true # whether to fetch clean each time
29
+
30
+ - powershell: |
31
+ $gemfile = Join-Path -Path (Get-Location) -ChildPath 'docker/Gemfile'
32
+ $gempath = Join-Path -Path (Get-Location) -ChildPath 'docker/.bundle/gems'
33
+ bundle config --local gemfile $gemfile
34
+ bundle config --local path $gempath
35
+ bundle install --with test
36
+ displayName: Fetch Dependencies
37
+ timeoutInMinutes: 1
38
+ name: fetch_deps
39
+
40
+ - powershell: |
41
+ . "$(bundle show pupperware)/ci/build.ps1"
42
+ Write-HostDiagnostics
43
+ displayName: Diagnostic Host Information
44
+ timeoutInMinutes: 2
45
+ name: hostinfo
46
+
47
+ - powershell: |
48
+ . "$(bundle show pupperware)/ci/build.ps1"
49
+ Lint-Dockerfile -Name $ENV:CONTAINER_NAME -Ignore ($ENV:LINT_IGNORES -split ' ')
50
+ displayName: Lint $(CONTAINER_NAME) Dockerfile
51
+ timeoutInMinutes: 1
52
+ name: lint_dockerfile
53
+
54
+ - powershell: |
55
+ . "$(bundle show pupperware)/ci/build.ps1"
56
+ Build-Container -Name $ENV:CONTAINER_NAME -Namespace $ENV:NAMESPACE -PathOrUri $ENV:CONTAINER_BUILD_PATH
57
+ displayName: Build $(CONTAINER_NAME) Container
58
+ timeoutInMinutes: 5
59
+ name: build_container
60
+
61
+ - powershell: |
62
+ . "$(bundle show pupperware)/ci/build.ps1"
63
+ Initialize-TestEnv
64
+ displayName: Prepare Test Environment
65
+ name: test_prepare
66
+
67
+ - powershell: |
68
+ . "$(bundle show pupperware)/ci/build.ps1"
69
+ Invoke-ContainerTest -Name $ENV:CONTAINER_NAME -Namespace $ENV:NAMESPACE
70
+ displayName: Test $(CONTAINER_NAME)
71
+ timeoutInMinutes: 5
72
+ name: test_container
73
+
74
+ - task: PublishTestResults@2
75
+ displayName: Publish $(CONTAINER_NAME) test results
76
+ inputs:
77
+ testResultsFormat: 'JUnit'
78
+ testResultsFiles: 'docker/TEST-*.xml'
79
+ testRunTitle: $(CONTAINER_NAME) Test Results
80
+
81
+ - powershell: |
82
+ . "$(bundle show pupperware)/ci/build.ps1"
83
+ Clear-BuildState -Name $ENV:CONTAINER_NAME -Namespace $ENV:NAMESPACE
84
+ displayName: Container Cleanup
85
+ timeoutInMinutes: 4
86
+ condition: always()
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'r10k/cli'
4
+ require 'colored2'
5
+
6
+ begin
7
+ R10K::CLI.command.run(ARGV)
8
+ rescue Interrupt
9
+ $stderr.puts "r10k: Aborted!".red
10
+ exit(1)
11
+ rescue SystemExit => e
12
+ exit(e.status)
13
+ rescue Exception => e
14
+ $stderr.puts "\nr10k: Runtime error: #{e.inspect}".red
15
+ $stderr.puts e.backtrace.join("\n").red if ARGV.include? '--trace'
16
+ exit(1)
17
+ end
@@ -0,0 +1,44 @@
1
+ Common Patterns
2
+ ===============
3
+
4
+ This guide provides common patterns seen in the r10k community. These patterns
5
+ are, of course, simply a guide. Understand why you are or are not using a
6
+ specific pattern before implementing it.
7
+
8
+ Repository Setup
9
+ ----------------
10
+
11
+ Use a [Control Repo](https://docs.puppet.com/pe/latest/cmgmt_control_repo.html)
12
+ to store your `Puppetfile`.
13
+
14
+ Hiera data should be in the Control repo OR as a separate source in
15
+ `r10k.yaml`. Any `hiera.yaml` in the Control repo will be ignored on a per
16
+ environment basis, locating it at `/etc/puppetlabs/puppet/hiera.yaml` is prefered.
17
+
18
+ Each puppet module should be contained in its own independent forge module or
19
+ repository.
20
+
21
+ Editing modules
22
+ ---------------
23
+
24
+ All environment content is checked out into `$environmentpath/modules` on the
25
+ node r10k is run on, either your puppet master or each masterless node. Edits
26
+ made directly to these files will be lost on the next deploy. It is best
27
+ practice not to edit code on the production system in the production paths.
28
+
29
+ You may clone upstream repositories in a regular user's directory, on the master
30
+ or on another machine. Create a new feature branch locally, make all required
31
+ edits, and push the new branch upstream when ready for testing. R10k will
32
+ deploy changes from the upstream repositories, eliminating the need for manual
33
+ updates of the `$environmentpath` contents.
34
+
35
+ Automated deploys
36
+ -----------------
37
+
38
+ To reduce manual intervention, use a post-receive hook on your control and
39
+ module repos to initiate an r10k deploy. You can develop your own or use a
40
+ publicly available hook. These include:
41
+
42
+ * [Reaktor](https://github.com/pzim/reaktor)
43
+ * [zack/r10k's Webhooks](https://forge.puppetlabs.com/zack/r10k#webhook-support)
44
+ (Puppet Enterprise only)
@@ -0,0 +1,31 @@
1
+ Dynamic Environments
2
+ ====================
3
+
4
+ Dynamic environment deployment is the core functionality of r10k.
5
+
6
+ Table of contents
7
+ -----------------
8
+
9
+ * [Introduction](dynamic-environments/introduction.mkd): A brief description of
10
+ what dynamic environments are and how they work.
11
+ * [Quickstart](dynamic-environments/quickstart.mkd): Getting started with the
12
+ essentials of dynamic environments and r10k.
13
+ * [Configuration](dynamic-environments/configuration.mkd) A reference of dynamic
14
+ environment configuration options and how they're used
15
+ * [Git environments](dynamic-environments/git-environments.mkd) How r10k
16
+ implements dynamic environments using git
17
+ * [Master Configuration](dynamic-environments/master-configuration.mkd) How to
18
+ configure your Puppet masters to use dynamic environments
19
+ * [Workflow Guide](dynamic-environments/workflow-guide.mkd) A general-purpose
20
+ workflow guide for using r10k.
21
+ * [Usage](dynamic-environments/usage.mkd) A reference of r10k commands and how
22
+ they're used.
23
+
24
+ - - -
25
+
26
+ Community guides
27
+ ----------------
28
+
29
+ * [Building a Functional Puppet Workflow Part 3: Dynamic Environments with R10k](http://garylarizza.com/blog/2014/02/18/puppet-workflow-part-3/)
30
+ * [Puppet Infrastructure with r10k](http://terrarum.net/blog/puppet-infrastructure-with-r10k.html)
31
+ * [Puppet for vSphere Admins](http://rnelson0.com/puppet-for-vsphere-admins/) Installing and using r10k in a vSphere environment