r10k 1.3.5 → 1.4.0
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.
- checksums.yaml +15 -0
- data/.gitignore +1 -1
- data/CHANGELOG.mkd +210 -0
- data/CONTRIBUTING.mkd +105 -0
- data/Gemfile +2 -6
- data/README.mkd +97 -0
- data/doc/common-patterns.mkd +44 -0
- data/doc/dynamic-environments.mkd +12 -5
- data/doc/dynamic-environments/configuration.mkd +16 -1
- data/doc/dynamic-environments/{git-environments.markdown → git-environments.mkd} +13 -9
- data/doc/dynamic-environments/introduction.mkd +1 -2
- data/doc/dynamic-environments/master-configuration.mkd +70 -0
- data/doc/dynamic-environments/quickstart.mkd +241 -0
- data/doc/dynamic-environments/svn-environments.mkd +45 -0
- data/doc/dynamic-environments/usage.mkd +44 -5
- data/doc/dynamic-environments/workflow-guide.mkd +247 -0
- data/doc/faq.mkd +52 -0
- data/doc/puppetfile.mkd +203 -0
- data/lib/r10k/action/cri_runner.rb +75 -0
- data/lib/r10k/action/deploy.rb +9 -0
- data/lib/r10k/action/deploy/display.rb +104 -0
- data/lib/r10k/action/deploy/environment.rb +92 -0
- data/lib/r10k/action/deploy/module.rb +70 -0
- data/lib/r10k/action/puppetfile.rb +10 -0
- data/lib/r10k/action/puppetfile/check.rb +41 -0
- data/lib/r10k/action/puppetfile/cri_runner.rb +32 -0
- data/lib/r10k/action/puppetfile/install.rb +53 -0
- data/lib/r10k/action/puppetfile/purge.rb +37 -0
- data/lib/r10k/action/runner.rb +36 -0
- data/lib/r10k/action/visitor.rb +31 -0
- data/lib/r10k/cli/deploy.rb +14 -45
- data/lib/r10k/cli/puppetfile.rb +15 -53
- data/lib/r10k/deployment.rb +113 -58
- data/lib/r10k/deployment/basedir.rb +3 -38
- data/lib/r10k/deployment/config.rb +2 -1
- data/lib/r10k/deployment/source.rb +2 -0
- data/lib/r10k/environment/base.rb +40 -0
- data/lib/r10k/environment/git.rb +14 -17
- data/lib/r10k/environment/svn.rb +31 -15
- data/lib/r10k/errors.rb +33 -22
- data/lib/r10k/errors/formatting.rb +28 -0
- data/lib/r10k/execution.rb +2 -0
- data/lib/r10k/git/cache.rb +1 -6
- data/lib/r10k/git/errors.rb +1 -2
- data/lib/r10k/git/ref.rb +1 -1
- data/lib/r10k/module.rb +1 -1
- data/lib/r10k/module/base.rb +94 -2
- data/lib/r10k/module/forge.rb +33 -30
- data/lib/r10k/module/git.rb +13 -9
- data/lib/r10k/module/svn.rb +41 -28
- data/lib/r10k/puppetfile.rb +17 -1
- data/lib/r10k/semver.rb +2 -0
- data/lib/r10k/source/base.rb +8 -0
- data/lib/r10k/source/git.rb +1 -1
- data/lib/r10k/source/svn.rb +23 -5
- data/lib/r10k/svn/remote.rb +23 -3
- data/lib/r10k/svn/working_dir.rb +60 -9
- data/lib/r10k/task.rb +1 -0
- data/lib/r10k/task/deployment.rb +9 -1
- data/lib/r10k/task/environment.rb +2 -0
- data/lib/r10k/task/module.rb +1 -0
- data/lib/r10k/task/puppetfile.rb +3 -0
- data/lib/r10k/task_runner.rb +1 -0
- data/lib/r10k/util/attempt.rb +84 -0
- data/lib/r10k/util/basedir.rb +65 -0
- data/lib/r10k/util/purgeable.rb +55 -45
- data/lib/r10k/util/setopts.rb +53 -0
- data/lib/r10k/util/subprocess.rb +6 -30
- data/lib/r10k/util/subprocess/posix/runner.rb +29 -2
- data/lib/r10k/util/subprocess/result.rb +17 -4
- data/lib/r10k/util/subprocess/subprocess_error.rb +24 -0
- data/lib/r10k/version.rb +1 -1
- data/r10k.gemspec +7 -29
- data/spec/fixtures/unit/puppetfile/invalid-syntax/Puppetfile +1 -0
- data/spec/fixtures/unit/puppetfile/load-error/Puppetfile +1 -0
- data/spec/matchers/exit_with.rb +28 -0
- data/spec/r10k-mocks.rb +3 -0
- data/spec/r10k-mocks/mock_config.rb +28 -0
- data/spec/r10k-mocks/mock_env.rb +7 -0
- data/spec/r10k-mocks/mock_source.rb +10 -0
- data/spec/shared-examples/git-ref.rb +7 -7
- data/spec/spec_helper.rb +17 -5
- data/spec/unit/action/cri_runner_spec.rb +76 -0
- data/spec/unit/action/puppetfile/cri_action_spec.rb +65 -0
- data/spec/unit/action/runner_spec.rb +64 -0
- data/spec/unit/action/visitor_spec.rb +39 -0
- data/spec/unit/deployment_spec.rb +142 -0
- data/spec/unit/environment/base_spec.rb +38 -0
- data/spec/unit/environment/git_spec.rb +40 -10
- data/spec/unit/environment/svn_spec.rb +41 -4
- data/spec/unit/errors/formatting_spec.rb +84 -0
- data/spec/unit/git/alternates_spec.rb +1 -1
- data/spec/unit/git/head_spec.rb +1 -1
- data/spec/unit/git/ref_spec.rb +1 -1
- data/spec/unit/git/working_dir_spec.rb +1 -1
- data/spec/unit/module/base_spec.rb +72 -0
- data/spec/unit/module/forge_spec.rb +49 -8
- data/spec/unit/module/git_spec.rb +78 -0
- data/spec/unit/module/svn_spec.rb +40 -4
- data/spec/unit/module_spec.rb +3 -3
- data/spec/unit/puppetfile_spec.rb +84 -0
- data/spec/unit/settings/container_spec.rb +1 -1
- data/spec/unit/source/base_spec.rb +31 -0
- data/spec/unit/source/git_spec.rb +7 -7
- data/spec/unit/source/svn_spec.rb +1 -1
- data/spec/unit/svn/working_dir_spec.rb +56 -0
- data/spec/unit/util/attempt_spec.rb +82 -0
- data/spec/unit/util/setopts_spec.rb +59 -0
- data/spec/unit/util/subprocess/result_spec.rb +36 -0
- data/spec/unit/util/subprocess/subprocess_error_spec.rb +26 -0
- data/spec/unit/util/subprocess_spec.rb +2 -7
- metadata +83 -100
- data/.nodeset.yml +0 -7
- data/.rspec +0 -1
- data/README.markdown +0 -276
- data/Rakefile +0 -1
- data/doc/puppetfile.markdown +0 -87
- data/spec/rspec-system-r10k/puppetfile.rb +0 -24
- data/spec/rspec-system-r10k/tmpdir.rb +0 -32
- data/spec/system-provisioning/el.rb +0 -38
- data/spec/system/module/forge/install_spec.rb +0 -51
- data/spec/system/module/git/install_spec.rb +0 -117
- data/spec/system/module/svn/install_spec.rb +0 -51
- data/spec/system/module/svn/update_spec.rb +0 -38
- data/spec/system/spec_helper.rb +0 -60
- data/spec/system/system-helpers.rb +0 -4
- data/spec/system/version_spec.rb +0 -7
checksums.yaml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
YmQxYWU2Zjk4NzkwODMwNWYyZWMxMTA0NGZmMjg3NGFiNDM1OThlNA==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
ZmRiYjU3NDk4ZTA0ZDdiYTYxMDc4YTU2ZTg4MzQ5MjFkYjNmZjVlNw==
|
|
7
|
+
SHA512:
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
YjE4YmM1ZmFlNDA1NWVkODYwMGU4YzQzYjk2OTNhOWY0ZWIwMjFkYjZmZmFk
|
|
10
|
+
ZWE3ZTA1MzEzNzgxYzNhZmVhMmYzZTQ1YzUwNTRiMTQ1NWU4MmRhMWM4ODBk
|
|
11
|
+
YWMzMDE3ZmRiYWQzNDA0MzhmNjk0ZTBlYzBkNDdjN2IwYjJmMGM=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
MjNiNGJhYmQ1YWNlYjc0MzVhZWNmYzUwNjM2ZWEwMzcwYjZjYjA3OGRhOTAw
|
|
14
|
+
ZDk4MTQ2ZjlmMWQ5ZDBjNzdiY2RjNjVmY2JiOWQ5MGVmNjRmNjliNWEzNjkx
|
|
15
|
+
YTQ4YjI1ZWYwZmE1ZTk2NWZiOTczNTUwZTA2OWRiNGZmMmM1NzM=
|
data/.gitignore
CHANGED
data/CHANGELOG.mkd
CHANGED
|
@@ -1,6 +1,216 @@
|
|
|
1
1
|
CHANGELOG
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
1.4.0
|
|
5
|
+
-----
|
|
6
|
+
|
|
7
|
+
2014/12/2
|
|
8
|
+
|
|
9
|
+
### User notes
|
|
10
|
+
|
|
11
|
+
(GH-40) Display expected and actual module versions
|
|
12
|
+
|
|
13
|
+
When displaying the state of a deployment, modules would report a version but
|
|
14
|
+
would not indicate if that was the expected version or desired version. This has
|
|
15
|
+
been changed so that both the expected and actual module version information is
|
|
16
|
+
displayed. Because determining the actual version for modules can be slow the
|
|
17
|
+
`--detail` flag must be passed to display this information.
|
|
18
|
+
|
|
19
|
+
(GH-43) Using a relative `moduledir` in the Puppetfile is relative to the Puppetfile
|
|
20
|
+
|
|
21
|
+
The `moduledir` setting in the Puppetfile could be used to set a custom
|
|
22
|
+
directory for Puppetfile modules, but if a relative path was used it was
|
|
23
|
+
relative to the current working directory. As of 1.4.0 a relative `moduledir`
|
|
24
|
+
setting will be expanded to the Puppetfile, which should make it much easier to
|
|
25
|
+
use a directory other than 'modules' for the Puppetfile installed modules.
|
|
26
|
+
|
|
27
|
+
(GH-68) Add alias for `r10k deploy display`
|
|
28
|
+
|
|
29
|
+
The `r10k deploy display` subcommand had unfriendly syntax, and now has an
|
|
30
|
+
alias of `r10k deploy list`.
|
|
31
|
+
|
|
32
|
+
(GH-92) Support `mod 'owner/module'` for Git and SVN modules
|
|
33
|
+
|
|
34
|
+
The original implementation of Git and SVN based modules assumed that the module
|
|
35
|
+
name was only the name component, and did not include the owner component of the
|
|
36
|
+
module. Because of this the full module name was added to the path, which meant
|
|
37
|
+
that a Git module or SVN module called `foo/bar` would be created as
|
|
38
|
+
`$moduledir/foo/bar`, after which r10k would check for stale modules, see a
|
|
39
|
+
module called `foo`, and delete it.
|
|
40
|
+
|
|
41
|
+
This has now been corrected so that all modules may have an owner and name, and
|
|
42
|
+
only the name will be used when constructing the module path.
|
|
43
|
+
|
|
44
|
+
Issues also closed as part of GH-92:
|
|
45
|
+
|
|
46
|
+
* GH-78
|
|
47
|
+
|
|
48
|
+
(GH-96) Provide output from Git command failures
|
|
49
|
+
|
|
50
|
+
When r10k encounters an error while running a command, it will always log the
|
|
51
|
+
failed command and the output of the command. This should make it dramatically
|
|
52
|
+
easier to diagnose issues with the underlying commands used by r10k without
|
|
53
|
+
having to re-run the failing r10k command with a myriad of command line flags.
|
|
54
|
+
|
|
55
|
+
Issues also closed as part of GH-96:
|
|
56
|
+
|
|
57
|
+
* GH-46
|
|
58
|
+
* GH-94
|
|
59
|
+
|
|
60
|
+
(GH-121) Support for calling an arbitrary script after deployment
|
|
61
|
+
|
|
62
|
+
Users can now specify a `postrun` setting in `r10k.yaml` to run an arbitrary
|
|
63
|
+
command after an environment deployment finishes. The current implementation is
|
|
64
|
+
fairly simple and isn't passed additional information about the deployment and
|
|
65
|
+
is mainly meant to notify other services that the deployment has completed.
|
|
66
|
+
Future versions of r10k will provide more information to this command so that
|
|
67
|
+
more complex actions can be taken on success and failure.
|
|
68
|
+
|
|
69
|
+
(GH-155) Allow SVN credentials to be added for modules/environments, disallow interactive SVN
|
|
70
|
+
|
|
71
|
+
When interacting with SVN modules, r10k could run SVN commands that could try to
|
|
72
|
+
prompt the user for input but were not provided access to stdin. R10k is meant
|
|
73
|
+
to be non-interactive so credentials need to be provided in some manner, but
|
|
74
|
+
cannot be provided directly by the user.
|
|
75
|
+
|
|
76
|
+
As of 1.4.0 SVN environments and modules can supply a username and password to
|
|
77
|
+
be used when interacting with the SVN remote, and SVN commands are run with
|
|
78
|
+
`--non-interactive` to prevent commands from trying to grab stdin.
|
|
79
|
+
|
|
80
|
+
**Note**: SVN credentials are passed as command line options, so the SVN
|
|
81
|
+
credentials may be visible in the process table when r10k is running. If you
|
|
82
|
+
choose to supply SVN credentials make sure that the system running r10k is
|
|
83
|
+
appropriately secured.
|
|
84
|
+
|
|
85
|
+
(GH-169) Perform non-blocking reads on stderr in Subprocess
|
|
86
|
+
|
|
87
|
+
When using SSH with a Control Master, the first time an SSH connection is
|
|
88
|
+
launched it will persist and will hang onto stderr from the parent process.
|
|
89
|
+
R10k was using blocking IO to read from child processes and assumed that the
|
|
90
|
+
file descriptors would be closed when the launched process exited, and the
|
|
91
|
+
persistent SSH process would cause r10k to hang.
|
|
92
|
+
|
|
93
|
+
The subprocess code has been updated to perform nonblocking reads of stderr;
|
|
94
|
+
when the child process exits it assumes that even if stderr is held open nothing
|
|
95
|
+
else should be written to it, drains the buffered pipe content and returns with
|
|
96
|
+
that.
|
|
97
|
+
|
|
98
|
+
This is working around buggy behavior in SSH, but this problem doesn't look like
|
|
99
|
+
it'll go away so the best course of action is to incorporate this fix into
|
|
100
|
+
downstream.
|
|
101
|
+
|
|
102
|
+
(GH-180) Don't leak FDs when executing subcommands
|
|
103
|
+
|
|
104
|
+
R10k was not explicitly closing all file descriptors, and on Ruby 1.8.7 these
|
|
105
|
+
would not be closed by the garbage collector, causing file descriptors to leak.
|
|
106
|
+
This has been fixed and all file descriptors should be closed after each
|
|
107
|
+
subprocess is invoked.
|
|
108
|
+
|
|
109
|
+
Major thanks to Jeremy Asher for discovering and fixing this.
|
|
110
|
+
|
|
111
|
+
(GH-193) Don't purge environments if environment sources can't be fetched
|
|
112
|
+
|
|
113
|
+
The original behavior for deploying environments with r10k was to fetch sources,
|
|
114
|
+
deploy environments from those sources, and then clean up any orphaned
|
|
115
|
+
environments. If a source had been fetched before but could not be reached then
|
|
116
|
+
r10k would use the previously fetched branch information to update environments.
|
|
117
|
+
In normal cases this would provide a reasonably robust failure mode.
|
|
118
|
+
|
|
119
|
+
However, this meant that if no sources had been be fetched or the source remote
|
|
120
|
+
information was typoed, r10k would have no source information, could enumerate
|
|
121
|
+
no environments, and then enter HULK SMASH mode where it would delete all
|
|
122
|
+
unmanaged environments - AKA everything. This is an uncommon failure mode but
|
|
123
|
+
could bite environments that were setting up r10k for the first time.
|
|
124
|
+
|
|
125
|
+
To resolve this issue, r10k will try to fetch all sources and if any source
|
|
126
|
+
fails to be fetched then r10k will abort the entire deployment. This means that
|
|
127
|
+
r10k will fail very early before any changes have been made which is a safe time
|
|
128
|
+
to fail. If the errors were transitory then r10k can be run again, and if the
|
|
129
|
+
failures are permanent then it's hard to safely update anything and extremely
|
|
130
|
+
dangerous to try to delete any environments.
|
|
131
|
+
|
|
132
|
+
(GH-202) Different environments cannot manage the same path
|
|
133
|
+
|
|
134
|
+
R10k allowed for multiple sources to create environments but did not have
|
|
135
|
+
semantics for environments from different sources managing the same path. If
|
|
136
|
+
this happened, the resulting behavior would be undefined and could do any number
|
|
137
|
+
of strange things. The approach to this was by convention and prefixing was
|
|
138
|
+
recommended to avoid this, but it's still not a great approach.
|
|
139
|
+
|
|
140
|
+
This was resolved by looking for environment collisions before deploying; if
|
|
141
|
+
collisions exist then r10k will abort the deployment.
|
|
142
|
+
|
|
143
|
+
Note: The commit that fixed this referenced GH-123 instead of GH-202.
|
|
144
|
+
|
|
145
|
+
(GH-214) Rescue SyntaxError and LoadError when evaluating Puppetfiles
|
|
146
|
+
|
|
147
|
+
Since Puppetfiles are just a Ruby DSL it's possible to have multiple Puppetfiles
|
|
148
|
+
that are aggregated by using `require` or `load`. However these methods raise
|
|
149
|
+
exceptions that don't descend from `StandardError`, so the normal error handling
|
|
150
|
+
would not catch them, so a malformed Puppetfile could catastrophically crash
|
|
151
|
+
r10k.
|
|
152
|
+
|
|
153
|
+
Because the Puppetfile is not an actual source file in the conventional sense we
|
|
154
|
+
can recover from these errors and continue, so r10k will now recover from these
|
|
155
|
+
errors. If a SyntaxError or LoadError is raised while evaluating a Puppetfile,
|
|
156
|
+
r10k will rescue them and wrap them in an R10K::Error and then raise that, which
|
|
157
|
+
can be caught and handled as a normal, non-critical exception.
|
|
158
|
+
|
|
159
|
+
(GH-221) Only deploy modules once for each environment deploy
|
|
160
|
+
|
|
161
|
+
If an environment was deployed for the first time and `--puppetfile` was
|
|
162
|
+
specified, the initial creation would create the environment and then deploy
|
|
163
|
+
modules, and then the modules would be deployed again because `--puppetfile` was
|
|
164
|
+
separate code. The deploy logic has been refactored to consider `--puppetfile`
|
|
165
|
+
being passed or the environment being created to be equivalent and will only
|
|
166
|
+
deploy modules once.
|
|
167
|
+
|
|
168
|
+
### Developer notes
|
|
169
|
+
|
|
170
|
+
`R10K::Environment::Base#sync` is no longer recursive; callers are expected to
|
|
171
|
+
handle recursive updates if needed.
|
|
172
|
+
|
|
173
|
+
The `R10K::Action` namespace has been added to provide an API to r10k
|
|
174
|
+
functionality. These should be used by any code that wants to interact with r10k
|
|
175
|
+
and should provide an alternative to shelling out to r10k or using `R10K::CLI`
|
|
176
|
+
directly. The individual action objects should be called through
|
|
177
|
+
`R10K::Action::Runner` so that application setup and teardown is handled.
|
|
178
|
+
|
|
179
|
+
### Thanks
|
|
180
|
+
|
|
181
|
+
Thanks to the following contributors for their work on this release:
|
|
182
|
+
|
|
183
|
+
* [Robert Nelson](https://github.com/rnelson0) for his work on documenting
|
|
184
|
+
workflows and best practices with r10k and adding convenience aliases for
|
|
185
|
+
`r10k deploy display`
|
|
186
|
+
* [Wolf Noble](https://github.com/rmnwolf) for homogenizing markdown file
|
|
187
|
+
extensions
|
|
188
|
+
* [Thomas Bartelmess](https://github.com/tbartelmess) for updating the
|
|
189
|
+
required version of cri
|
|
190
|
+
* [Theo Chatzimichos](https://github.com/tampakrap) for correcting the license
|
|
191
|
+
format to conform to SPDX
|
|
192
|
+
* [Richard Raseley](https://github.com/richardraseley) for writing a
|
|
193
|
+
quickstart guide for r10k
|
|
194
|
+
* [Matthew Haughton](https://github.com/3flex) for fixing documentation typos
|
|
195
|
+
* [Markus Frosch](https://github.com/lazyfrosch) for fixing a regression in
|
|
196
|
+
how duplicate environments are checked for, before the regression was ever
|
|
197
|
+
released. Good catch!
|
|
198
|
+
* [Jeremy Asher](https://github.com/jeremyasher) for fixing file descriptor
|
|
199
|
+
leaks and hanging on open file descriptors in the Subprocess module. Great
|
|
200
|
+
sleuthing on this!
|
|
201
|
+
* [Guzman Braso](https://github.com/guzmanbraso) for adding Debian support
|
|
202
|
+
and fixing some bugs in the quickstart documentation.
|
|
203
|
+
* [David Schmitt](https://github.com/DavidS) for fixing markdown syntax errors
|
|
204
|
+
so that link URLs would render properly in GitHub
|
|
205
|
+
* [Christophe Bliard](https://github.com/cbliard) for fixing the Puppetfile
|
|
206
|
+
moduledir setting to treat relative paths as relative to the Puppetfile
|
|
207
|
+
* [Christoph Föhrdes](https://github.com/cfoehrdes) For fixing a copy/paste
|
|
208
|
+
error in the Puppetfile documentation
|
|
209
|
+
|
|
210
|
+
In addition to those who contributed to the code base, thanks to all those that
|
|
211
|
+
reported and commented on issues; user input makes it much easier to make r10k a
|
|
212
|
+
better project!
|
|
213
|
+
|
|
4
214
|
1.3.5
|
|
5
215
|
-----
|
|
6
216
|
|
data/CONTRIBUTING.mkd
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
Contributing
|
|
2
|
+
============
|
|
3
|
+
|
|
4
|
+
## Bug reports and feature requests
|
|
5
|
+
|
|
6
|
+
Bug reports and feature requests may be filed on the [GitHub issue
|
|
7
|
+
tracker][github-issue-tracker]. When filing a bug report or feature request,
|
|
8
|
+
please spend a moment to look for existing issue reports and update those with
|
|
9
|
+
additional information if possible.
|
|
10
|
+
|
|
11
|
+
[github-issue-tracker]: https://github.com/adrienthebo/r10k/issues
|
|
12
|
+
|
|
13
|
+
### Bug reports
|
|
14
|
+
|
|
15
|
+
When filing a bug report, include as much relevant detailed information as
|
|
16
|
+
possible. Try to include the following:
|
|
17
|
+
|
|
18
|
+
* A descriptive summary of the bug
|
|
19
|
+
* When the bug first occurred
|
|
20
|
+
* What sort of events may have triggered the bug
|
|
21
|
+
* The expected behavior
|
|
22
|
+
* The actual behavior
|
|
23
|
+
* Steps to reproduce
|
|
24
|
+
|
|
25
|
+
If if you're seeing errors or crashes you can run R10K with the `-v debug2` to
|
|
26
|
+
greatly increase the log level and `--trace` to print any stack traces that may
|
|
27
|
+
be caught.
|
|
28
|
+
|
|
29
|
+
Including a reproduction environment with something like Vagrant is tremendously
|
|
30
|
+
helpful and can greatly speed up the time it takes to fix your issue!
|
|
31
|
+
|
|
32
|
+
### Feature requests
|
|
33
|
+
|
|
34
|
+
When filing a feature request, include information about how important the
|
|
35
|
+
feature is, how it would generally be used in your environment, and how often
|
|
36
|
+
this feature would be used by other users as well. Please keep in mind that
|
|
37
|
+
each added feature incurs additional maintenance costs, so feature requests
|
|
38
|
+
should strive to solve a frequent pain point for users or generally make r10k a
|
|
39
|
+
more effective tool for a large number of r10k users.
|
|
40
|
+
|
|
41
|
+
The policy towards feature requests in r10k has been greatly shaped by Brian
|
|
42
|
+
Granger's post on [features and scope in open source software][features-and-scope].
|
|
43
|
+
|
|
44
|
+
Try to include the following:
|
|
45
|
+
|
|
46
|
+
* A descriptive summary of the feature
|
|
47
|
+
* How you expect to use this feature
|
|
48
|
+
* How important this feature is for your environment
|
|
49
|
+
* How useful this feature would be for other users
|
|
50
|
+
* Any potential caveats this may have or any issues this feature may have
|
|
51
|
+
|
|
52
|
+
[features-and-scope]: http://brianegranger.com/?p=249 "Features and Scope in Open Source Software"
|
|
53
|
+
|
|
54
|
+
## Documentation
|
|
55
|
+
|
|
56
|
+
Contributing fixes and improvements to the core documentation is a great way to
|
|
57
|
+
help improve R10K. Improvements to the FAQ, example code, and so forth can go a
|
|
58
|
+
long way towards making R10K more approachable for new users and existing users
|
|
59
|
+
alike. For more information about the submission process please see the section
|
|
60
|
+
on [code contributions][#code-contributions].
|
|
61
|
+
|
|
62
|
+
## Code contributions
|
|
63
|
+
|
|
64
|
+
This documentation is based on the Project Hydra
|
|
65
|
+
[CONTRIBUTING](https://github.com/projecthydra/hydra-head/blob/master/CONTRIBUTING.md)
|
|
66
|
+
guide.
|
|
67
|
+
|
|
68
|
+
### Making changes
|
|
69
|
+
|
|
70
|
+
* Fork the repository on GitHub
|
|
71
|
+
* Create a topic branch from where you want to base your work.
|
|
72
|
+
* For new features, base your code off of 'master'.
|
|
73
|
+
* For critical bugfixes, base your code off of the appropriate maintenance
|
|
74
|
+
branch series, eg '1.2.x' or '1.3.x'
|
|
75
|
+
* To create a new topic branch; `git checkout -b fix/master/my_contribution master`
|
|
76
|
+
* Please avoid working directly on the 'master' branch.
|
|
77
|
+
* Make commits of logical units.
|
|
78
|
+
* Your commit should include a high level description of your work in HISTORY.textile
|
|
79
|
+
* Check for unnecessary whitespace with `git diff --check` before committing.
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
[code/subsystem] (GH-#) Present tense short summary (80 characters or less)
|
|
83
|
+
|
|
84
|
+
More detailed description, if necessary. It should be wrapped to 80
|
|
85
|
+
characters. Try to be as descriptive as you can, even if you think that
|
|
86
|
+
the commit content is obvious, it may not be obvious to others. You
|
|
87
|
+
should add such description also if it's already present in bug tracker,
|
|
88
|
+
it should not be necessary to visit a webpage to check the history.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
* Make sure you have added the necessary tests for your changes.
|
|
92
|
+
* Run _all_ the tests to assure nothing else was accidentally broken.
|
|
93
|
+
|
|
94
|
+
### Submitting changes
|
|
95
|
+
|
|
96
|
+
* Push your changes to a topic branch in your fork of the repository.
|
|
97
|
+
* Submit a pull request from your fork to the project.
|
|
98
|
+
* Expect to have some further discussion of your submission prior to it being merged.
|
|
99
|
+
|
|
100
|
+
Please note - code review is an essential part of the code review and submission
|
|
101
|
+
process. In order to keep the code base clean and maintainable questions may be
|
|
102
|
+
asked on implementation decisions and you may be asked to make additional
|
|
103
|
+
changes to the contribution. Remember - feedback is never personal and should be
|
|
104
|
+
given to benefit both the submitter as well as the project receiving the
|
|
105
|
+
contribution.
|
data/Gemfile
CHANGED
|
@@ -2,12 +2,8 @@ source 'https://rubygems.org'
|
|
|
2
2
|
|
|
3
3
|
gemspec
|
|
4
4
|
|
|
5
|
-
group
|
|
6
|
-
gem '
|
|
7
|
-
gem 'rspec-system', '~> 2.8.0'
|
|
8
|
-
gem 'rspec-system-serverspec', '~> 2.0.1'
|
|
9
|
-
gem 'net-ssh', '2.7.0'
|
|
10
|
-
gem 'vagrant', :git => 'git://github.com/mitchellh/vagrant', :tag => 'v1.4.1'
|
|
5
|
+
group :development do
|
|
6
|
+
gem 'simplecov', '~> 0.9.1' if RUBY_VERSION > '1.8.7'
|
|
11
7
|
end
|
|
12
8
|
|
|
13
9
|
if File.exists? "#{__FILE__}.local"
|
data/README.mkd
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
r10k
|
|
2
|
+
====
|
|
3
|
+
|
|
4
|
+
Puppet environment and module deployment
|
|
5
|
+
|
|
6
|
+
[](https://travis-ci.org/adrienthebo/r10k)
|
|
7
|
+
|
|
8
|
+
Description
|
|
9
|
+
-----------
|
|
10
|
+
|
|
11
|
+
[librarian-puppet]: https://github.com/rodjek/librarian-puppet
|
|
12
|
+
[workflow]: http://puppetlabs.com/blog/git-workflow-and-puppet-environments/
|
|
13
|
+
|
|
14
|
+
R10k provides a general purpose toolset for deploying Puppet environments and
|
|
15
|
+
modules. It implements the [Puppetfile][librarian-puppet] format and provides a native
|
|
16
|
+
implementation of Puppet [dynamic environments][workflow].
|
|
17
|
+
|
|
18
|
+
Requirements
|
|
19
|
+
------------
|
|
20
|
+
|
|
21
|
+
R10k supports the following Ruby versions:
|
|
22
|
+
|
|
23
|
+
- 1.8.7 (POSIX minimum version)
|
|
24
|
+
- 1.9.3 (Windows minimum version)
|
|
25
|
+
- 2.0.0
|
|
26
|
+
- 2.1.0
|
|
27
|
+
|
|
28
|
+
R10k requires additional components, depending on how you plan on managing
|
|
29
|
+
environments and modules.
|
|
30
|
+
|
|
31
|
+
- Installing modules from the Puppet Forge requires Puppet 3.0.0+ or later.
|
|
32
|
+
Puppet 2.7 may work, but is generally not recommended as Puppet 2.7 is EOL.
|
|
33
|
+
- Git is required for creating environments and modules from Git
|
|
34
|
+
- SVN is required for creating environments and modules from SVN
|
|
35
|
+
|
|
36
|
+
Installation
|
|
37
|
+
------------
|
|
38
|
+
|
|
39
|
+
### Rubygems
|
|
40
|
+
|
|
41
|
+
For general use, you should install r10k from Ruby gems:
|
|
42
|
+
|
|
43
|
+
gem install r10k
|
|
44
|
+
r10k help
|
|
45
|
+
|
|
46
|
+
### Puppet Enterprise
|
|
47
|
+
|
|
48
|
+
Puppet Enterprise bundles a copy of Ruby, so if you do not want to use the
|
|
49
|
+
system version of Ruby with r10k, you need to use the bundled PE gem command for
|
|
50
|
+
installation:
|
|
51
|
+
|
|
52
|
+
/opt/puppet/bin/gem install r10k
|
|
53
|
+
r10k help
|
|
54
|
+
|
|
55
|
+
### Bundler
|
|
56
|
+
|
|
57
|
+
If you have more specific needs or plan on modifying r10k you can run it out of
|
|
58
|
+
a git repository using Bundler for dependencies:
|
|
59
|
+
|
|
60
|
+
git clone git://github.com/adrienthebo/r10k
|
|
61
|
+
cd r10k
|
|
62
|
+
bundle install
|
|
63
|
+
bundle exec r10k help
|
|
64
|
+
|
|
65
|
+
Usage
|
|
66
|
+
-----
|
|
67
|
+
|
|
68
|
+
R10k has two primary roles: installing Puppet modules using a standalone
|
|
69
|
+
Puppetfile, and managing Git and SVN based dynamic environments. For more
|
|
70
|
+
information see the topic specific documentation:
|
|
71
|
+
|
|
72
|
+
* [Puppetfile Documentation](doc/puppetfile.mkd)
|
|
73
|
+
* [Environment Deployment Documentation](doc/dynamic-environments.mkd)
|
|
74
|
+
* [Quickstart](doc/dynamic-environments/quickstart.mkd)
|
|
75
|
+
* [Common Patterns](doc/common-patterns.mkd)
|
|
76
|
+
* [Workflow Guide](doc/workflow-guide.mkd)
|
|
77
|
+
|
|
78
|
+
For more general questions, see the [FAQ](doc/faq.mkd).
|
|
79
|
+
|
|
80
|
+
Getting help
|
|
81
|
+
------------
|
|
82
|
+
|
|
83
|
+
* IRC: r10k has a dedicated channel, `#r10k`, on Freenode where r10k questions
|
|
84
|
+
can be directed. Questions about r10k can frequently be asked in `#puppet` as well.
|
|
85
|
+
* Mailing lists: [puppet-users](https://groups.google.com/forum/#!forum/puppet-users)
|
|
86
|
+
* Q&A: [Puppet Ask](https://ask.puppetlabs.com/questions/)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
More information
|
|
90
|
+
----------------
|
|
91
|
+
|
|
92
|
+
The original impetus for r10k is explained at http://somethingsinistral.net/blog/rethinking-puppet-deployment/
|
|
93
|
+
|
|
94
|
+
Contributors
|
|
95
|
+
------------
|
|
96
|
+
|
|
97
|
+
Please see the CHANGELOG for a listing of the (very awesome) contributors.
|