r10k 3.6.0 → 3.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/docker.yml +4 -1
- data/.github/workflows/release.yml +3 -2
- data/.github/workflows/rspec_tests.yml +81 -0
- data/.github/workflows/stale.yml +19 -0
- data/.travis.yml +8 -1
- data/CHANGELOG.mkd +33 -0
- data/CODEOWNERS +2 -2
- data/README.mkd +2 -2
- data/doc/common-patterns.mkd +1 -0
- data/doc/dynamic-environments/configuration.mkd +123 -42
- data/doc/dynamic-environments/usage.mkd +12 -11
- data/doc/puppetfile.mkd +23 -3
- data/docker/Gemfile +1 -1
- data/docker/Makefile +4 -3
- data/docker/docker-compose.yml +18 -0
- data/docker/r10k/Dockerfile +1 -1
- data/docker/r10k/docker-entrypoint.sh +0 -1
- data/docker/r10k/release.Dockerfile +1 -1
- data/docker/spec/dockerfile_spec.rb +26 -32
- data/integration/tests/git_source/git_source_repeated_remote.rb +2 -2
- data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb +2 -1
- data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb +2 -1
- data/integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb +1 -1
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb +2 -1
- data/integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb +1 -1
- data/integration/tests/user_scenario/complex_workflow/multi_env_remove_re-add.rb +1 -1
- data/integration/tests/user_scenario/complex_workflow/multi_env_unamanaged.rb +1 -1
- data/lib/r10k/action/base.rb +10 -0
- data/lib/r10k/action/deploy/display.rb +49 -10
- data/lib/r10k/action/deploy/environment.rb +102 -51
- data/lib/r10k/action/deploy/module.rb +55 -30
- data/lib/r10k/action/puppetfile/check.rb +3 -1
- data/lib/r10k/action/puppetfile/install.rb +20 -23
- data/lib/r10k/action/puppetfile/purge.rb +8 -2
- data/lib/r10k/action/runner.rb +34 -0
- data/lib/r10k/cli/deploy.rb +14 -7
- data/lib/r10k/cli/puppetfile.rb +5 -5
- data/lib/r10k/content_synchronizer.rb +83 -0
- data/lib/r10k/deployment.rb +1 -1
- data/lib/r10k/environment/base.rb +30 -3
- data/lib/r10k/environment/git.rb +17 -5
- data/lib/r10k/environment/name.rb +22 -4
- data/lib/r10k/environment/svn.rb +11 -4
- data/lib/r10k/environment/with_modules.rb +46 -30
- data/lib/r10k/git.rb +1 -0
- data/lib/r10k/git/cache.rb +11 -1
- data/lib/r10k/git/rugged/credentials.rb +39 -2
- data/lib/r10k/initializers.rb +2 -0
- data/lib/r10k/module.rb +1 -1
- data/lib/r10k/module/base.rb +17 -1
- data/lib/r10k/module/forge.rb +29 -11
- data/lib/r10k/module/git.rb +50 -27
- data/lib/r10k/module/local.rb +2 -1
- data/lib/r10k/module/svn.rb +24 -18
- data/lib/r10k/puppetfile.rb +66 -83
- data/lib/r10k/settings.rb +29 -2
- data/lib/r10k/source/base.rb +9 -0
- data/lib/r10k/source/git.rb +18 -7
- data/lib/r10k/source/hash.rb +5 -5
- data/lib/r10k/source/svn.rb +5 -3
- data/lib/r10k/util/cleaner.rb +21 -0
- data/lib/r10k/util/setopts.rb +33 -12
- data/lib/r10k/version.rb +1 -1
- data/locales/r10k.pot +98 -82
- data/r10k.gemspec +1 -1
- data/spec/fixtures/unit/action/r10k_creds.yaml +9 -0
- data/spec/r10k-mocks/mock_source.rb +1 -1
- data/spec/shared-examples/puppetfile-action.rb +7 -7
- data/spec/shared-examples/subprocess-runner.rb +11 -5
- data/spec/unit/action/deploy/display_spec.rb +35 -5
- data/spec/unit/action/deploy/environment_spec.rb +207 -37
- data/spec/unit/action/deploy/module_spec.rb +173 -26
- data/spec/unit/action/puppetfile/check_spec.rb +2 -2
- data/spec/unit/action/puppetfile/install_spec.rb +31 -10
- data/spec/unit/action/puppetfile/purge_spec.rb +25 -5
- data/spec/unit/action/runner_spec.rb +48 -1
- data/spec/unit/environment/git_spec.rb +19 -2
- data/spec/unit/environment/name_spec.rb +28 -0
- data/spec/unit/environment/svn_spec.rb +12 -0
- data/spec/unit/environment/with_modules_spec.rb +74 -0
- data/spec/unit/git/cache_spec.rb +10 -0
- data/spec/unit/git/rugged/credentials_spec.rb +79 -2
- data/spec/unit/git_spec.rb +3 -3
- data/spec/unit/module/forge_spec.rb +21 -13
- data/spec/unit/module/git_spec.rb +64 -1
- data/spec/unit/module_spec.rb +60 -10
- data/spec/unit/puppetfile_spec.rb +63 -60
- data/spec/unit/settings_spec.rb +12 -0
- data/spec/unit/source/git_spec.rb +15 -3
- data/spec/unit/util/purgeable_spec.rb +2 -8
- data/spec/unit/util/setopts_spec.rb +25 -1
- metadata +11 -11
- data/azure-pipelines.yml +0 -87
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a9adbfc4e0f834dfdec6b9703325c61c617ec21d2261034aa3ba702ae9a0710
|
4
|
+
data.tar.gz: f46775713081247843c4189a13349458c7dd2691ce0e9cf99ae02b1e3d21bceb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 979de4fa8399e28f4fdf742b8ca5a23a4f116a96a7131ad93bcdb859db16aae59cea5e45fd8fa03c98229fd1f321f25334775f4a4efe27eb90464bac2b1d8b37
|
7
|
+
data.tar.gz: efefb07a7a85813a0b967110e05a28a8e4badf5987cd13fec95b37dafd8dc3fdf86081f1c6a023a667c0a8f5416e53cd50ef84bb5fd39a6f70085ff2737e5913
|
@@ -29,7 +29,10 @@ jobs:
|
|
29
29
|
- run: gem install bundler
|
30
30
|
- name: Build container
|
31
31
|
working-directory: docker
|
32
|
-
run:
|
32
|
+
run: |
|
33
|
+
docker system prune --all --force --volumes
|
34
|
+
docker builder prune --force --keep-storage=10GB
|
35
|
+
make lint build test
|
33
36
|
- name: Publish container
|
34
37
|
working-directory: docker
|
35
38
|
run: |
|
@@ -3,7 +3,7 @@ name: Tag and release
|
|
3
3
|
on:
|
4
4
|
push:
|
5
5
|
branches:
|
6
|
-
-
|
6
|
+
- main
|
7
7
|
paths:
|
8
8
|
- 'lib/r10k/version.rb'
|
9
9
|
|
@@ -15,10 +15,11 @@ jobs:
|
|
15
15
|
with:
|
16
16
|
fetch-depth: '0'
|
17
17
|
- name: Bump version and push tag
|
18
|
-
uses: anothrNick/github-tag-action@1.
|
18
|
+
uses: anothrNick/github-tag-action@1.35.0
|
19
19
|
env:
|
20
20
|
GITHUB_TOKEN: ${{ secrets.PUPPET_RELEASE_GH_TOKEN }}
|
21
21
|
DEFAULT_BUMP: patch
|
22
|
+
TAG_CONTEXT: branch
|
22
23
|
WITH_V: false
|
23
24
|
# Uncomment this if the tag and version file become out-of-sync and
|
24
25
|
# you need to tag at a specific version.
|
@@ -0,0 +1,81 @@
|
|
1
|
+
name: Rspec tests
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
branches:
|
6
|
+
- main
|
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
|
@@ -0,0 +1,19 @@
|
|
1
|
+
name: Mark stale issues
|
2
|
+
|
3
|
+
on:
|
4
|
+
schedule:
|
5
|
+
- cron: "30 1 * * *"
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
stale:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/stale@v3
|
12
|
+
with:
|
13
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
14
|
+
days-before-stale: 60
|
15
|
+
days-before-close: 7
|
16
|
+
stale-issue-message: 'This issue has been marked stale because it has had no activity for 60 days. The Puppet Team is actively prioritizing existing bugs and new features, if this issue is still important to you please comment and we will add this to our backlog to complete. Otherwise, it will be closed in 7 days.'
|
17
|
+
stale-issue-label: 'stale'
|
18
|
+
stale-pr-message: "This PR has been marked stale because it has had no activity for 60 days. If you are still interested in getting this merged, please comment and we'll try to move it forward. Otherwise, it will be closed in 7 days."
|
19
|
+
stale-pr-label: 'stale'
|
data/.travis.yml
CHANGED
@@ -29,7 +29,8 @@ matrix:
|
|
29
29
|
- docker
|
30
30
|
rvm: 2.6.6
|
31
31
|
env:
|
32
|
-
- DOCKER_COMPOSE_VERSION=1.
|
32
|
+
- DOCKER_COMPOSE_VERSION=1.28.6
|
33
|
+
- DOCKER_BUILDX_VERSION=0.5.1
|
33
34
|
# necessary to prevent overwhelming TravisCI build output limits
|
34
35
|
- DOCKER_BUILD_FLAGS="--progress plain"
|
35
36
|
before_install:
|
@@ -37,9 +38,15 @@ matrix:
|
|
37
38
|
- curl --location https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname --kernel-name`-`uname --machine` > docker-compose
|
38
39
|
- chmod +x docker-compose
|
39
40
|
- sudo mv docker-compose /usr/local/bin
|
41
|
+
- mkdir -vp ~/.docker/cli-plugins
|
42
|
+
- curl --location https://github.com/docker/buildx/releases/download/v${DOCKER_BUILDX_VERSION}/buildx-v${DOCKER_BUILDX_VERSION}.linux-amd64 > ~/.docker/cli-plugins/docker-buildx
|
43
|
+
- chmod +x ~/.docker/cli-plugins/docker-buildx
|
44
|
+
- docker buildx create --name travis_builder --use
|
40
45
|
script:
|
41
46
|
- set -e
|
42
47
|
- cd docker
|
43
48
|
- make lint
|
44
49
|
- make build
|
45
50
|
- make test
|
51
|
+
after_script:
|
52
|
+
- docker buildx rm travis_builder
|
data/CHANGELOG.mkd
CHANGED
@@ -4,6 +4,39 @@ CHANGELOG
|
|
4
4
|
Unreleased
|
5
5
|
----------
|
6
6
|
|
7
|
+
3.9.2
|
8
|
+
|
9
|
+
- Makes the third parameter to R10K::Actions optional, restoring backwards compatability broken in 3.9.1.
|
10
|
+
|
11
|
+
3.9.1
|
12
|
+
-----
|
13
|
+
|
14
|
+
- Invalid module specifications in a Puppetfile will cause the R10K run to abort earlier than before. Prior to this release, the R10K run would complete, sync all other modules, and return an exit code of 1. R10K will now stop syncing modules and abort immediately. [#1161](https://github.com/puppetlabs/r10k/pull/1161)
|
15
|
+
|
16
|
+
3.9.0
|
17
|
+
-----
|
18
|
+
|
19
|
+
- Add '--modules' flag to `deploy` subcommand as a replacement to '--puppetfile', deprecate '--puppetfile'. [#1147](https://github.com/puppetlabs/r10k/pull/1147)
|
20
|
+
- Deprecate 'purge_whitelist' and favor usage of 'purge_allowlist'. [#1144](https://github.com/puppetlabs/r10k/pull/1144)
|
21
|
+
- Add 'strip\_component' environment source configuration setting, to allow deploying Git branches named like "env/production" as Puppet environments named like "production". [#1128](https://github.com/puppetlabs/r10k/pull/1128)
|
22
|
+
- A warning will be emitted when the user supplies conflicting arguments to module definitions in a Puppetfile, such as when specifying both :commit and :branch [#1130](https://github.com/puppetlabs/r10k/pull/1130)
|
23
|
+
- Add optional standard module and environment specification interface: name, type, source, version. These options can be used when specifying environments and/or modules in a yaml/exec source, as well as when specifying modules in a Puppetfile. Providing the standard interface simplifies integrations with external services [#1131](https://github.com/puppetlabs/r10k/pull/1131)
|
24
|
+
- Pin cri to 2.15.10 to maintain support for Ruby 2.3 and 2.4 [#1121](https://github.com/puppetlabs/r10k/issues/1121)
|
25
|
+
|
26
|
+
3.8.0
|
27
|
+
-----
|
28
|
+
|
29
|
+
- When a forge module fails name validation the offending name will now be printed in the error message. [#1126](https://github.com/puppetlabs/r10k/pull/1126)
|
30
|
+
- Module ref resolution will now fall back to the normal default branch if the default branch override cannot be resolved. [#1122](https://github.com/puppetlabs/r10k/pull/1122)
|
31
|
+
- Experimental feature change: conflicts between environment-defined modules and Puppetfile-defined modules now default to logging a warning and deploying the environment module version, overriding the Puppetfile. Previously, conflicts would result in an error. The behavior is now configurable via the `module_conflicts` environment setting [#1107](https://github.com/puppetlabs/r10k/pull/1107)
|
32
|
+
|
33
|
+
3.7.0
|
34
|
+
-----
|
35
|
+
|
36
|
+
- Use %LOCALAPPDATA% for Windows cachedir [#1049](https://github.com/puppetlabs/r10k/issues/1049)
|
37
|
+
- Add support for defining custom puppet.conf when generating types [#993](https://github.com/puppetlabs/r10k/pull/993)
|
38
|
+
- Update test cases to account for error message changes in Puppet 7
|
39
|
+
|
7
40
|
3.6.0
|
8
41
|
-----
|
9
42
|
|
data/CODEOWNERS
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
* @puppetlabs/puppetserver-maintainers
|
2
|
-
/docker/ @puppetlabs/
|
1
|
+
* @puppetlabs/puppetserver-maintainers
|
2
|
+
/docker/ @puppetlabs/platform-services
|
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.
|
21
|
-
Ruby 2.
|
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.
|
data/doc/common-patterns.mkd
CHANGED
@@ -42,3 +42,4 @@ publicly available hook. These include:
|
|
42
42
|
* [Reaktor](https://github.com/pzim/reaktor)
|
43
43
|
* [zack/r10k's Webhooks](https://forge.puppetlabs.com/zack/r10k#webhook-support)
|
44
44
|
(Puppet Enterprise only)
|
45
|
+
* [Simple Puppet Provisioner](https://github.com/mbaynton/SimplePuppetProvisioner)
|
@@ -249,9 +249,9 @@ found which is neither committed to the control repo branch that maps to that
|
|
249
249
|
environment, nor declared in a Puppetfile committed to that branch.
|
250
250
|
|
251
251
|
Enabling this purge level will cause r10k to load and parse the Puppetfile for
|
252
|
-
the environment even without the `--
|
252
|
+
the environment even without the `--modules` flag being set. However,
|
253
253
|
Puppetfile content will still only be deployed if the environment is new or
|
254
|
-
the `--
|
254
|
+
the `--modules` flag is set. Additionally, no environment-level content
|
255
255
|
will be purged if any errors are encountered while evaluating the Puppetfile
|
256
256
|
or deploying its contents.
|
257
257
|
|
@@ -266,31 +266,31 @@ managed by a Puppetfile include the configured `moduledir` (which defaults to
|
|
266
266
|
"modules") as well as alternate directories specified as an `install_path`
|
267
267
|
option to any Puppetfile content declarations.
|
268
268
|
|
269
|
-
#### purge\
|
269
|
+
#### purge\_allowlist
|
270
270
|
|
271
|
-
The `
|
271
|
+
The `purge_allowlist` setting exempts the specified filename patterns from
|
272
272
|
being purged. This setting is currently only considered during `environment`
|
273
273
|
level purging. (See above.) Given value must be a list of shell style filename
|
274
274
|
patterns in string format.
|
275
275
|
|
276
276
|
See the Ruby [documentation for the `fnmatch` method](http://ruby-doc.org/core-2.2.0/File.html#method-c-fnmatch)
|
277
277
|
for more details on valid patterns. Note that the `FNM_PATHNAME` and
|
278
|
-
`FNM_DOTMATCH` flags are in effect when r10k considers the
|
278
|
+
`FNM_DOTMATCH` flags are in effect when r10k considers the allowlist.
|
279
279
|
|
280
280
|
Patterns are relative to the root of the environment being purged and *do
|
281
|
-
not match recursively* by default. For example, a
|
281
|
+
not match recursively* by default. For example, a allowlist value of
|
282
282
|
`*myfile*` would only preserve a matching file at the root of the
|
283
283
|
environment. To preserve the file throughout the deployed environment,
|
284
284
|
a recursive pattern such as `**/*myfile*` would be required.
|
285
285
|
|
286
|
-
Files matching a
|
286
|
+
Files matching a allowlist pattern may still be removed if they exist in
|
287
287
|
a folder that is otherwise subject to purging. In this case, an additional
|
288
|
-
|
288
|
+
allowlist rule to preserve the containing folder is required.
|
289
289
|
|
290
290
|
```yaml
|
291
291
|
---
|
292
292
|
deploy:
|
293
|
-
|
293
|
+
purge_allowlist: [ 'custom.json', '**/*.xpp' ]
|
294
294
|
```
|
295
295
|
|
296
296
|
|
@@ -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
|
|
@@ -385,6 +394,23 @@ sources:
|
|
385
394
|
* if `false` (default) environment folder will not be prefixed
|
386
395
|
* if `String` environment folder will be prefixed with the `prefix` value.
|
387
396
|
|
397
|
+
### strip\_component
|
398
|
+
|
399
|
+
The 'strip\_component' setting allows parts of environment names from a source to have a transformation applied, removing a part of the name before turning them into Puppet environments. This is primarily useful for VCS sources (e.g. Git), because it allows branch names to use prefixes or organizing name components such as "env/production", "env/development", but deploy Puppet environments from these branches named without the leading "env/" component. E.g. "production", "development".
|
400
|
+
|
401
|
+
```yaml
|
402
|
+
---
|
403
|
+
sources:
|
404
|
+
mysource:
|
405
|
+
basedir: '/etc/puppet/environments'
|
406
|
+
strip_component: 'env/'
|
407
|
+
```
|
408
|
+
|
409
|
+
#### strip\_component behaviour
|
410
|
+
|
411
|
+
* if `string` environment names will have this prefix removed, if the prefix is present. Note that when string values are used, names can only have prefix components removed.
|
412
|
+
* if `/regex/` the regex will be matched against environment names and if a match is found, the matching name component will be removed.
|
413
|
+
|
388
414
|
### ignore_branch_prefixes
|
389
415
|
|
390
416
|
The 'ignore_branch_prefixes' setting causes environments to be ignored which match in part or whole
|
@@ -560,13 +586,13 @@ When using the YAML source type, every environment is enumerated in a single yam
|
|
560
586
|
---
|
561
587
|
production:
|
562
588
|
type: git
|
563
|
-
|
564
|
-
|
589
|
+
source: git@github.com:puppetlabs/control-repo.git
|
590
|
+
version: 8820892
|
565
591
|
|
566
592
|
development:
|
567
593
|
type: git
|
568
|
-
|
569
|
-
|
594
|
+
source: git@github.com:puppetlabs/control-repo.git
|
595
|
+
version: 8820892
|
570
596
|
```
|
571
597
|
|
572
598
|
### YAMLdir Environment Source
|
@@ -597,8 +623,8 @@ The contents of the file should be a hash specifying the enviornment type, and a
|
|
597
623
|
# production.yaml
|
598
624
|
---
|
599
625
|
type: git
|
600
|
-
|
601
|
-
|
626
|
+
source: git@github.com:puppetlabs/control-repo.git
|
627
|
+
version: 8820892
|
602
628
|
```
|
603
629
|
|
604
630
|
### Exec environment Source
|
@@ -619,7 +645,7 @@ sources:
|
|
619
645
|
|
620
646
|
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.
|
621
647
|
|
622
|
-
For the YAML environment source type, attach modules to an environment by specifying a modules key for the environment, and providing a hash of modules to attach. Each module accepts the same arguments accepted by the `mod` method in a Puppetfile.
|
648
|
+
For the YAML environment source type, attach modules to an environment by specifying a modules key for the environment, and providing a hash of modules to attach. Each module accepts the same arguments accepted by the `mod` method in a Puppetfile. For ease of reading and consistency, however, it is perferred to use the generic type, source, and version options over implementation-specific formats and options such as "ref" and "git".
|
623
649
|
|
624
650
|
The example below includes two Forge modules and one module sourced from a Git repository. The two environments are almost identical. However, a new version of the stdlib module has been deployed in development (6.2.0), that has not yet been deployed to production.
|
625
651
|
|
@@ -627,25 +653,35 @@ The example below includes two Forge modules and one module sourced from a Git r
|
|
627
653
|
---
|
628
654
|
production:
|
629
655
|
type: git
|
630
|
-
|
631
|
-
|
656
|
+
source: git@github.com:puppetlabs/control-repo.git
|
657
|
+
version: 8820892
|
632
658
|
modules:
|
633
|
-
puppetlabs-stdlib:
|
634
|
-
|
659
|
+
puppetlabs-stdlib:
|
660
|
+
type: forge
|
661
|
+
version: 6.0.0
|
662
|
+
puppetlabs-concat:
|
663
|
+
type: forge
|
664
|
+
version: 6.1.0
|
635
665
|
reidmv-xampl:
|
636
|
-
|
637
|
-
|
666
|
+
type: git
|
667
|
+
source: https://github.com/reidmv/reidmv-xampl.git
|
668
|
+
version: 62d07f2
|
638
669
|
|
639
670
|
development:
|
640
671
|
type: git
|
641
|
-
|
642
|
-
|
672
|
+
source: git@github.com:puppetlabs/control-repo.git
|
673
|
+
version: 8820892
|
643
674
|
modules:
|
644
|
-
puppetlabs-stdlib:
|
645
|
-
|
675
|
+
puppetlabs-stdlib:
|
676
|
+
type: forge
|
677
|
+
version: 6.2.0
|
678
|
+
puppetlabs-concat:
|
679
|
+
type: forge
|
680
|
+
version: 6.1.0
|
646
681
|
reidmv-xampl:
|
647
|
-
|
648
|
-
|
682
|
+
type: git
|
683
|
+
source: https://github.com/reidmv/reidmv-xampl.git
|
684
|
+
version: 62d07f2
|
649
685
|
```
|
650
686
|
|
651
687
|
An example of a single environment definition for the YAMLdir environment source type:
|
@@ -654,14 +690,49 @@ An example of a single environment definition for the YAMLdir environment source
|
|
654
690
|
# production.yaml
|
655
691
|
---
|
656
692
|
type: git
|
657
|
-
|
658
|
-
|
693
|
+
source: git@github.com:puppetlabs/control-repo.git
|
694
|
+
version: 8820892
|
695
|
+
modules:
|
696
|
+
puppetlabs-stdlib:
|
697
|
+
type: forge
|
698
|
+
version: 6.0.0
|
699
|
+
puppetlabs-concat:
|
700
|
+
type: forge
|
701
|
+
version: 6.1.0
|
702
|
+
reidmv-xampl:
|
703
|
+
type: git
|
704
|
+
source: https://github.com/reidmv/reidmv-xampl.git
|
705
|
+
version: 62d07f2
|
706
|
+
```
|
707
|
+
|
708
|
+
#### Puppetfile module conflicts
|
709
|
+
|
710
|
+
When a module is defined in an environment and also in a Puppetfile, the default behavior is for the environment definition of the module to take precedence, a warning to be logged, and the Puppetfile definition to be ignored. The behavior is configurable to optionally skip the warning, or allow a hard failure instead. Use the `module_conflicts` option in an environment definition to control this.
|
711
|
+
|
712
|
+
Available `module_conflicts` options:
|
713
|
+
|
714
|
+
* `override_and_warn` (default): the version of the module defined by the environment will be used, and the version defined in the Puppetfile will be ignored. A warning will be printed.
|
715
|
+
* `override`: the version of the module defined by the environment will be used, and the version defined in the Puppetfile will be ignored.
|
716
|
+
* `error`: an error will be raised alerting the user to the conflict. The environment will not be deployed.
|
717
|
+
|
718
|
+
```yaml
|
719
|
+
# production.yaml
|
720
|
+
---
|
721
|
+
type: git
|
722
|
+
source: git@github.com:puppetlabs/control-repo.git
|
723
|
+
version: 8820892
|
724
|
+
module_conflicts: override_and_warn
|
659
725
|
modules:
|
660
|
-
puppetlabs-stdlib:
|
661
|
-
|
726
|
+
puppetlabs-stdlib:
|
727
|
+
type: forge
|
728
|
+
version: 6.0.0
|
729
|
+
puppetlabs-concat:
|
730
|
+
type: forge
|
731
|
+
version: 6.1.0
|
662
732
|
reidmv-xampl:
|
663
|
-
|
664
|
-
|
733
|
+
type: git
|
734
|
+
source: https://github.com/reidmv/reidmv-xampl.git
|
735
|
+
version: 62d07f2
|
665
736
|
```
|
666
737
|
|
667
738
|
### Bare Environment Type
|
@@ -675,18 +746,28 @@ The bare environment type allows sources that support environment modules to ope
|
|
675
746
|
production:
|
676
747
|
type: bare
|
677
748
|
modules:
|
678
|
-
puppetlabs-stdlib:
|
679
|
-
|
749
|
+
puppetlabs-stdlib:
|
750
|
+
type: forge
|
751
|
+
version: 6.0.0
|
752
|
+
puppetlabs-concat:
|
753
|
+
type: forge
|
754
|
+
version: 6.1.0
|
680
755
|
reidmv-xampl:
|
681
|
-
|
682
|
-
|
756
|
+
type: git
|
757
|
+
source: https://github.com/reidmv/reidmv-xampl.git
|
758
|
+
version: 62d07f2
|
683
759
|
|
684
760
|
development:
|
685
761
|
type: bare
|
686
762
|
modules:
|
687
|
-
puppetlabs-stdlib:
|
688
|
-
|
763
|
+
puppetlabs-stdlib:
|
764
|
+
type: forge
|
765
|
+
version: 6.0.0
|
766
|
+
puppetlabs-concat:
|
767
|
+
type: forge
|
768
|
+
version: 6.1.0
|
689
769
|
reidmv-xampl:
|
690
|
-
|
691
|
-
|
770
|
+
type: git
|
771
|
+
source: https://github.com/reidmv/reidmv-xampl.git
|
772
|
+
version: 62d07f2
|
692
773
|
```
|