r10k 3.4.1 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.github/pull_request_template.md +4 -1
  3. data/.github/workflows/docker.yml +25 -1
  4. data/.github/workflows/rspec_tests.yml +81 -0
  5. data/.travis.yml +19 -8
  6. data/CHANGELOG.mkd +46 -6
  7. data/Gemfile +1 -1
  8. data/README.mkd +13 -4
  9. data/azure-pipelines.yml +4 -2
  10. data/doc/dynamic-environments/configuration.mkd +49 -3
  11. data/doc/faq.mkd +6 -1
  12. data/doc/puppetfile.mkd +2 -0
  13. data/docker/Makefile +19 -3
  14. data/docker/r10k/Dockerfile +22 -8
  15. data/docker/r10k/release.Dockerfile +23 -4
  16. data/integration/tests/git_source/git_source_repeated_remote.rb +68 -0
  17. data/integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb +1 -1
  18. data/integration/tests/user_scenario/complex_workflow/multi_env_remove_re-add.rb +1 -1
  19. data/integration/tests/user_scenario/complex_workflow/multi_env_unamanaged.rb +1 -1
  20. data/lib/r10k/action/deploy/environment.rb +6 -1
  21. data/lib/r10k/action/deploy/module.rb +2 -1
  22. data/lib/r10k/action/runner.rb +5 -4
  23. data/lib/r10k/cli/deploy.rb +1 -0
  24. data/lib/r10k/environment/base.rb +1 -1
  25. data/lib/r10k/forge/module_release.rb +2 -2
  26. data/lib/r10k/git/cache.rb +12 -4
  27. data/lib/r10k/git/stateful_repository.rb +4 -0
  28. data/lib/r10k/initializers.rb +1 -0
  29. data/lib/r10k/module/base.rb +8 -0
  30. data/lib/r10k/module/git.rb +4 -0
  31. data/lib/r10k/puppetfile.rb +26 -6
  32. data/lib/r10k/settings.rb +12 -1
  33. data/lib/r10k/source.rb +1 -0
  34. data/lib/r10k/source/exec.rb +51 -0
  35. data/lib/r10k/source/git.rb +22 -2
  36. data/lib/r10k/source/hash.rb +32 -8
  37. data/lib/r10k/version.rb +1 -1
  38. data/locales/r10k.pot +33 -10
  39. data/spec/shared-examples/subprocess-runner.rb +11 -5
  40. data/spec/unit/action/deploy/environment_spec.rb +9 -0
  41. data/spec/unit/action/deploy/module_spec.rb +15 -2
  42. data/spec/unit/action/puppetfile/install_spec.rb +4 -1
  43. data/spec/unit/action/runner_spec.rb +2 -2
  44. data/spec/unit/forge/module_release_spec.rb +14 -10
  45. data/spec/unit/git/cache_spec.rb +10 -0
  46. data/spec/unit/git/rugged/credentials_spec.rb +1 -1
  47. data/spec/unit/git_spec.rb +3 -3
  48. data/spec/unit/puppetfile_spec.rb +67 -2
  49. data/spec/unit/settings_spec.rb +12 -0
  50. data/spec/unit/source/exec_spec.rb +81 -0
  51. data/spec/unit/source/git_spec.rb +49 -1
  52. data/spec/unit/source/hash_spec.rb +54 -0
  53. data/spec/unit/source/yaml_spec.rb +42 -0
  54. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 564ea5e6a1060b6ceb4a5986857b612de2b47179b57998dbdb2415be1e9e795a
4
- data.tar.gz: 4f14b580320afc67069326a81d89e7335cdc6ffe1ec58f45edc497150fdb16e3
3
+ metadata.gz: d8b9e50ee8c5d0887c46aaf294074c57626229cb19218fc08dd87f5ae1812888
4
+ data.tar.gz: 96c59ea0332a86792c6922f354fdf5bed5c9cb31a37b608e09692fbce00cb1bb
5
5
  SHA512:
6
- metadata.gz: 93c8178a7c9dfa287c78d43e89685b68f27e330748d8865c9b9cb6f30b47a9012e33fed10c5b84d0ce37e14c133fc724506dcb57684a4c3f3e48fc2da884ddf2
7
- data.tar.gz: b434ab7451f5f064a37de886673e9be6ebfc24628f496f262197a5f2a9c9cdb631922138aa67dd1f6173b1ce515c48bc028fd286939d4134dc0e8f610f4b7676
6
+ metadata.gz: 45e41d47b78d5951e533f6b2dece2f2f127610b6ac6a9d3d95927699eb11369159add33e467198e0b7869442c1803b5e183e02a44c00ccc8eadf43aabf263b8e
7
+ data.tar.gz: 4790f4189c4e15502cfc633d52605e000a9607acc1b59ec2b011d14736eed3dbcb05333e3bb2817d6bad3e08603c8472267f3a19dca0d64c3f1df10c99eb4200
@@ -1 +1,4 @@
1
- Please add all notable changes to the "Unreleased" section of the CHANGELOG.
1
+ Please add all notable changes to the "Unreleased" section of the CHANGELOG in the format:
2
+ ```
3
+ - Summary of changes. [Issue or PR #](link to issue or PR)
4
+ ```
@@ -10,6 +10,7 @@ jobs:
10
10
  env:
11
11
  PUPPERWARE_ANALYTICS_STREAM: production
12
12
  IS_LATEST: true
13
+ # Still need these env vars for README publishing
13
14
  DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
14
15
  DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
15
16
 
@@ -17,6 +18,10 @@ jobs:
17
18
 
18
19
  steps:
19
20
  - uses: actions/checkout@master
21
+ - uses: azure/docker-login@v1
22
+ with: # This doesn't seem to work unless we point directly to the secrets
23
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
24
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
20
25
  - name: Set up Ruby 2.6
21
26
  uses: actions/setup-ruby@v1
22
27
  with:
@@ -28,5 +33,24 @@ jobs:
28
33
  - name: Publish container
29
34
  working-directory: docker
30
35
  run: |
31
- docker login -u "$DOCKERHUB_USERNAME" -p "$DOCKERHUB_PASSWORD"
32
36
  make publish
37
+ - name: Build release container
38
+ env:
39
+ IS_RELEASE: true
40
+ working-directory: docker
41
+ run: |
42
+ if make prep; then
43
+ make lint build test
44
+ else
45
+ echo "Skipping release container building and testing"
46
+ fi
47
+ - name: Publish release container
48
+ env:
49
+ IS_RELEASE: true
50
+ working-directory: docker
51
+ run: |
52
+ if make prep; then
53
+ make publish
54
+ else
55
+ echo "Skipping release container publishing"
56
+ fi
@@ -0,0 +1,81 @@
1
+ name: Rspec tests
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - master
7
+
8
+ jobs:
9
+ rspec_tests:
10
+ name: ${{ matrix.cfg.os }}(ruby ${{ matrix.cfg.ruby }})
11
+ strategy:
12
+ matrix:
13
+ cfg:
14
+ - {os: ubuntu-18.04, ruby: 2.4}
15
+ - {os: ubuntu-18.04, ruby: 2.5}
16
+ - {os: ubuntu-18.04, ruby: 2.6}
17
+ - {os: ubuntu-18.04, ruby: 2.7}
18
+ - {os: ubuntu-18.04, ruby: jruby-9.2.9.0}
19
+ - {os: windows-2016, ruby: 2.5}
20
+ - {os: windows-2016, ruby: 2.6}
21
+ - {os: windows-2016, ruby: 2.7}
22
+
23
+ runs-on: ${{ matrix.cfg.os }}
24
+ steps:
25
+ - name: Checkout current PR
26
+ uses: actions/checkout@v2
27
+
28
+ - name: Install ruby version ${{ matrix.cfg.ruby }}
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.cfg.ruby }}
32
+
33
+ - name: Install bundler and gems
34
+ run: |
35
+ gem install bundler
36
+ bundle config set without packaging documentation
37
+ bundle install --jobs 4 --retry 3
38
+
39
+ - name: Run tests on Windows
40
+ if: runner.os == 'Windows'
41
+ run: |
42
+ # https://github.com/ruby/ruby/pull/2791/files#diff-ff5ff976e81bebd977f0834e60416abbR97-R100
43
+ # Actions uses UTF8, causes test failures, similar to normal OS setup
44
+ $PSDefaultParameterValues['*:Encoding'] = 'utf8'
45
+ [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("IBM437")
46
+ [Console]::InputEncoding = [System.Text.Encoding]::GetEncoding("IBM437")
47
+ $Env:LOG_SPEC_ORDER = 'true'
48
+
49
+ # debug information
50
+ chcp
51
+ Get-WinSystemLocale
52
+ Get-ChildItem Env: | % { Write-Output "$($_.Key): $($_.Value)" }
53
+ # list current OpenSSL install
54
+ gem list openssl
55
+ ruby -ropenssl -e 'puts \"OpenSSL Version - #{OpenSSL::OPENSSL_VERSION}\"; puts \"OpenSSL Library Version - #{OpenSSL::OPENSSL_LIBRARY_VERSION}\"'
56
+ Get-Content Gemfile.lock
57
+ ruby -v
58
+ gem --version
59
+ bundle --version
60
+
61
+ # Run tests
62
+ bundle exec rspec --color --format documentation spec/unit
63
+
64
+ - name: Run tests on Linux
65
+ if: runner.os == 'Linux'
66
+ run: |
67
+ # debug information
68
+ cat Gemfile.lock
69
+ ruby -v
70
+ gem --version
71
+ bundle --version
72
+
73
+ if [[ ${{ matrix.cfg.ruby }} =~ "jruby" ]]; then
74
+ export _JAVA_OPTIONS='-Xmx1024m -Xms512m'
75
+
76
+ # workaround for PUP-10683
77
+ sudo apt remove rpm
78
+ fi
79
+
80
+ # Run tests
81
+ bundle exec rspec --color --format documentation spec/unit
@@ -1,14 +1,12 @@
1
1
  ---
2
2
  language: ruby
3
- services:
4
- - docker
5
3
  bundler_args: "--without system"
6
4
  script: "bundle exec rspec --color --format documentation spec/unit"
7
5
  notifications:
8
6
  email: false
9
7
  sudo: false
10
8
  jdk:
11
- - openjdk8
9
+ - openjdk11
12
10
  before_install: gem install bundler -v '< 2' --no-document
13
11
  matrix:
14
12
  include:
@@ -25,10 +23,23 @@ matrix:
25
23
  - stage: r10k tests
26
24
  rvm: jruby
27
25
  - stage: r10k container tests
26
+ dist: focal
28
27
  language: ruby
29
- rvm: 2.5.5
28
+ services:
29
+ - docker
30
+ rvm: 2.6.6
31
+ env:
32
+ - DOCKER_COMPOSE_VERSION=1.25.5
33
+ # necessary to prevent overwhelming TravisCI build output limits
34
+ - DOCKER_BUILD_FLAGS="--progress plain"
35
+ before_install:
36
+ - sudo rm /usr/local/bin/docker-compose
37
+ - curl --location https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname --kernel-name`-`uname --machine` > docker-compose
38
+ - chmod +x docker-compose
39
+ - sudo mv docker-compose /usr/local/bin
30
40
  script:
31
- - |
32
- set -ex
33
- cd docker && make lint build test
34
- set +x
41
+ - set -e
42
+ - cd docker
43
+ - make lint
44
+ - make build
45
+ - make test
@@ -2,10 +2,45 @@ CHANGELOG
2
2
  =========
3
3
 
4
4
  Unreleased
5
- ----
5
+ ----------
6
+
7
+ 3.7.0
8
+ -----
9
+
10
+ - Use %LOCALAPPDATA% for Windows cachedir [#1049](https://github.com/puppetlabs/r10k/issues/1049)
11
+ - Add support for defining custom puppet.conf when generating types [#993](https://github.com/puppetlabs/r10k/pull/993)
12
+ - Update test cases to account for error message changes in Puppet 7
13
+
14
+ 3.6.0
15
+ -----
16
+
17
+ - Add filter_command configuration option for git repositories. (Thanks to [mhumpula](https://github.com/mhumpula) for the feature.) [#823](https://github.com/puppetlabs/r10k/pull/823)
18
+ - Increase default pool_size to 4, allowing modules to be downloaded on 4 threads concurrently. [#1038](https://github.com/puppetlabs/r10k/issues/1038)
19
+ - Ensure that modules that share a cachedir download serially, to avoid cache corruption. [#1058](https://github.com/puppetlabs/r10k/issues/1058)
20
+ - Don't purge root when using `puppetfile install`. [#1084](https://github.com/puppetlabs/r10k/issues/1084)
21
+
22
+ 3.5.2
23
+ -----
24
+
25
+ - (RK-319) Clean up tmp directories used for downloading modules
26
+
27
+ 3.5.1
28
+ -----
29
+
30
+ - Upgrade Rugged Gemfile dependency for local development to ~> 1.0
31
+
32
+ 3.5.0
33
+ -----
34
+
35
+ - Add exec environment source type. The exec source type allows for the
36
+ implementation of external environment sources
37
+ [#1042](https://github.com/puppetlabs/r10k/pull/1042).
38
+ - Improve atomicity of .r10k-deploy.json writes. Fixes
39
+ [#813](https://github.com/puppetlabs/r10k/issues/813)
6
40
 
7
41
  3.4.1
8
- ----
42
+ -----
43
+
9
44
  - Add support for Ruby 2.7
10
45
  - (RK-357) Restrict gettext and fast_gettext versions for compatibility with Ruby 2.4
11
46
  - Bump cri to 2.15.10
@@ -155,6 +190,11 @@ Ruby >= 2.3 official and documented.
155
190
  - Unable to parse Puppetfile
156
191
  - Various perfomance improvements
157
192
 
193
+ 2.6.9
194
+ ----
195
+
196
+ - Don't purge root when using `puppetfile install`. [#1084](https://github.com/puppetlabs/r10k/issues/1084)
197
+
158
198
  2.6.8
159
199
  ----
160
200
 
@@ -383,7 +423,7 @@ Puppetfile should be installed to. See the [Puppetfile documentation](https://gi
383
423
 
384
424
  You can now configure how r10k purges unmanaged content after a deployment. The
385
425
  default behavior should be unchanged but there is a new "purge\_levels" configuration
386
- option that can be used to enable new behavior or de-activate certain existing
426
+ option that can be used to enable new behavior or de-activate certain existing
387
427
  behaviors. See the relevant [configuration documentation](https://github.com/puppetlabs/r10k/blob/master/doc/dynamic-environments/configuration.mkd#purge_levels) for more details.
388
428
 
389
429
  (RK-223) Ability to track control repo branch from content declarations.
@@ -430,7 +470,7 @@ fix.)
430
470
  Previously, r10k only supported the use of HTTP proxies for connecting to the Puppet
431
471
  Forge. With these changes, r10k can now be configured to use an HTTP proxy for both
432
472
  Forge and Git operations. Configuration can be specified globally, for Forge or Git
433
- only, or on a per-Git repository basis. See [configuration documentation](https://github.com/puppetlabs/r10k/blob/master/doc/dynamic-environments/configuration.mkd)
473
+ only, or on a per-Git repository basis. See [configuration documentation](https://github.com/puppetlabs/r10k/blob/master/doc/dynamic-environments/configuration.mkd)
434
474
  for more details.
435
475
 
436
476
  ### Bug Fixes
@@ -451,9 +491,9 @@ for SSH.
451
491
  (RK-241) "deploy display" action does not properly format wrapped exceptions
452
492
 
453
493
  The "deploy display" action was not capturing and logging exceptions in the same way as
454
- other related actions. This meant that in many cases, when an error occurred, the
494
+ other related actions. This meant that in many cases, when an error occurred, the
455
495
  underlying cause was not being shown. Specifically, the "deploy display" action was
456
- not benefitting from the improved error messaging for unreadable SSH keys which was
496
+ not benefitting from the improved error messaging for unreadable SSH keys which was
457
497
  added in r10k 2.2.0 as part of RK-220.
458
498
 
459
499
  2.2.1
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
4
  group :extra do
5
- gem 'rugged', '>= 0.24.0', '< 0.24.6', :platforms => :ruby
5
+ gem 'rugged', '~> 1.0', :platforms => :ruby
6
6
  end
7
7
 
8
8
  group :development do
data/README.mkd CHANGED
@@ -17,8 +17,8 @@ implementation of Puppet [environments][workflow].
17
17
  Requirements
18
18
  ------------
19
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.
20
+ R10k supports the Ruby versions `>= 2.4.0`. It's tested on Ruby 2.4.0 up to
21
+ Ruby 2.7.0 + Jruby.
22
22
 
23
23
  R10k requires additional components, depending on how you plan on managing
24
24
  environments and modules.
@@ -98,6 +98,14 @@ When localizing the strings found in R10k, follow the prescribed
98
98
  The workflow describes the rake tasks provided to generate the .po files for
99
99
  each locale.
100
100
 
101
+ Releasing
102
+ ---------
103
+ To release a new version of the r10k gem, ensure the [changelog](CHANGELOG.mkd) is up to date and open a pull request updating the [version file](lib/r10k/version.rb). When the PR is merged, a new release of the gem will be triggered.
104
+
105
+ By default, a patch (Z) release will be triggered. To release a new major (X) or minor (Y) version, include `#major` or `#minor` (respectively) in your commit message to trigger the appropriate release.
106
+
107
+ NOTE: This currently only works for the default branch. If you would like to release from a different branch, please contact the [CODEOWNERS](CODEOWNERS).
108
+
101
109
  Getting help
102
110
  ------------
103
111
 
@@ -113,6 +121,7 @@ Please see the CHANGELOG for a listing of the (very awesome) contributors.
113
121
 
114
122
  ## Maintenance
115
123
 
116
- See [MAINTAINERS](MAINTAINERS) (json file)
124
+ See [CODEOWNERS](CODEOWNERS) for active repo maintainers.
125
+
126
+ Open [issues](https://github.com/puppetlabs/r10k/issues) directly in the r10k repo.
117
127
 
118
- Tickets: File at https://tickets.puppet.com/browse/RK
@@ -17,7 +17,9 @@ variables:
17
17
  NAMESPACE: puppet
18
18
  CONTAINER_NAME: r10k
19
19
  CONTAINER_BUILD_PATH: .
20
- LINT_IGNORES: DL3008 DL3018 DL4000 DL4001 DL3028
20
+ LINT_IGNORES:
21
+ DOCKER_BUILDKIT: 1
22
+ BUILD_OPTIONS: --build-arg alpine_version=3.9
21
23
 
22
24
  workspace:
23
25
  clean: resources
@@ -52,7 +54,7 @@ steps:
52
54
 
53
55
  - powershell: |
54
56
  . "$(bundle show pupperware)/ci/build.ps1"
55
- Build-Container -Name $ENV:CONTAINER_NAME -Namespace $ENV:NAMESPACE -PathOrUri $ENV:CONTAINER_BUILD_PATH
57
+ Build-Container -Name $ENV:CONTAINER_NAME -Namespace $ENV:NAMESPACE -PathOrUri $ENV:CONTAINER_BUILD_PATH -AdditionalOptions ($ENV:BUILD_OPTIONS -split ' ')
56
58
  displayName: Build $(CONTAINER_NAME) Container
57
59
  timeoutInMinutes: 5
58
60
  name: build_container
@@ -76,9 +76,9 @@ The proxy server being used will be logged at the "debug" level when r10k runs.
76
76
  ### pool_size
77
77
 
78
78
  The pool_size setting is a number to determine how many threads should be spawn
79
- while updating modules. The default value is 1, which means the default behaviour
80
- is to update modules in a serial manner. Increasing this number should bring
81
- some performance gains.
79
+ while updating modules. The default value is 4, which means modules will be updated
80
+ in parallel. If this causes issues, change this setting to 1 to cause modules to be
81
+ updated serially.
82
82
 
83
83
  ### git
84
84
 
@@ -327,6 +327,15 @@ deploy:
327
327
  puppet_path: '/usr/local/bin/puppet'
328
328
  ```
329
329
 
330
+ #### puppet\_conf
331
+
332
+ The path to the puppet.conf file used for generating types. Defaults to `/etc/puppetlabs/puppet/puppet.conf`.
333
+
334
+ ```yaml
335
+ deploy:
336
+ puppet_conf: '/opt/puppet/conf/puppet.conf'
337
+ ```
338
+
330
339
  Source options
331
340
  --------------
332
341
 
@@ -411,6 +420,29 @@ sources:
411
420
  - 'dev'
412
421
  ```
413
422
 
423
+ ### filter_command
424
+
425
+ You can filter out any branch based on the result of the command specified as
426
+ 'filter_command'. Currently it only works with git repository. Non zero return
427
+ status of the command results in a branch beeing removed. The command is passed
428
+ additional environment variables
429
+
430
+ * GIT_DIR – path to the cached git repository
431
+ * R10K_BRANCH – branch which is being filtered
432
+ * R10K_NAME – source name from r10k configuration
433
+
434
+ This can be used for example for filtering out the branches with invalid gpg signature of their latest commit
435
+
436
+ ```yaml
437
+ ---
438
+ sources:
439
+ mysource:
440
+ basedir: '/etc/puppet/environments'
441
+ filter_command: 'git verify-commit $R10K_BRANCH 2> /dev/null'
442
+ ```
443
+
444
+ Beware that if the production branch of manifests is filtered out, you will end up with empty environment.
445
+
414
446
  Examples
415
447
  --------
416
448
 
@@ -578,6 +610,20 @@ remote: git@github.com:puppetlabs/control-repo.git
578
610
  ref: 8820892
579
611
  ```
580
612
 
613
+ ### Exec environment Source
614
+
615
+ The exec environment source runs an external command which is expected to return on stdout content compatible with the YAML environment source data format. The command may return the data in JSON or YAML form. The exec environment source is similar in purpose to Puppet's exec node terminus, used to implement external node classifiers (ENCs). R10k's exec source type allows the the implementation of external environment sources.
616
+
617
+ ```yaml
618
+ # r10k.yaml
619
+ ---
620
+ sources:
621
+ puppet:
622
+ type: exec
623
+ basedir: /etc/puppetlabs/code/environments
624
+ command: /usr/local/bin/r10k-environments.sh
625
+ ```
626
+
581
627
  ### Environment Modules
582
628
 
583
629
  The environment modules feature allows module content to be attached to an environment at environment definition time. This happens before modules specified in a Puppetfile are attached to an environment, which does not happen until deploy time. Environment module implementation depends on the environment source type.
@@ -141,7 +141,7 @@ modulepath = modules:external-modules
141
141
 
142
142
  Lastly, you can simply move your locally versioned modules to a separate
143
143
  directory to avoid conflicting over the `/modules` directory entirely. With this
144
- example as well you can use the `environment.conf file to tell Puppet which
144
+ example as well you can use the `environment.conf` file to tell Puppet which
145
145
  directories contain modules.
146
146
 
147
147
  ```
@@ -149,6 +149,11 @@ directories contain modules.
149
149
  modulepath = internal-modules:modules
150
150
  ```
151
151
 
152
+ #### Does R10K support Local/Private Forge?
153
+
154
+ Yes. Set the Forge to use _globally_ in `r10k.yaml`. see [Configuration](/doc/dynamic-environments/configuration.mkd#baseurl) for details.
155
+
156
+
152
157
  #### What does the name mean?
153
158
 
154
159
  It’s called R10K because I’m terrible at names. When I started working on R10K
@@ -54,6 +54,8 @@ The `forge` setting specifies which server that Forge based modules are fetched
54
54
  from. This is currently a noop and is provided for compatibility with
55
55
  librarian-puppet.
56
56
 
57
+ R10k supports setting the Forge to use _globally_ in `r10k.yaml`. see [Configuration](/doc/dynamic-environments/configuration.mkd#baseurl) for details.
58
+
57
59
  ### moduledir
58
60
 
59
61
  The `moduledir` setting specifies where modules from the Puppetfile will be