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 @@
1
+ TEST-rspec.xml
@@ -0,0 +1,4 @@
1
+ --require pupperware/spec_helper
2
+ --format RspecJunitFormatter
3
+ --out TEST-rspec.xml
4
+ --format documentation
@@ -0,0 +1,11 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'pupperware',
4
+ :git => 'https://github.com/puppetlabs/pupperware.git',
5
+ :branch => 'master',
6
+ :glob => 'gem/*.gemspec'
7
+
8
+ group :test do
9
+ gem 'rspec'
10
+ gem 'rspec_junit_formatter'
11
+ end
@@ -0,0 +1,89 @@
1
+ PUPPERWARE_ANALYTICS_STREAM ?= dev
2
+ NAMESPACE ?= puppet
3
+ git_describe = $(shell git describe --tags)
4
+ vcs_ref := $(shell git rev-parse HEAD)
5
+ build_date := $(shell date -u +%FT%T)
6
+ hadolint_available := $(shell hadolint --help > /dev/null 2>&1; echo $$?)
7
+ hadolint_command := hadolint
8
+ hadolint_container := hadolint/hadolint:latest
9
+ export BUNDLE_PATH = $(PWD)/.bundle/gems
10
+ export BUNDLE_BIN = $(PWD)/.bundle/bin
11
+ export GEMFILE = $(PWD)/Gemfile
12
+ export DOCKER_BUILDKIT = 1
13
+
14
+ ifeq ($(IS_RELEASE),true)
15
+ VERSION ?= $(shell echo $(git_describe) | sed 's/-.*//')
16
+ PUBLISHED_VERSION ?= $(shell curl --silent 'https://rubygems.org/api/v1/gems/r10k.json' | jq '."version"' | tr -d '"')
17
+ CONTAINER_EXISTS = $(shell DOCKER_CLI_EXPERIMENTAL=enabled docker manifest inspect $(NAMESPACE)/r10k:$(VERSION) > /dev/null 2>&1; echo $$?)
18
+ ifeq ($(CONTAINER_EXISTS),0)
19
+ SKIP_BUILD ?= true
20
+ else ifneq ($(VERSION),$(PUBLISHED_VERSION))
21
+ SKIP_BUILD ?= true
22
+ endif
23
+
24
+ LATEST_VERSION ?= latest
25
+ dockerfile := release.Dockerfile
26
+ dockerfile_context := r10k
27
+ else
28
+ VERSION ?= edge
29
+ IS_LATEST := false
30
+ dockerfile := Dockerfile
31
+ dockerfile_context := $(PWD)/..
32
+ endif
33
+
34
+ prep:
35
+ @git fetch --unshallow 2> /dev/null ||:
36
+ @git fetch origin 'refs/tags/*:refs/tags/*'
37
+ ifeq ($(SKIP_BUILD),true)
38
+ @echo "SKIP_BUILD is true, exiting with 1"
39
+ @exit 1
40
+ endif
41
+
42
+ lint:
43
+ ifeq ($(hadolint_available),0)
44
+ @$(hadolint_command) r10k/$(dockerfile)
45
+ else
46
+ @docker pull $(hadolint_container)
47
+ @docker run --rm -v $(PWD)/r10k/$(dockerfile):/Dockerfile -i $(hadolint_container) $(hadolint_command) Dockerfile
48
+ endif
49
+
50
+ build: prep
51
+ docker build \
52
+ ${DOCKER_BUILD_FLAGS} \
53
+ --pull \
54
+ --build-arg vcs_ref=$(vcs_ref) \
55
+ --build-arg build_date=$(build_date) \
56
+ --build-arg version=$(VERSION) \
57
+ --build-arg pupperware_analytics_stream=$(PUPPERWARE_ANALYTICS_STREAM) \
58
+ --file r10k/$(dockerfile) \
59
+ --tag $(NAMESPACE)/r10k:$(VERSION) $(dockerfile_context)
60
+ ifeq ($(IS_LATEST),true)
61
+ @docker tag $(NAMESPACE)/r10k:$(VERSION) puppet/r10k:$(LATEST_VERSION)
62
+ endif
63
+
64
+ test: prep
65
+ @bundle install --path $$BUNDLE_PATH --gemfile $$GEMFILE --with test
66
+ @bundle update
67
+ @PUPPET_TEST_DOCKER_IMAGE=$(NAMESPACE)/r10k:$(VERSION) \
68
+ bundle exec --gemfile $$GEMFILE \
69
+ rspec spec
70
+
71
+ push-image: prep
72
+ @docker push $(NAMESPACE)/r10k:$(VERSION)
73
+ ifeq ($(IS_LATEST),true)
74
+ @docker push $(NAMESPACE)/r10k:$(LATEST_VERSION)
75
+ endif
76
+
77
+ push-readme:
78
+ @docker pull sheogorath/readme-to-dockerhub
79
+ @docker run --rm \
80
+ -v $(PWD)/README.md:/data/README.md \
81
+ -e DOCKERHUB_USERNAME="$(DOCKERHUB_USERNAME)" \
82
+ -e DOCKERHUB_PASSWORD="$(DOCKERHUB_PASSWORD)" \
83
+ -e DOCKERHUB_REPO_PREFIX=puppet \
84
+ -e DOCKERHUB_REPO_NAME=r10k \
85
+ sheogorath/readme-to-dockerhub
86
+
87
+ publish: push-image push-readme
88
+
89
+ .PHONY: lint build test prep publish push-image push-readme
@@ -0,0 +1,28 @@
1
+ # [puppetlabs/r10k](https://github.com/puppetlabs/r10k)
2
+
3
+ r10k on a Docker image. Based on Alpine 3.8.
4
+
5
+ ## Configuration
6
+
7
+ The following environment variables are supported:
8
+
9
+ - `PUPPERWARE_ANALYTICS_ENABLED`
10
+
11
+ Set to 'true' to enable Google Analytics metrics. Defaults to 'false'.
12
+
13
+ ## Analytics Data Collection
14
+
15
+ The r10k container collects usage data. This is disabled by default. You can enable it by passing `--env PUPPERWARE_ANALYTICS_ENABLED=true`
16
+ to your `docker run` command.
17
+
18
+ ### What data is collected?
19
+ * Version of the r10k container.
20
+ * Anonymized IP address is used by Google Analytics for Geolocation data, but the IP address is not collected.
21
+
22
+ ### Why does the r10k container collect data?
23
+
24
+ We collect data to help us understand how the containers are used and make decisions about upcoming changes.
25
+
26
+ ### How can I opt out of r10k container data collection?
27
+
28
+ This is disabled by default.
@@ -0,0 +1,67 @@
1
+ FROM alpine:3.9 as build
2
+
3
+ # hadolint ignore=DL3018
4
+ RUN apk add --no-cache ruby git && \
5
+ mkdir /workspace
6
+ WORKDIR /workspace
7
+ COPY . /workspace
8
+ RUN gem build r10k.gemspec && \
9
+ mv r10k*.gem r10k.gem
10
+
11
+ FROM alpine:3.9
12
+
13
+ ARG vcs_ref
14
+ ARG build_date
15
+ ARG version="3.1.0"
16
+ # Used by entrypoint to submit metrics to Google Analytics.
17
+ # Published images should use "production" for this build_arg.
18
+ ARG pupperware_analytics_stream="dev"
19
+ # required to schedule runs of "r10k" in K8s
20
+ ARG supercronic_version="0.1.9"
21
+ ARG supercronic_sha1sum="5ddf8ea26b56d4a7ff6faecdd8966610d5cb9d85"
22
+ ARG supercronic="supercronic-linux-amd64"
23
+ ARG supercronic_url="https://github.com/aptible/supercronic/releases/download/v$supercronic_version/$supercronic"
24
+
25
+ LABEL org.label-schema.maintainer="Puppet Release Team <release@puppet.com>" \
26
+ org.label-schema.vendor="Puppet" \
27
+ org.label-schema.url="https://github.com/puppetlabs/r10k" \
28
+ org.label-schema.name="r10k" \
29
+ org.label-schema.license="Apache-2.0" \
30
+ org.label-schema.vcs-url="https://github.com/puppetlabs/r10k" \
31
+ org.label-schema.schema-version="1.0" \
32
+ org.label-schema.dockerfile="/Dockerfile"
33
+
34
+ COPY docker/r10k/adduser.sh docker/r10k/docker-entrypoint.sh /
35
+ COPY docker/r10k/docker-entrypoint.d /docker-entrypoint.d
36
+
37
+ ENTRYPOINT ["/docker-entrypoint.sh"]
38
+ CMD ["help"]
39
+
40
+ # dynamic LABELs and ENV vars placed lower for the sake of Docker layer caching
41
+ ENV PUPPERWARE_ANALYTICS_STREAM="$pupperware_analytics_stream"
42
+
43
+ LABEL org.label-schema.version="$version" \
44
+ org.label-schema.vcs-ref="$vcs_ref" \
45
+ org.label-schema.build-date="$build_date"
46
+
47
+ COPY --from=build /workspace/r10k.gem /
48
+ SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
49
+ # ignore apk and gem pinning
50
+ # hadolint ignore=DL3018,DL3028
51
+ RUN chmod a+x /adduser.sh /docker-entrypoint.sh && \
52
+ # Add a puppet user to run r10k as for consistency with puppetserver
53
+ /adduser.sh && \
54
+ chown -R puppet: /docker-entrypoint.d /docker-entrypoint.sh && \
55
+ apk add --no-cache ruby openssh-client git ruby-rugged curl ruby-json ruby-etc && \
56
+ gem install --no-doc /r10k.gem && \
57
+ rm -f /r10k.gem && \
58
+ curl --fail --silent --show-error --location --remote-name "$supercronic_url" && \
59
+ echo "${supercronic_sha1sum} ${supercronic}" | sha1sum -c - && \
60
+ chmod +x "$supercronic" && \
61
+ mv "$supercronic" "/usr/local/bin/${supercronic}" && \
62
+ ln -s "/usr/local/bin/${supercronic}" /usr/local/bin/supercronic
63
+
64
+ USER puppet
65
+ WORKDIR /home/puppet
66
+
67
+ COPY docker/r10k/Dockerfile /
@@ -0,0 +1,13 @@
1
+ #!/bin/sh
2
+
3
+ getent_string="$(getent group | grep -e ':999$')"
4
+ exit_code=$?
5
+
6
+ if [ "$exit_code" = '0' ]; then
7
+ group="$(echo $getent_string | cut -d ':' -f1)"
8
+ else
9
+ addgroup -g 999 puppet
10
+ group='puppet'
11
+ fi
12
+
13
+ adduser -G $group -D -u 999 puppet
@@ -0,0 +1,30 @@
1
+ #!/bin/sh
2
+
3
+ if [ "${PUPPERWARE_ANALYTICS_ENABLED}" != "true" ]; then
4
+ # Don't print out any messages here since this is a CLI container
5
+ exit 0
6
+ fi
7
+
8
+ # See: https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
9
+ # Tracking ID
10
+ tid=UA-132486246-5
11
+ # Application Name
12
+ an=r10k
13
+ # Application Version
14
+ av=$(r10k version | cut -d ' ' -f 2)
15
+ # Anonymous Client ID
16
+ _file=/var/tmp/pwclientid
17
+ cid=$(cat $_file 2>/dev/null || (cat /proc/sys/kernel/random/uuid | tee $_file))
18
+ # Event Category
19
+ ec=${PUPPERWARE_ANALYTICS_STREAM:-dev}
20
+ # Event Action
21
+ ea=start
22
+ # Anonymize ip
23
+ aip=1
24
+
25
+ _params="v=1&t=event&tid=${tid}&an=${an}&av=${av}&cid=${cid}&ec=${ec}&ea=${ea}&aip=${aip}"
26
+ _url="http://www.google-analytics.com/collect?${_params}"
27
+
28
+ # Don't print out any messages here since this is a CLI container
29
+ curl --fail --silent --show-error --output /dev/null \
30
+ -X POST -H "Content-Length: 0" $_url
@@ -0,0 +1,11 @@
1
+ #! /bin/sh
2
+
3
+ set -e
4
+
5
+ for f in /docker-entrypoint.d/*.sh; do
6
+ # Don't print out any messages here since this is a CLI container
7
+ chmod +x "$f"
8
+ "$f"
9
+ done
10
+
11
+ exec /usr/bin/r10k "$@"
@@ -0,0 +1,54 @@
1
+ FROM alpine:3.9
2
+
3
+ ARG vcs_ref
4
+ ARG build_date
5
+ ARG version="3.1.0"
6
+ # Used by entrypoint to submit metrics to Google Analytics.
7
+ # Published images should use "production" for this build_arg.
8
+ ARG pupperware_analytics_stream="dev"
9
+ # required to schedule runs of "r10k" in K8s
10
+ ARG supercronic_version="0.1.9"
11
+ ARG supercronic_sha1sum="5ddf8ea26b56d4a7ff6faecdd8966610d5cb9d85"
12
+ ARG supercronic="supercronic-linux-amd64"
13
+ ARG supercronic_url="https://github.com/aptible/supercronic/releases/download/v$supercronic_version/$supercronic"
14
+
15
+ LABEL org.label-schema.maintainer="Puppet Release Team <release@puppet.com>" \
16
+ org.label-schema.vendor="Puppet" \
17
+ org.label-schema.url="https://github.com/puppetlabs/r10k" \
18
+ org.label-schema.name="r10k" \
19
+ org.label-schema.license="Apache-2.0" \
20
+ org.label-schema.vcs-url="https://github.com/puppetlabs/r10k" \
21
+ org.label-schema.schema-version="1.0" \
22
+ org.label-schema.dockerfile="/release.Dockerfile"
23
+
24
+ COPY adduser.sh docker-entrypoint.sh /
25
+ COPY docker-entrypoint.d /docker-entrypoint.d
26
+
27
+ ENTRYPOINT ["/docker-entrypoint.sh"]
28
+ CMD ["help"]
29
+
30
+ # dyanmic LABELs and ENV vars placed lower for the sake of Docker layer caching
31
+ ENV PUPPERWARE_ANALYTICS_STREAM="$pupperware_analytics_stream"
32
+
33
+ LABEL org.label-schema.version="$version" \
34
+ org.label-schema.vcs-ref="$vcs_ref" \
35
+ org.label-schema.build-date="$build_date"
36
+
37
+ SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
38
+ # ignore apk and gem pinning
39
+ # hadolint ignore=DL3018,DL3028
40
+ RUN chmod a+x /adduser.sh /docker-entrypoint.sh && \
41
+ /adduser.sh && \
42
+ chown -R puppet: /docker-entrypoint.d /docker-entrypoint.sh && \
43
+ apk add --no-cache ruby openssh-client git ruby-rugged curl ruby-dev make gcc musl-dev && \
44
+ gem install --no-doc r10k:"$version" json etc && \
45
+ curl --fail --silent --show-error --location --remote-name "$supercronic_url" && \
46
+ echo "${supercronic_sha1sum} ${supercronic}" | sha1sum -c - && \
47
+ chmod +x "$supercronic" && \
48
+ mv "$supercronic" "/usr/local/bin/${supercronic}" && \
49
+ ln -s "/usr/local/bin/${supercronic}" /usr/local/bin/supercronic
50
+
51
+ USER puppet
52
+ WORKDIR /home/puppet
53
+
54
+ COPY release.Dockerfile /
@@ -0,0 +1,43 @@
1
+ require 'rspec/core'
2
+ require 'fileutils'
3
+ require 'open3'
4
+
5
+ SPEC_DIRECTORY = File.dirname(__FILE__)
6
+
7
+ describe 'r10k container' do
8
+ include Pupperware::SpecHelpers
9
+ def run_r10k(command)
10
+ run_command("docker run --detach \
11
+ --volume #{File.join(SPEC_DIRECTORY, 'fixtures')}:/home/puppet/test \
12
+ #{@image} #{command} \
13
+ --verbose \
14
+ --trace \
15
+ --puppetfile test/Puppetfile")
16
+ end
17
+
18
+ before(:all) do
19
+ @image = require_test_image
20
+ end
21
+
22
+ after(:all) do
23
+ FileUtils.rm_rf(File.join(SPEC_DIRECTORY, 'fixtures', 'modules'))
24
+ end
25
+
26
+ it 'should validate the Puppetfile' do
27
+ result = run_r10k('puppetfile check')
28
+ container = result[:stdout].chomp
29
+ wait_on_container_exit(container)
30
+ expect(get_container_exit_code(container)).to eq(0)
31
+ emit_log(container)
32
+ teardown_container(container)
33
+ end
34
+
35
+ it 'should install the Puppetfile' do
36
+ result = run_r10k('puppetfile install')
37
+ container = result[:stdout].chomp
38
+ wait_on_container_exit(container)
39
+ expect(get_container_exit_code(container)).to eq(0)
40
+ emit_log(container)
41
+ teardown_container(container)
42
+ end
43
+ end
@@ -0,0 +1,2 @@
1
+ moduledir '/tmp/modules'
2
+ mod 'puppetlabs/ntp'
@@ -0,0 +1,19 @@
1
+ source ENV['GEM_SOURCE'] || 'https://artifactory.delivery.puppetlabs.net/artifactory/api/gems/rubygems/'
2
+
3
+ def location_for(place, fake_version = nil)
4
+ if place =~ /^(git:[^#]*)#(.*)/
5
+ [fake_version, { :git => $1, :branch => $2, :require => false }].compact
6
+ elsif place =~ /^file:\/\/(.*)/
7
+ ['>= 0', { :path => File.expand_path($1), :require => false }]
8
+ else
9
+ [place, { :require => false }]
10
+ end
11
+ end
12
+
13
+ gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '~> 4.5')
14
+ gem 'beaker-pe', '~> 2.0'
15
+ gem 'beaker-answers'
16
+ gem 'beaker-hostgenerator', *location_for(ENV['BEAKER_HOSTGENERATOR_VERSION'] || '~> 1.1')
17
+ gem 'beaker-abs', *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.4')
18
+ gem 'rototiller', '= 0.1.0'
19
+ gem 'beaker-qa-i18n'
@@ -0,0 +1,29 @@
1
+ Integration Tests
2
+ ===========================
3
+
4
+ This folder contains integration tests for the r10k project. These tests were originally written by the QA team
5
+ at Puppet Labs and is actively maintained by the QA team. Feel free to contribute tests to this folder as long
6
+ as they are written with [Beaker](https://github.com/puppetlabs/beaker) and follow the guidelines
7
+ below.
8
+
9
+ ## Integration?
10
+
11
+ The r10k project already contains RSpec tests and you might be wondering why there is a need to have a set of
12
+ tests separate from those tests. At Puppet Labs we define an "integration" test as:
13
+
14
+ > Validating the system state and/or side effects while completing a complete life cycle of user stories using a
15
+ > system. This type of test crosses the boundary of a discrete tool in the process of testing a defined user
16
+ > objective that utilizes a system composed of integrated components.
17
+
18
+ What this means for this project is that we will install and configure all infrastructure needed in a real-world
19
+ r10k environment.
20
+
21
+ ## Running Tests
22
+
23
+ Included in this folder under the "test_run_scripts" sub-folder are simple Bash scripts that will run suites of
24
+ Beaker tests. This scripts utilize environment variables for specifying test infrastructure. For security
25
+ reasons we do not provide examples from the Puppet Labs testing environment.
26
+
27
+ ## Documentation
28
+
29
+ Each sub-folder contains a "README.mdk" that describes the content found in the sub-folder.
@@ -0,0 +1,77 @@
1
+ require 'rototiller'
2
+
3
+ namespace :ci do
4
+ namespace :test do
5
+
6
+ desc 'Tests at the component level for the pe-r10k project'
7
+ task :component => [:check_pe_r10k_env_vars] do
8
+ Rake::Task[:beaker].invoke
9
+ end
10
+ end
11
+ end
12
+
13
+ desc 'Run tests against a packaged PE build'
14
+ task :acceptance do
15
+ @acceptance_pre_suite = 'pre-suite'
16
+ Rake::Task[:beaker].invoke
17
+ end
18
+
19
+ desc 'The acceptance tests for r10k, run in the beaker framework'
20
+ rototiller_task :beaker => [:beaker_hostgenerator] do |t|
21
+
22
+ common_setup = <<-EOS
23
+ pre-suite/00_pe_install.rb,
24
+ component/pre-suite/05_install_dev_r10k.rb,
25
+ pre-suite/10_git_config.rb,
26
+ pre-suite/20_pe_r10k.rb,
27
+ EOS
28
+ common_setup.gsub!("\n", '')
29
+
30
+ flags = [
31
+ {:name => '--hosts', :default => 'configs/generated', :override_env => 'BEAKER_HOST'},
32
+ {:name => '--keyfile', :default => "#{ENV['HOME']}/.ssh/id_rsa-acceptance", :override_env => 'BEAKER_KEYFILE'},
33
+ {:name => '--load-path', :default => 'lib'},
34
+ {:name => '--pre-suite', :default => @acceptance_pre_suite || common_setup, :override_env => 'BEAKER_PRE_SUITE'},
35
+ {:name => '--tests', :default => 'tests', :override_env => 'BEAKER_TESTS'},
36
+ {:name => '--preserve-hosts', :default => 'onfail', :override_env => 'BEAKER_PRESERVE_HOSTS'},
37
+ ]
38
+ t.add_flag(*flags)
39
+
40
+ t.add_env do |env|
41
+ env.name = 'PE_FAMILY'
42
+ env.message = 'The puppet enterprise major branch to install from'
43
+ end
44
+
45
+ t.add_env do |env|
46
+ env.name = 'pe_dist_dir'
47
+ env.message = 'The location to download PE from, for example "https://artifactory.delivery.puppetlabs.net/artifactory/generic_enterprise__local/20XX.X/ci-ready"'
48
+ ENV['pe_dist_dir'] ||= "https://artifactory.delivery.puppetlabs.net/artifactory/generic_enterprise__local/#{ENV['PE_FAMILY']}/ci-ready"
49
+ end
50
+
51
+ t.add_env do |env|
52
+ env.name = 'GIT_PROVIDER'
53
+ env.message = 'The git provider that r10k should use on a SUT'
54
+ end
55
+
56
+ t.add_command({:name => 'beaker --debug', :override_env => 'BEAKER_EXECUTABLE'})
57
+ end
58
+
59
+ desc 'Generate a host configuration used by Beaker'
60
+ rototiller_task :beaker_hostgenerator do |t|
61
+ if ENV['BEAKER_HOST'].nil?
62
+ t.add_command do |c|
63
+ c.name = 'beaker-hostgenerator'
64
+ c.argument = '> configs/generated'
65
+ end
66
+
67
+ # This is a hack :(
68
+ t.add_flag(:name => '', :default => 'centos6-64mdca-64.fa', :override_env => 'TEST_TARGET')
69
+
70
+ t.add_flag(:name => '--global-config', :default => '{forge_host=forge-aio01-petest.puppetlabs.com}', :override_env => 'BHG_GLOBAL_CONFIG')
71
+ end
72
+ end
73
+
74
+ rototiller_task :check_pe_r10k_env_vars do |t|
75
+ t.add_env(:name => 'SHA', :message => 'The sha for pe-r10k')
76
+ end
77
+