r10k 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.mkd +40 -13
- data/Gemfile +1 -2
- data/README.mkd +25 -0
- data/Rakefile +3 -0
- data/doc/dynamic-environments/configuration.mkd +91 -14
- data/doc/dynamic-environments/workflow-guide.mkd +3 -3
- data/doc/puppetfile.mkd +89 -40
- data/integration/Gemfile +2 -0
- data/integration/Rakefile +41 -0
- data/integration/tests/purging/content_not_purged_at_root.rb +89 -0
- data/integration/tests/purging/default_purging.rb +125 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module_ref.rb +1 -1
- data/lib/r10k.rb +8 -1
- data/lib/r10k/action/deploy/deploy_helpers.rb +3 -3
- data/lib/r10k/action/deploy/environment.rb +35 -14
- data/lib/r10k/action/deploy/module.rb +4 -4
- data/lib/r10k/action/puppetfile/check.rb +1 -1
- data/lib/r10k/action/puppetfile/install.rb +1 -1
- data/lib/r10k/action/runner.rb +3 -3
- data/lib/r10k/deployment.rb +8 -4
- data/lib/r10k/deployment/config.rb +1 -1
- data/lib/r10k/environment/base.rb +32 -3
- data/lib/r10k/environment/git.rb +19 -6
- data/lib/r10k/feature.rb +6 -6
- data/lib/r10k/forge/module_release.rb +4 -6
- data/lib/r10k/git.rb +7 -7
- data/lib/r10k/git/alternates.rb +1 -1
- data/lib/r10k/git/cache.rb +2 -2
- data/lib/r10k/git/rugged/bare_repository.rb +29 -9
- data/lib/r10k/git/rugged/credentials.rb +8 -8
- data/lib/r10k/git/rugged/thin_repository.rb +17 -3
- data/lib/r10k/git/rugged/working_repository.rb +12 -5
- data/lib/r10k/git/shellgit/thin_repository.rb +5 -1
- data/lib/r10k/git/shellgit/working_repository.rb +16 -2
- data/lib/r10k/git/stateful_repository.rb +33 -23
- data/lib/r10k/initializers.rb +1 -1
- data/lib/r10k/keyed_factory.rb +2 -2
- data/lib/r10k/logging.rb +1 -1
- data/lib/r10k/module.rb +4 -3
- data/lib/r10k/module/base.rb +3 -2
- data/lib/r10k/module/forge.rb +9 -4
- data/lib/r10k/module/git.rb +39 -22
- data/lib/r10k/module/local.rb +1 -1
- data/lib/r10k/module/metadata_file.rb +1 -1
- data/lib/r10k/module/svn.rb +3 -1
- data/lib/r10k/puppetfile.rb +72 -11
- data/lib/r10k/settings.rb +20 -0
- data/lib/r10k/settings/collection.rb +2 -2
- data/lib/r10k/settings/container.rb +1 -1
- data/lib/r10k/settings/enum_definition.rb +11 -3
- data/lib/r10k/settings/helpers.rb +2 -2
- data/lib/r10k/settings/list.rb +1 -1
- data/lib/r10k/settings/loader.rb +6 -6
- data/lib/r10k/settings/uri_definition.rb +1 -1
- data/lib/r10k/source/base.rb +2 -2
- data/lib/r10k/source/git.rb +4 -4
- data/lib/r10k/svn/working_dir.rb +1 -1
- data/lib/r10k/util/basedir.rb +9 -9
- data/lib/r10k/util/license.rb +3 -3
- data/lib/r10k/util/purgeable.rb +50 -24
- data/lib/r10k/util/setopts.rb +1 -1
- data/lib/r10k/util/subprocess.rb +3 -3
- data/lib/r10k/util/symbolize_keys.rb +1 -1
- data/lib/r10k/version.rb +1 -1
- data/locales/config.yaml +21 -0
- data/r10k.gemspec +3 -0
- data/spec/fixtures/unit/puppetfile/valid-forge-with-version/Puppetfile +1 -0
- data/spec/fixtures/unit/puppetfile/valid-forge-without-version/Puppetfile +1 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/expected_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_unmanaged_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_one/unmanaged_1 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_two/expected_2 +0 -0
- data/spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2 +0 -0
- data/spec/integration/git/stateful_repository_spec.rb +39 -21
- data/spec/r10k-mocks/mock_config.rb +4 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/unit/action/deploy/environment_spec.rb +71 -13
- data/spec/unit/environment/base_spec.rb +71 -0
- data/spec/unit/forge/module_release_spec.rb +7 -10
- data/spec/unit/git/stateful_repository_spec.rb +6 -6
- data/spec/unit/module/git_spec.rb +156 -5
- data/spec/unit/module_spec.rb +3 -3
- data/spec/unit/puppetfile_spec.rb +115 -0
- data/spec/unit/util/purgeable_spec.rb +230 -0
- metadata +45 -18
- data/integration/test_run_scripts/README.mkd +0 -5
- data/integration/test_run_scripts/all_tests-rugged-pe-centos6.sh +0 -20
- data/integration/test_run_scripts/all_tests-rugged-pe-rhel7.sh +0 -20
- data/integration/test_run_scripts/all_tests-rugged-pe-sles11.sh +0 -20
- data/integration/test_run_scripts/all_tests-rugged-pe-ubuntu1204.sh +0 -20
- data/integration/test_run_scripts/all_tests-rugged-pe-ubuntu1404.sh +0 -20
- data/integration/test_run_scripts/all_tests-shellgit-pe-centos6.sh +0 -20
- data/integration/test_run_scripts/all_tests-shellgit-pe-rhel7.sh +0 -20
- data/integration/test_run_scripts/all_tests-shellgit-pe-sles11.sh +0 -20
- data/integration/test_run_scripts/all_tests-shellgit-pe-ubuntu1204.sh +0 -20
- data/integration/test_run_scripts/all_tests-shellgit-pe-ubuntu1404.sh +0 -20
- data/integration/test_run_scripts/basic_functionality/all_tests-pe-centos6.sh +0 -20
- data/integration/test_run_scripts/command_line/all_tests-pe-centos6.sh +0 -20
- data/integration/test_run_scripts/git_source/all_tests-pe-centos6.sh +0 -20
- data/integration/test_run_scripts/user_scenario/basic_workflow/all_tests-pe-centos6.sh +0 -20
- data/integration/test_run_scripts/user_scenario/complex_workflow/all_tests-pe-centos6.sh +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a09bf6960068b3be8375f1f66009b753ef64644
|
4
|
+
data.tar.gz: b9ed03e076ea4e74cbc77e25d913dfc9765f7877
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88988343617f2f811b66dd58b4580d3e05c8167545635d6ba78ccfbc965d70a64a736485f75380e2f8e0bb0d1f63fcff5a72a3b3dec55e78786fe60d4e52062a
|
7
|
+
data.tar.gz: c8363914b46a62567f1571c6575ab2094664c849787f57ece270083f8729babda5422fcc614fc02b497f1d0c45a56505df54373f64b4c1f426549b26db5e83e7
|
data/.gitignore
CHANGED
data/CHANGELOG.mkd
CHANGED
@@ -1,24 +1,51 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
=========
|
3
3
|
|
4
|
-
2.
|
4
|
+
2.4.0
|
5
5
|
-----
|
6
6
|
|
7
|
-
2016/
|
7
|
+
2016/08/10
|
8
8
|
|
9
|
-
|
9
|
+
### New Features
|
10
|
+
|
11
|
+
(RK-222) New "install\_path" option for Git/SVN content.
|
12
|
+
|
13
|
+
This feature allows you to specify where inside an environment each item from the
|
14
|
+
Puppetfile should be installed to. See the [Puppetfile documentation](https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd#per-item-install-path) for details.
|
15
|
+
|
16
|
+
(RK-246) New "environment" level purging and configurable purge levels.
|
17
|
+
|
18
|
+
You can now configure how r10k purges unmanaged content after a deployment. The
|
19
|
+
default behavior should be unchanged but there is a new "purge\_levels" configuration
|
20
|
+
option that can be used to enable new behavior or de-activate certain existing
|
21
|
+
behaviors. See the relevant [configration documentation](https://github.com/puppetlabs/r10k/blob/master/doc/dynamic-environments/configuration.mkd#purge_levels) for more details.
|
22
|
+
|
23
|
+
(RK-223) Ability to track control repo branch from content declarations.
|
24
|
+
|
25
|
+
Puppetfile content sourced from Git can now be configured to attempt to track the branch
|
26
|
+
name of the control repo branch being deployed. For example, if r10k is deploying
|
27
|
+
the 'production' branch of your control repo, it will try to also deploy the
|
28
|
+
'production' branch of a given Puppetfile content repo. See the [documentation](https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd#control-repo-branch-tracking)
|
29
|
+
for more details.
|
30
|
+
|
31
|
+
### Internationalization
|
32
|
+
|
33
|
+
All user-facing strings generated by r10k have been externalized to enable future
|
34
|
+
iternationalization (i18n) and localization work.
|
35
|
+
|
36
|
+
### Changed
|
37
|
+
|
38
|
+
(RK-258) Symlinks inside of Forge modules will no longer cause r10k to exit non-zero.
|
39
|
+
This situation used to raise an error but will now generate a WARN level log message
|
40
|
+
instead.
|
41
|
+
|
42
|
+
### Bug Fixes
|
10
43
|
|
11
|
-
|
12
|
-
|
13
|
-
repo after a fetch. To work around this issue, r10k included code that would
|
14
|
-
manually remove/recreate branches during a fetch. Since "rugged" 0.24.0 is now
|
15
|
-
widely available, r10k has been updated to use the built-in "prune" option
|
16
|
-
during a fetch and the workaround code has been removed.
|
44
|
+
(#616) Ensure that Forge module version strings are valid semantic versions. (Special
|
45
|
+
thanks to Patrick Robinson (patrobinson) for the fix.)
|
17
46
|
|
18
|
-
|
19
|
-
|
20
|
-
are using a "rugged" version less than 0.24.0, r10k will now issue a warning
|
21
|
-
every time it fetches from a remote git repository.
|
47
|
+
(#622) Fix typos in workflow docs. (Special thanks to Yury Frolov (mrdracon) for the
|
48
|
+
fix.)
|
22
49
|
|
23
50
|
2.3.0
|
24
51
|
-----
|
data/Gemfile
CHANGED
data/README.mkd
CHANGED
@@ -85,6 +85,22 @@ information see the topic specific documentation:
|
|
85
85
|
|
86
86
|
For more general questions, see the [FAQ](doc/faq.mkd).
|
87
87
|
|
88
|
+
Development
|
89
|
+
-----------
|
90
|
+
|
91
|
+
### i18n
|
92
|
+
|
93
|
+
R10k has now had all user-facing strings in error messages and log messages
|
94
|
+
externalized. When adding new error or log messages please follow the
|
95
|
+
instructions for [writing translatable code](https://github.com/puppetlabs/gettext-setup-gem#writing-translatable-code).
|
96
|
+
|
97
|
+
### l10n
|
98
|
+
|
99
|
+
When localizing the strings found in R10k, follow the prescribed
|
100
|
+
[translation workflow](https://github.com/puppetlabs/gettext-setup-gem#translation-workflow).
|
101
|
+
The workflow describes the rake tasks provided to generate the .po files for
|
102
|
+
each locale.
|
103
|
+
|
88
104
|
Getting help
|
89
105
|
------------
|
90
106
|
|
@@ -103,3 +119,12 @@ Contributors
|
|
103
119
|
------------
|
104
120
|
|
105
121
|
Please see the CHANGELOG for a listing of the (very awesome) contributors.
|
122
|
+
|
123
|
+
## Maintenance
|
124
|
+
|
125
|
+
Maintainers:
|
126
|
+
|
127
|
+
* Jesse Scott, jesse@puppet.com
|
128
|
+
* Anderson Mills, anderson@puppet.com
|
129
|
+
|
130
|
+
Tickets: File at https://tickets.puppet.com/browse/RK
|
data/Rakefile
ADDED
@@ -200,12 +200,92 @@ sources:
|
|
200
200
|
|
201
201
|
### deploy
|
202
202
|
|
203
|
-
The `deploy` setting is a
|
203
|
+
The `deploy` setting is a top level setting for controlling how r10k deploys
|
204
204
|
behave. At this point only new settings are included under this setting, but in
|
205
205
|
the long term the current top level deploy settings will be moved under
|
206
206
|
`deploy`.
|
207
207
|
|
208
|
-
####
|
208
|
+
#### purge\_levels
|
209
|
+
|
210
|
+
The `purge_levels` setting controls how aggressively r10k will purge unmanaged
|
211
|
+
content during a deployment. Given value must be a list of strings indicating at
|
212
|
+
what levels unmanaged content should be purged. The valid string options for the
|
213
|
+
list are 'deployment', 'environment', and 'puppetfile'.
|
214
|
+
|
215
|
+
```yaml
|
216
|
+
---
|
217
|
+
deploy:
|
218
|
+
purge_levels: [ 'deployment', 'environment', 'puppetfile' ]
|
219
|
+
```
|
220
|
+
|
221
|
+
This setting currently only impacts the "deploy environment" action.
|
222
|
+
|
223
|
+
The default value is `['deployment', 'puppetfile']` to maintain parity with
|
224
|
+
existing behavior before this setting was added.
|
225
|
+
|
226
|
+
The effect of enabling the various purge levels is as follows:
|
227
|
+
|
228
|
+
##### deployment
|
229
|
+
|
230
|
+
After each deploy, in the configured basedir, r10k will recursively remove any
|
231
|
+
content found which is not managed by one of the sources declared in the r10k.yaml
|
232
|
+
configuration. Note that disabling this level of purging may cause the number of
|
233
|
+
deployed environments to grow without bound; deleting branches from a control
|
234
|
+
repo would no longer cause the matching environment to be purged.
|
235
|
+
|
236
|
+
##### environment
|
237
|
+
|
238
|
+
After a given environment is deployed, r10k will recursively remove any content
|
239
|
+
found which is neither committed to the control repo branch that maps to that
|
240
|
+
environment, nor declared in a Puppetfile committed to that branch.
|
241
|
+
|
242
|
+
Enabling this purge level will cause r10k to load and parse the Puppetfile for
|
243
|
+
the environment even without the `--puppetfile` flag being set. However,
|
244
|
+
Puppetfile content will still only be deployed if the environment is new or
|
245
|
+
the `--puppetfile` flag is set. Additionally, no environment-level content
|
246
|
+
will be purged if a Puppetfile content deploy was triggered but an error was
|
247
|
+
encountered.
|
248
|
+
|
249
|
+
Note that the .r10k-deploy.json file is exempt from this purging.
|
250
|
+
|
251
|
+
##### puppetfile
|
252
|
+
|
253
|
+
After Puppetfile content for a given environment is deployed, r10k will
|
254
|
+
recursively remove any content found in a directory managed by the Puppetfile
|
255
|
+
which is not also declared in that Puppetfile. Directories considered to be
|
256
|
+
managed by a Puppetfile include the configured `moduledir` (which defaults to
|
257
|
+
"modules") as well as alternate directories specified as an `install\_path`
|
258
|
+
option to any Puppetfile content declarations.
|
259
|
+
|
260
|
+
#### purge\_whitelist
|
261
|
+
|
262
|
+
The `purge_whitelist` setting exempts the specified filename patterns from
|
263
|
+
being purged. This setting is currently only considered during `environment`
|
264
|
+
level purging. (See above.) Given value must be a list of shell style filename
|
265
|
+
patterns in string format.
|
266
|
+
|
267
|
+
See the Ruby [documentation for the `fnmatch` method](http://ruby-doc.org/core-2.2.0/File.html#method-c-fnmatch)
|
268
|
+
for more details on valid patterns. Note that the `FNM_PATHNAME` and
|
269
|
+
`FNM_DOTMATCH` flags are in effect when r10k considers the whitelist.
|
270
|
+
|
271
|
+
Patterns are relative to the root of the environment being purged and *do
|
272
|
+
not match recursively* by default. For example, a whitelist value of
|
273
|
+
`*myfile*` would only preserve a matching file at the root of the
|
274
|
+
environment. To preserve the file throughout the deployed environment,
|
275
|
+
a recursive pattern such as `**/*myfile*` would be required.
|
276
|
+
|
277
|
+
Files matching a whitelist pattern may still be removed if they exist in
|
278
|
+
a folder that is otherwise subject to purging. In this case, an additional
|
279
|
+
whitelist rule to preserve the containing folder is required.
|
280
|
+
|
281
|
+
```yaml
|
282
|
+
---
|
283
|
+
deploy:
|
284
|
+
purge_whitelist: [ 'custom.json', '**/*.xpp' ]
|
285
|
+
```
|
286
|
+
|
287
|
+
|
288
|
+
#### write\_lock
|
209
289
|
|
210
290
|
The `write_lock` setting allows administrators to temporarily disallow r10k code
|
211
291
|
deploys without having to remove the r10k configuration entirely. This can be
|
@@ -214,10 +294,8 @@ with a common set of code that may be touched by multiple r10k configurations.
|
|
214
294
|
|
215
295
|
```yaml
|
216
296
|
---
|
217
|
-
|
218
297
|
deploy:
|
219
298
|
write_lock: "Deploying code is disallowed until the next maintenance window (2038-01-19)"
|
220
|
-
|
221
299
|
```
|
222
300
|
|
223
301
|
Source options
|
@@ -353,16 +431,15 @@ must override the `prefix` so environment folders line up in both directories:
|
|
353
431
|
|
354
432
|
```yaml
|
355
433
|
---
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
prefix: "app1"
|
434
|
+
sources:
|
435
|
+
app1_data:
|
436
|
+
remote: 'git://git-server.site/my-org/app1-hieradata'
|
437
|
+
basedir: '/etc/puppet/hieradata'
|
438
|
+
prefix: "app1"
|
439
|
+
app1_modules:
|
440
|
+
remote: 'git://git-server.site/my-org/app1-puppet-modules'
|
441
|
+
basedir: '/etc/puppet/environments'
|
442
|
+
prefix: "app1"
|
366
443
|
```
|
367
444
|
|
368
445
|
|
@@ -213,13 +213,13 @@ git merge feature
|
|
213
213
|
git push origin master
|
214
214
|
```
|
215
215
|
|
216
|
-
In the Control repo, check out
|
216
|
+
In the Control repo, check out production. Do NOT merge the feature branch as it
|
217
217
|
now references the incorrect branch for each git repo, and no other changes
|
218
218
|
were made (unlike a new module, where a new repo is referenced).
|
219
219
|
|
220
220
|
```
|
221
221
|
# Control repo
|
222
|
-
git checkout
|
222
|
+
git checkout production
|
223
223
|
```
|
224
224
|
|
225
225
|
### Cleanup feature branches
|
@@ -234,7 +234,7 @@ git branch -D repo
|
|
234
234
|
git push origin :repo
|
235
235
|
```
|
236
236
|
|
237
|
-
Redeploy with r10k on
|
237
|
+
Redeploy with r10k on your Puppet Master and ensure there are no errors. The *feature*
|
238
238
|
dynamic environment should no longer exist at `$environmentpath/feature`.
|
239
239
|
|
240
240
|
```r10k deploy environment -p```
|
data/doc/puppetfile.mkd
CHANGED
@@ -52,8 +52,7 @@ handles modules.
|
|
52
52
|
|
53
53
|
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
|
-
librarian-puppet
|
56
|
-
[GH-106](https://github.com/adrienthebo/r10k/issues/106) for more information.
|
55
|
+
librarian-puppet.
|
57
56
|
|
58
57
|
### moduledir
|
59
58
|
|
@@ -88,7 +87,25 @@ Module types
|
|
88
87
|
------------
|
89
88
|
|
90
89
|
r10k can install Puppet modules from a number of different sources. Right now
|
91
|
-
modules can be installed
|
90
|
+
modules can be installed from the Puppet Forge, Git, or SVN.
|
91
|
+
|
92
|
+
### Puppet Forge
|
93
|
+
|
94
|
+
Modules can be installed from the Puppet Forge.
|
95
|
+
|
96
|
+
If no version is specified the latest version available at the time will be
|
97
|
+
installed, and will be kept at that version.
|
98
|
+
|
99
|
+
mod 'puppetlabs/apache'
|
100
|
+
|
101
|
+
If a version is specified then that version will be installed.
|
102
|
+
|
103
|
+
mod 'puppetlabs/apache', '0.10.0'
|
104
|
+
|
105
|
+
If the version is set to :latest then the module will be always updated to the
|
106
|
+
latest version available.
|
107
|
+
|
108
|
+
mod 'puppetlabs/apache', :latest
|
92
109
|
|
93
110
|
### Git
|
94
111
|
|
@@ -105,52 +122,68 @@ given object is a tag or commit and can do some optimizations around fetching
|
|
105
122
|
the object. If the tag or commit is already available r10k will skip network
|
106
123
|
operations when updating the repo, which can speed up install times.
|
107
124
|
|
108
|
-
Module versions can also be specified using `:branch
|
109
|
-
|
125
|
+
Module versions can also be specified using `:branch` to track a specific
|
126
|
+
branch reference.
|
110
127
|
|
111
128
|
#### Examples
|
112
129
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
130
|
+
```ruby
|
131
|
+
# Install puppetlabs/apache and keep it up to date with 'master'
|
132
|
+
mod 'apache',
|
133
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-apache'
|
134
|
+
|
135
|
+
# Install puppetlabs/apache and track the 'docs_experiment' branch
|
136
|
+
mod 'apache',
|
137
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
138
|
+
:ref => 'docs_experiment'
|
139
|
+
|
140
|
+
# Install puppetlabs/apache and pin to the '0.9.0' tag
|
141
|
+
mod 'apache',
|
142
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
143
|
+
:tag => '0.9.0'
|
144
|
+
|
145
|
+
# Install puppetlabs/apache and pin to the '83401079' commit
|
146
|
+
mod 'apache',
|
147
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
148
|
+
:commit => '83401079053dca11d61945bd9beef9ecf7576cbf'
|
149
|
+
|
150
|
+
# Install puppetlabs/apache and track the 'docs_experiment' branch
|
151
|
+
mod 'apache',
|
152
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
153
|
+
:branch => 'docs_experiment'
|
154
|
+
```
|
136
155
|
|
137
|
-
|
156
|
+
#### Control Repo Branch Tracking
|
138
157
|
|
139
|
-
|
158
|
+
Since r10k 2.4.0, the `:branch` option can be set to the special value
|
159
|
+
`:control_branch` to indicate that the content should track a branch
|
160
|
+
reference matching the containing control repo branch. For example, if a
|
161
|
+
Puppetfile containing a Git content declaration is in the "testing" branch
|
162
|
+
of a control repo, a setting of `:control_branch` will attempt to deploy that
|
163
|
+
content from a "testing" branch of the content repo.
|
140
164
|
|
141
|
-
|
142
|
-
|
165
|
+
Additionally, you can specify a `:default_branch` option which is the branch
|
166
|
+
reference that content will be deployed from if the the given `:ref`, `:tag`,
|
167
|
+
`:commit`, or `:branch` option cannot be resolved and deployed. If the desired
|
168
|
+
content cannot be resolved and no default branch is given, or if the default
|
169
|
+
branch can also not be resolved, an error will be logged and the content will
|
170
|
+
not be deployed or updated.
|
143
171
|
|
144
|
-
|
145
|
-
|
146
|
-
If a version is specified then that version will be installed.
|
147
|
-
|
148
|
-
mod 'puppetlabs/apache', '0.10.0'
|
172
|
+
#### :control\_branch Examples
|
149
173
|
|
150
|
-
|
151
|
-
|
174
|
+
```ruby
|
175
|
+
# Deploy content from branch matching control repo branch.
|
176
|
+
mod 'hieradata',
|
177
|
+
:git => 'git@git.example.com:organization/hieradata.git',
|
178
|
+
:branch => :control_branch
|
179
|
+
|
180
|
+
# Track control branch and fall-back to master if no matching branch.
|
181
|
+
mod 'hieradata',
|
182
|
+
:git => 'git@git.example.com:organization/hieradata.git',
|
183
|
+
:branch => :control_branch,
|
184
|
+
:default_branch => 'master'
|
185
|
+
```
|
152
186
|
|
153
|
-
mod 'puppetlabs/apache', :latest
|
154
187
|
|
155
188
|
### SVN
|
156
189
|
|
@@ -257,6 +290,22 @@ module.
|
|
257
290
|
For more information see the [FAQ entry](faq.mkd#how-do-i-prevent-r10k-from-removing-modules-in-the-modules-directory-of-my-git-repository)
|
258
291
|
on managing internal and external modules in the same directory.
|
259
292
|
|
293
|
+
### Per-Item Install Path
|
294
|
+
|
295
|
+
Git and SVN content types support installing into an alternate path without changing
|
296
|
+
the value of moduledir by specifying an 'install\_path' option:
|
297
|
+
|
298
|
+
```
|
299
|
+
# This will install the 'apache' module into 'external/apache'.
|
300
|
+
mod 'apache',
|
301
|
+
:git => 'git@github.com:puppetlabs/puppetlabs-apache.git',
|
302
|
+
:install_path => 'external'
|
303
|
+
```
|
304
|
+
|
305
|
+
The given 'install\_path' can be an absolute path or a path relative to the base of
|
306
|
+
the environment. Note that r10k will exit with an error if you attempt to set the
|
307
|
+
'path' option to a directory outside of the environment.
|
308
|
+
|
260
309
|
## Environment variables
|
261
310
|
|
262
311
|
It is possible to set an alternate name/location for your `Puppetfile` and
|