r10k 3.3.3 → 3.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +5 -5
  2. data/.github/pull_request_template.md +1 -0
  3. data/.github/workflows/docker.yml +56 -0
  4. data/.github/workflows/release.yml +36 -0
  5. data/.travis.yml +23 -8
  6. data/CHANGELOG.mkd +57 -4
  7. data/CODEOWNERS +1 -0
  8. data/Gemfile +1 -1
  9. data/README.mkd +4 -3
  10. data/azure-pipelines.yml +2 -1
  11. data/bin/r10k +1 -1
  12. data/doc/dynamic-environments/configuration.mkd +160 -2
  13. data/doc/dynamic-environments/git-environments.mkd +1 -1
  14. data/doc/dynamic-environments/master-configuration.mkd +28 -58
  15. data/doc/faq.mkd +6 -1
  16. data/doc/puppetfile.mkd +2 -0
  17. data/docker/Makefile +39 -17
  18. data/docker/r10k/Dockerfile +36 -15
  19. data/docker/r10k/adduser.sh +13 -0
  20. data/docker/r10k/docker-entrypoint.d/10-analytics.sh +1 -1
  21. data/docker/r10k/release.Dockerfile +54 -0
  22. data/docker/spec/dockerfile_spec.rb +4 -3
  23. data/docker/spec/fixtures/Puppetfile +1 -1
  24. data/integration/Rakefile +2 -2
  25. data/lib/r10k/action/deploy/environment.rb +7 -3
  26. data/lib/r10k/action/deploy/module.rb +5 -1
  27. data/lib/r10k/action/runner.rb +4 -4
  28. data/lib/r10k/cli/deploy.rb +1 -1
  29. data/lib/r10k/environment.rb +30 -0
  30. data/lib/r10k/environment/bare.rb +16 -0
  31. data/lib/r10k/environment/git.rb +6 -5
  32. data/lib/r10k/environment/svn.rb +2 -0
  33. data/lib/r10k/environment/with_modules.rb +139 -0
  34. data/lib/r10k/forge/module_release.rb +2 -2
  35. data/lib/r10k/logging/terminaloutputter.rb +1 -1
  36. data/lib/r10k/module/base.rb +5 -0
  37. data/lib/r10k/module/forge.rb +5 -1
  38. data/lib/r10k/puppetfile.rb +6 -0
  39. data/lib/r10k/source.rb +4 -0
  40. data/lib/r10k/source/exec.rb +51 -0
  41. data/lib/r10k/source/hash.rb +182 -0
  42. data/lib/r10k/source/yaml.rb +20 -0
  43. data/lib/r10k/source/yamldir.rb +32 -0
  44. data/lib/r10k/util/attempt.rb +1 -1
  45. data/lib/r10k/version.rb +4 -1
  46. data/locales/r10k.pot +65 -22
  47. data/r10k.gemspec +6 -2
  48. data/spec/unit/action/deploy/environment_spec.rb +1 -0
  49. data/spec/unit/action/deploy/module_spec.rb +13 -0
  50. data/spec/unit/action/puppetfile/install_spec.rb +3 -1
  51. data/spec/unit/action/runner_spec.rb +2 -2
  52. data/spec/unit/forge/module_release_spec.rb +14 -10
  53. data/spec/unit/source/exec_spec.rb +81 -0
  54. data/spec/unit/source/hash_spec.rb +54 -0
  55. data/spec/unit/source/yaml_spec.rb +42 -0
  56. metadata +64 -22
  57. data/MAINTAINERS +0 -18
  58. data/docker/distelli-manifest.yml +0 -9
  59. data/integration/scripts/README.mkd +0 -86
  60. data/integration/scripts/setup_r10k_env_centos5.sh +0 -23
  61. data/integration/scripts/setup_r10k_env_centos6.sh +0 -23
  62. data/integration/scripts/setup_r10k_env_rhel7.sh +0 -23
  63. data/integration/scripts/setup_r10k_env_sles11.sh +0 -23
  64. data/integration/scripts/setup_r10k_env_sles12.sh +0 -23
  65. data/integration/scripts/setup_r10k_env_ubuntu1004.sh +0 -23
  66. data/integration/scripts/setup_r10k_env_ubuntu1204.sh +0 -23
  67. data/integration/scripts/setup_r10k_env_ubuntu1404.sh +0 -23
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+ require 'r10k/source'
3
+
4
+ describe R10K::Source::Hash do
5
+
6
+ describe '.valid_environments_hash?' do
7
+ it "rejects strings" do
8
+ expect(R10K::Source::Hash.valid_environments_hash?('200 OK'))
9
+ .to eq false
10
+ end
11
+ end
12
+
13
+ let(:environments_hash) do
14
+ {
15
+ 'production' => {
16
+ 'remote' => 'https://git.example.com/puppet/control-repo.git',
17
+ 'ref' => 'release-141',
18
+ 'modules' => {
19
+ 'puppetlabs-stdlib' => '6.1.0',
20
+ 'puppetlabs-ntp' => '8.1.0',
21
+ 'example-myapp1' => {
22
+ 'git' => 'https://git.example.com/puppet/example-myapp1.git',
23
+ 'ref' => 'v1.3.0'
24
+ }
25
+ }
26
+ },
27
+ 'development' => {
28
+ 'remote' => 'https://git.example.com/puppet/control-repo.git',
29
+ 'ref' => 'master',
30
+ 'modules' => {
31
+ 'puppetlabs-stdlib' => '6.1.0',
32
+ 'puppetlabs-ntp' => '8.1.0',
33
+ 'example-myapp1' => {
34
+ 'git' => 'https://git.example.com/puppet/example-myapp1.git',
35
+ 'ref' => 'v1.3.1'
36
+ }
37
+ }
38
+ }
39
+ }
40
+ end
41
+
42
+ describe "with a prefix" do
43
+ subject do
44
+ described_class.new('hashsource', '/some/nonexistent/dir',
45
+ prefix: 'prefixed', environments: environments_hash)
46
+ end
47
+
48
+ it "prepends environment names with a prefix" do
49
+ environments = subject.environments
50
+ expect(environments[0].dirname).to eq 'prefixed_production'
51
+ expect(environments[1].dirname).to eq 'prefixed_development'
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'r10k/source'
3
+
4
+ describe R10K::Source::Yaml do
5
+
6
+ let(:environments_hash) do
7
+ {
8
+ 'production' => {
9
+ 'remote' => 'https://git.example.com/puppet/control-repo.git',
10
+ 'ref' => 'release-141',
11
+ 'modules' => {
12
+ 'puppetlabs-stdlib' => '6.1.0',
13
+ 'puppetlabs-ntp' => '8.1.0',
14
+ 'example-myapp1' => {
15
+ 'git' => 'https://git.example.com/puppet/example-myapp1.git',
16
+ 'ref' => 'v1.3.0'
17
+ }
18
+ }
19
+ },
20
+ 'development' => {
21
+ 'remote' => 'https://git.example.com/puppet/control-repo.git',
22
+ 'ref' => 'master',
23
+ 'modules' => {
24
+ 'puppetlabs-stdlib' => '6.1.0',
25
+ 'puppetlabs-ntp' => '8.1.0',
26
+ 'example-myapp1' => {
27
+ 'git' => 'https://git.example.com/puppet/example-myapp1.git',
28
+ 'ref' => 'v1.3.1'
29
+ }
30
+ }
31
+ }
32
+ }
33
+ end
34
+
35
+ describe "with valid yaml file" do
36
+ it "produces environments" do
37
+ allow(YAML).to receive(:load_file).with('/envs.yaml').and_return(environments_hash)
38
+ source = described_class.new('yamlsource', '/some/nonexistent/dir', config: '/envs.yaml')
39
+ expect(source.environments.map(&:name)).to contain_exactly('production', 'development')
40
+ end
41
+ end
42
+ end
metadata CHANGED
@@ -1,43 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r10k
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.3
4
+ version: 3.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrien Thebo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-21 00:00:00.000000000 Z
11
+ date: 2020-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: colored
14
+ name: colored2
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.2'
19
+ version: 3.1.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '1.2'
26
+ version: 3.1.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.15.6
33
+ version: 2.15.10
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: 3.0.0
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - '='
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.15.10
44
+ - - "<"
39
45
  - !ruby/object:Gem::Version
40
- version: 2.15.6
46
+ version: 3.0.0
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: log4r
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +100,40 @@ dependencies:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
102
  version: '0.24'
103
+ - !ruby/object:Gem::Dependency
104
+ name: fast_gettext
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 1.1.0
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 1.1.0
117
+ - !ruby/object:Gem::Dependency
118
+ name: gettext
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 3.0.2
124
+ - - "<"
125
+ - !ruby/object:Gem::Version
126
+ version: 3.3.0
127
+ type: :runtime
128
+ prerelease: false
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 3.0.2
134
+ - - "<"
135
+ - !ruby/object:Gem::Version
136
+ version: 3.3.0
97
137
  - !ruby/object:Gem::Dependency
98
138
  name: rspec
99
139
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +201,9 @@ extensions: []
161
201
  extra_rdoc_files: []
162
202
  files:
163
203
  - ".gitattributes"
204
+ - ".github/pull_request_template.md"
205
+ - ".github/workflows/docker.yml"
206
+ - ".github/workflows/release.yml"
164
207
  - ".gitignore"
165
208
  - ".travis.yml"
166
209
  - CHANGELOG.mkd
@@ -168,7 +211,6 @@ files:
168
211
  - CONTRIBUTING.mkd
169
212
  - Gemfile
170
213
  - LICENSE
171
- - MAINTAINERS
172
214
  - README.mkd
173
215
  - Rakefile
174
216
  - azure-pipelines.yml
@@ -193,10 +235,11 @@ files:
193
235
  - docker/Gemfile
194
236
  - docker/Makefile
195
237
  - docker/README.md
196
- - docker/distelli-manifest.yml
197
238
  - docker/r10k/Dockerfile
239
+ - docker/r10k/adduser.sh
198
240
  - docker/r10k/docker-entrypoint.d/10-analytics.sh
199
241
  - docker/r10k/docker-entrypoint.sh
242
+ - docker/r10k/release.Dockerfile
200
243
  - docker/spec/dockerfile_spec.rb
201
244
  - docker/spec/fixtures/Puppetfile
202
245
  - integration/Gemfile
@@ -221,15 +264,6 @@ files:
221
264
  - integration/pre-suite/10_git_config.rb
222
265
  - integration/pre-suite/20_pe_r10k.rb
223
266
  - integration/pre-suite/README.mkd
224
- - integration/scripts/README.mkd
225
- - integration/scripts/setup_r10k_env_centos5.sh
226
- - integration/scripts/setup_r10k_env_centos6.sh
227
- - integration/scripts/setup_r10k_env_rhel7.sh
228
- - integration/scripts/setup_r10k_env_sles11.sh
229
- - integration/scripts/setup_r10k_env_sles12.sh
230
- - integration/scripts/setup_r10k_env_ubuntu1004.sh
231
- - integration/scripts/setup_r10k_env_ubuntu1204.sh
232
- - integration/scripts/setup_r10k_env_ubuntu1404.sh
233
267
  - integration/tests/Puppetfile/HTTP_PROXY_affects_forge_source.rb
234
268
  - integration/tests/Puppetfile/HTTP_PROXY_affects_git_source.rb
235
269
  - integration/tests/README.mkd
@@ -319,10 +353,12 @@ files:
319
353
  - lib/r10k/deployment.rb
320
354
  - lib/r10k/deployment/config.rb
321
355
  - lib/r10k/environment.rb
356
+ - lib/r10k/environment/bare.rb
322
357
  - lib/r10k/environment/base.rb
323
358
  - lib/r10k/environment/git.rb
324
359
  - lib/r10k/environment/name.rb
325
360
  - lib/r10k/environment/svn.rb
361
+ - lib/r10k/environment/with_modules.rb
326
362
  - lib/r10k/errors.rb
327
363
  - lib/r10k/errors/formatting.rb
328
364
  - lib/r10k/feature.rb
@@ -372,8 +408,12 @@ files:
372
408
  - lib/r10k/settings/uri_definition.rb
373
409
  - lib/r10k/source.rb
374
410
  - lib/r10k/source/base.rb
411
+ - lib/r10k/source/exec.rb
375
412
  - lib/r10k/source/git.rb
413
+ - lib/r10k/source/hash.rb
376
414
  - lib/r10k/source/svn.rb
415
+ - lib/r10k/source/yaml.rb
416
+ - lib/r10k/source/yamldir.rb
377
417
  - lib/r10k/svn.rb
378
418
  - lib/r10k/svn/remote.rb
379
419
  - lib/r10k/svn/working_dir.rb
@@ -496,8 +536,11 @@ files:
496
536
  - spec/unit/settings/uri_definition_spec.rb
497
537
  - spec/unit/settings_spec.rb
498
538
  - spec/unit/source/base_spec.rb
539
+ - spec/unit/source/exec_spec.rb
499
540
  - spec/unit/source/git_spec.rb
541
+ - spec/unit/source/hash_spec.rb
500
542
  - spec/unit/source/svn_spec.rb
543
+ - spec/unit/source/yaml_spec.rb
501
544
  - spec/unit/source_spec.rb
502
545
  - spec/unit/svn/remote_spec.rb
503
546
  - spec/unit/svn/working_dir_spec.rb
@@ -532,8 +575,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
532
575
  - !ruby/object:Gem::Version
533
576
  version: '0'
534
577
  requirements: []
535
- rubyforge_project:
536
- rubygems_version: 2.5.1
578
+ rubygems_version: 3.0.3
537
579
  signing_key:
538
580
  specification_version: 4
539
581
  summary: Puppet environment and module deployment
@@ -1,18 +0,0 @@
1
- {
2
- "version": 1,
3
- "file_format": "This MAINTAINERS file format is described at https://github.com/puppetlabs/maintainers",
4
- "issues": "https://tickets.puppet.com/browse/RK",
5
- "internal_list": "https://groups.google.com/a/puppet.com/forum/?hl=en#!forum/discuss-code-manager-maintainers",
6
- "people": [
7
- {
8
- "github": "andersonmills",
9
- "email": "anderson@puppet.com",
10
- "name": "Anderson Mills"
11
- },
12
- {
13
- "github": "scotje",
14
- "email": "jesse@puppet.com",
15
- "name": "Jesse Scott"
16
- }
17
- ]
18
- }
@@ -1,9 +0,0 @@
1
- pe-and-platform/r10k:
2
- PreBuild:
3
- - make lint
4
- Build:
5
- - make build PUPPERWARE_ANALYTICS_STREAM=production
6
- - make test
7
- AfterBuildSuccess:
8
- - docker login -u "$DISTELLI_DOCKER_USERNAME" -p "$DISTELLI_DOCKER_PW" "$DISTELLI_DOCKER_ENDPOINT"
9
- - make publish
@@ -1,86 +0,0 @@
1
- Scripts
2
- =======
3
-
4
- This folder contains helper scripts for setting up manual testing environments
5
- using [Beaker](https://github.com/puppetlabs/beaker) configuration files. The
6
- environments created by these scripts have "r10k" fully configured along with
7
- a Git repository with a valid "production" environment.
8
-
9
- These scripts are specific to the Puppet Labs environment and will not work in
10
- other environments without alteration!
11
-
12
- ## Prerequisites
13
-
14
- To utilize this test scripts you will need to have Ruby 1.9.3 or greater
15
- installed on your system along with Bundler. Also, the scripts utilize the
16
- "vmpooler" for virtual machine creation. Access to the "vmpooler" machines
17
- require having valid SSH private keys located on your local computer. Speak
18
- with a QA team member for more information on where to find the necessary
19
- SSH keys.
20
-
21
- ## Usage
22
-
23
- The scripts are written in Bash and should run on any Linux or Mac system as
24
- long as the prerequisites mentioned above are satisfied.
25
-
26
- ### Cloning
27
-
28
- First you will need to clone the "[r10k](https://github.com/puppetlabs/r10k)" repository on your local machine:
29
-
30
- ```bash
31
- git clone git@github.com:puppetlabs/r10k.git
32
- ```
33
-
34
- ### Executing Script
35
-
36
- Navigate to the integration tests "scripts" folder of the "r10k" repository
37
- clone:
38
-
39
- ```bash
40
- cd r10k/integration/scripts
41
- ```
42
-
43
- There are separate scripts for each supported platform. Select a desired
44
- platform and execute the script:
45
-
46
- ```bash
47
- bash setup_r10k_env_centos6.sh
48
- ```
49
-
50
- ## Connecting to Machines
51
-
52
- The setup process takes about 10 minutes to complete. Once finished Beaker
53
- will report that all tests have been run successfully. The output log will
54
- list the machines created. The Puppet master will have a name ending with
55
- "-master" which you can scrape from the Beaker console output. Example:
56
-
57
- ```
58
- a9lrs93vnujsrrg.delivery.puppetlabs.net (centos-6-x86_64-master) executed in 1.26 seconds
59
- ```
60
-
61
- The FQDN of the Puppet master ("a9lrs93vnujsrrg.delivery.puppetlabs.net" in the
62
- above example) will be printed to the left of the machine tag. The machine tag
63
- is a combination of the platform and role of the virtual machine.
64
-
65
- Now that you have the FQDN you can connect to the machine using SSH:
66
-
67
- ```bash
68
- ssh -i private_key root@a9lrs93vnujsrrg.delivery.puppetlabs.net
69
- ```
70
-
71
- *Note:* The correct SSH private key needs to be installed on your local machine
72
- first. Speak with a QA representative to get the correct key for "vmpooler"
73
- machines.
74
-
75
- ## Configuration Details
76
-
77
- Now that you have successfully connected to the Puppet master you can begin
78
- manual testing. The script has configured Git on the Puppet master to provide
79
- a working "production" environment for "r10k" testing. The Git repository
80
- serving the Puppet environments is located at "/git_repos/environments.git".
81
- There is a Git clone of the remote repository located at "/root/environments".
82
-
83
- When performing manual "r10k" testing you should utilize the Git clone
84
- repository located at "/root/environments". The "r10k" configuration file
85
- "/etc/puppetlabs/r10k/r10k.yaml" is already configured to use the remote Git
86
- repository for deployments.
@@ -1,23 +0,0 @@
1
- #!/bin/bash
2
- SCRIPT_PATH=$(pwd)
3
- BASENAME_CMD="basename ${SCRIPT_PATH}"
4
- SCRIPT_BASE_PATH=`eval ${BASENAME_CMD}`
5
-
6
- if [ $SCRIPT_BASE_PATH = "scripts" ]; then
7
- cd ../
8
- fi
9
-
10
- export pe_dist_dir=http://neptune.puppetlabs.lan/4.0/ci-ready/
11
- export GIT_PROVIDER=shellgit
12
-
13
- bundle install --path .bundle/gems
14
-
15
- bundle exec beaker \
16
- --preserve-hosts always \
17
- --config configs/pe/centos-5-64mda \
18
- --debug \
19
- --keyfile ~/.ssh/id_rsa-acceptance \
20
- --pre-suite pre-suite \
21
- --load-path lib
22
-
23
- rm -rf .bundle
@@ -1,23 +0,0 @@
1
- #!/bin/bash
2
- SCRIPT_PATH=$(pwd)
3
- BASENAME_CMD="basename ${SCRIPT_PATH}"
4
- SCRIPT_BASE_PATH=`eval ${BASENAME_CMD}`
5
-
6
- if [ $SCRIPT_BASE_PATH = "scripts" ]; then
7
- cd ../
8
- fi
9
-
10
- export pe_dist_dir=http://neptune.puppetlabs.lan/4.0/ci-ready/
11
- export GIT_PROVIDER=shellgit
12
-
13
- bundle install --path .bundle/gems
14
-
15
- bundle exec beaker \
16
- --preserve-hosts always \
17
- --config configs/pe/centos-6-64mda \
18
- --debug \
19
- --keyfile ~/.ssh/id_rsa-acceptance \
20
- --pre-suite pre-suite \
21
- --load-path lib
22
-
23
- rm -rf .bundle