puppet_generator 0.5.4
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.
- data/.gitignore +17 -0
- data/.rdebugrc +7 -0
- data/.rspec +2 -0
- data/.simplecov +8 -0
- data/.travis.yml +6 -0
- data/.yardopts +5 -0
- data/CONTRIBUTING.md +8 -0
- data/Gemfile +34 -0
- data/LICENSE.md +22 -0
- data/README.DEVELOPER.md +11 -0
- data/README.md +477 -0
- data/Rakefile +3 -0
- data/TODO.md +2 -0
- data/bin/ppgen +16 -0
- data/cucumber.yml +2 -0
- data/features/generate_file_definition.feature +357 -0
- data/features/generate_module_directories.feature +36 -0
- data/features/generate_package_definition.feature +206 -0
- data/features/generate_role_definitions.feature +64 -0
- data/features/generate_user_definition.feature +193 -0
- data/features/list.feature +22 -0
- data/features/log_actions.feature +93 -0
- data/features/step_definitions.rb +3 -0
- data/features/support/env.rb +7 -0
- data/features/tasks.feature +25 -0
- data/gemfiles/Gemfile.default +34 -0
- data/gemfiles/Gemfile.travis +17 -0
- data/lib/puppet_generator/actions/copy_files_to_module_directory.rb +23 -0
- data/lib/puppet_generator/actions/null.rb +9 -0
- data/lib/puppet_generator/api.rb +108 -0
- data/lib/puppet_generator/definition.rb +10 -0
- data/lib/puppet_generator/entry_converters/file.rb +9 -0
- data/lib/puppet_generator/entry_converters/package.rb +9 -0
- data/lib/puppet_generator/entry_converters/role.rb +9 -0
- data/lib/puppet_generator/entry_converters/user.rb +9 -0
- data/lib/puppet_generator/exceptions.rb +104 -0
- data/lib/puppet_generator/export_filters/build_role_includes_for_directory.rb +35 -0
- data/lib/puppet_generator/export_filters/filesystem_attributes.rb +57 -0
- data/lib/puppet_generator/export_filters/null.rb +9 -0
- data/lib/puppet_generator/exporters/directory.rb +23 -0
- data/lib/puppet_generator/exporters/file.rb +17 -0
- data/lib/puppet_generator/exporters/stdout.rb +16 -0
- data/lib/puppet_generator/import_filters/null.rb +9 -0
- data/lib/puppet_generator/import_filters/passwd.rb +22 -0
- data/lib/puppet_generator/import_filters/yaml.rb +20 -0
- data/lib/puppet_generator/importers/directory.rb +21 -0
- data/lib/puppet_generator/importers/file.rb +17 -0
- data/lib/puppet_generator/importers/stdin.rb +16 -0
- data/lib/puppet_generator/logger.rb +62 -0
- data/lib/puppet_generator/main.rb +36 -0
- data/lib/puppet_generator/middleware/apply_export_filters.rb +33 -0
- data/lib/puppet_generator/middleware/check_for_empty_source.rb +16 -0
- data/lib/puppet_generator/middleware/configure_logging.rb +30 -0
- data/lib/puppet_generator/middleware/create_module_directories.rb +42 -0
- data/lib/puppet_generator/middleware/create_output.rb +46 -0
- data/lib/puppet_generator/middleware/create_puppet_object_from_entry.rb +24 -0
- data/lib/puppet_generator/middleware/enable_debugging_libraries.rb +15 -0
- data/lib/puppet_generator/middleware/execute_actions.rb +34 -0
- data/lib/puppet_generator/middleware/filter_imported_data.rb +22 -0
- data/lib/puppet_generator/middleware/handle_errors.rb +62 -0
- data/lib/puppet_generator/middleware/output_debug_information_for_models.rb +21 -0
- data/lib/puppet_generator/middleware/read_input.rb +27 -0
- data/lib/puppet_generator/models/action.rb +36 -0
- data/lib/puppet_generator/models/base.rb +115 -0
- data/lib/puppet_generator/models/class_based_model.rb +56 -0
- data/lib/puppet_generator/models/entry_converter.rb +39 -0
- data/lib/puppet_generator/models/error_message.rb +60 -0
- data/lib/puppet_generator/models/export_filter.rb +44 -0
- data/lib/puppet_generator/models/exporter.rb +51 -0
- data/lib/puppet_generator/models/filesystem_based_model.rb +63 -0
- data/lib/puppet_generator/models/import_filter.rb +44 -0
- data/lib/puppet_generator/models/importer.rb +52 -0
- data/lib/puppet_generator/models/logger.rb +11 -0
- data/lib/puppet_generator/models/template.rb +120 -0
- data/lib/puppet_generator/puppet_helper.rb +19 -0
- data/lib/puppet_generator/puppet_objects/file.rb +29 -0
- data/lib/puppet_generator/puppet_objects/package.rb +24 -0
- data/lib/puppet_generator/puppet_objects/role.rb +27 -0
- data/lib/puppet_generator/puppet_objects/user.rb +27 -0
- data/lib/puppet_generator/setup/bare.rb +25 -0
- data/lib/puppet_generator/setup/default_actions.rb +9 -0
- data/lib/puppet_generator/setup/default_entry_converter.rb +8 -0
- data/lib/puppet_generator/setup/default_error_messages.rb +10 -0
- data/lib/puppet_generator/setup/default_export_filter.rb +9 -0
- data/lib/puppet_generator/setup/default_exporter.rb +11 -0
- data/lib/puppet_generator/setup/default_import_filter.rb +10 -0
- data/lib/puppet_generator/setup/default_importer.rb +10 -0
- data/lib/puppet_generator/setup/file.rb +29 -0
- data/lib/puppet_generator/setup/module.rb +22 -0
- data/lib/puppet_generator/setup/package.rb +27 -0
- data/lib/puppet_generator/setup/role.rb +28 -0
- data/lib/puppet_generator/setup/user.rb +27 -0
- data/lib/puppet_generator/task.rb +39 -0
- data/lib/puppet_generator/ui/commandline_parser_helper.rb +31 -0
- data/lib/puppet_generator/ui/create.rb +59 -0
- data/lib/puppet_generator/ui/runner.rb +23 -0
- data/lib/puppet_generator/ui/tasks.rb +16 -0
- data/lib/puppet_generator/version.rb +4 -0
- data/lib/puppet_generator.rb +79 -0
- data/puppet_generator.gemspec +35 -0
- data/rakefiles/default.rake +3 -0
- data/rakefiles/travis.rake +3 -0
- data/script/console +8 -0
- data/script/terminal +16 -0
- data/spec/examples/actions/missing_method.rb +7 -0
- data/spec/examples/apply_export_filters/file.txt +0 -0
- data/spec/examples/entry_converters/missing_method.rb +7 -0
- data/spec/examples/execute_actions/file.txt +0 -0
- data/spec/examples/export_filter/invalid_filter_1.rb +8 -0
- data/spec/examples/export_filter/invalid_filter_2.rb +7 -0
- data/spec/examples/export_filter/missing_method.rb +7 -0
- data/spec/examples/exporter/missing_method.rb +7 -0
- data/spec/examples/exporter/test.d/.gitkeep +0 -0
- data/spec/examples/exporter/test_file.txt +1 -0
- data/spec/examples/import_filter/forbidden_keyword.rb +0 -0
- data/spec/examples/import_filter/invalid_filter_1.rb +8 -0
- data/spec/examples/import_filter/invalid_filter_2.rb +7 -0
- data/spec/examples/import_filter/missing_method.rb +7 -0
- data/spec/examples/importer/missing_method.rb +7 -0
- data/spec/examples/importer/test.d/.gitkeep +0 -0
- data/spec/examples/importer/test_file.txt +1 -0
- data/spec/examples/templates/invalid_template.pp.erb +1 -0
- data/spec/examples/templates/missing_method.rb +7 -0
- data/spec/export_filters/build_role_includes_for_directory_spec.rb +39 -0
- data/spec/middleware/apply_export_filters_spec.rb +45 -0
- data/spec/middleware/execute_actions_spec.rb +44 -0
- data/spec/middleware/handle_errors_spec.rb +12 -0
- data/spec/models/action_spec.rb +37 -0
- data/spec/models/entry_converter_spec.rb +59 -0
- data/spec/models/error_message_spec.rb +78 -0
- data/spec/models/export_filter_spec.rb +36 -0
- data/spec/models/exporter_spec.rb +71 -0
- data/spec/models/import_filter_spec.rb +33 -0
- data/spec/models/importer_spec.rb +66 -0
- data/spec/models/template_spec.rb +47 -0
- data/spec/puppet_generator_spec.rb +7 -0
- data/spec/setup/role_spec.rb +22 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/filesystem_helper.rb +12 -0
- data/spec/support/libraries.rb +10 -0
- data/spec/support/rspec_configuration.rb +5 -0
- data/templates/puppet/many_per_file/file.pp.erb +16 -0
- data/templates/puppet/many_per_file/package.pp.erb +10 -0
- data/templates/puppet/many_per_file/role.pp.erb +7 -0
- data/templates/puppet/many_per_file/user.pp.erb +23 -0
- data/templates/puppet/one_per_file/file.pp.erb +14 -0
- data/templates/puppet/one_per_file/package.pp.erb +8 -0
- data/templates/puppet/one_per_file/role.pp.erb +5 -0
- data/templates/puppet/one_per_file/user.pp.erb +21 -0
- metadata +374 -0
data/.gitignore
ADDED
data/.rdebugrc
ADDED
data/.rspec
ADDED
data/.simplecov
ADDED
data/.travis.yml
ADDED
data/.yardopts
ADDED
data/CONTRIBUTING.md
ADDED
data/Gemfile
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gem 'fedux_org-stdlib', branch: 'master'
|
|
4
|
+
|
|
5
|
+
gemspec
|
|
6
|
+
|
|
7
|
+
group :test do
|
|
8
|
+
gem 'rake'
|
|
9
|
+
gem 'rspec'
|
|
10
|
+
gem 'simplecov'
|
|
11
|
+
gem 'aruba', git: 'https://github.com/maxmeyer/aruba.git', branch: 'puppet_generator'
|
|
12
|
+
gem 'fuubar'
|
|
13
|
+
gem 'ffaker'
|
|
14
|
+
gem 'cucumber'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
group :documentation do
|
|
18
|
+
gem 'yard'
|
|
19
|
+
gem 'redcarpet'
|
|
20
|
+
gem 'github-markup'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
group :development do
|
|
24
|
+
gem 'tmrb'
|
|
25
|
+
gem 'debugger'
|
|
26
|
+
gem 'pry'
|
|
27
|
+
gem 'pry-doc'
|
|
28
|
+
gem 'pry-debugger'
|
|
29
|
+
gem 'debugger-completion'
|
|
30
|
+
gem 'awesome_print'
|
|
31
|
+
gem 'travis-lint'
|
|
32
|
+
gem 'fuubar'
|
|
33
|
+
gem 'churn'
|
|
34
|
+
end
|
data/LICENSE.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2013 Max Meyer and Contributors
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.DEVELOPER.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# PuppetGenerator Developer Documentation
|
|
2
|
+
|
|
3
|
+
[](https://travis-ci.org/maxmeyer/puppet_generator)
|
|
4
|
+
|
|
5
|
+
## Contributing
|
|
6
|
+
|
|
7
|
+
1. Fork it
|
|
8
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
9
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
10
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
11
|
+
5. Create new Pull Request
|
data/README.md
ADDED
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
# PuppetGenerator User Documentation
|
|
2
|
+
|
|
3
|
+
[](https://travis-ci.org/maxmeyer/puppet_generator)
|
|
4
|
+
[](https://codeclimate.com/github/maxmeyer/puppet_generator)
|
|
5
|
+
|
|
6
|
+
Writing [Puppet](https://www.puppetlabs.com)-manifests made easy...
|
|
7
|
+
|
|
8
|
+
## Description
|
|
9
|
+
|
|
10
|
+
Writing manifests for puppet can be very time consuming and quite boring. The
|
|
11
|
+
PuppetGeneratore reduces the amount of time for writing puppet manifests alot
|
|
12
|
+
by generating a basic structure for:
|
|
13
|
+
|
|
14
|
+
* User resources
|
|
15
|
+
* Package resources
|
|
16
|
+
* File resources
|
|
17
|
+
* ...
|
|
18
|
+
|
|
19
|
+
This project can help you if you:
|
|
20
|
+
|
|
21
|
+
* have alot manifests to write
|
|
22
|
+
* simple manifests to write
|
|
23
|
+
* need a skeleton to start with
|
|
24
|
+
|
|
25
|
+
This project __cannot__ help you if you:
|
|
26
|
+
|
|
27
|
+
* have few very complex manifests to write
|
|
28
|
+
* have no fun in using new tools ;-)
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
Add this line to your application's Gemfile:
|
|
33
|
+
|
|
34
|
+
gem 'puppet_generator'
|
|
35
|
+
|
|
36
|
+
And then execute:
|
|
37
|
+
|
|
38
|
+
$ bundle
|
|
39
|
+
|
|
40
|
+
Or install it yourself as:
|
|
41
|
+
|
|
42
|
+
$ gem install puppet_generator
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
### Basics
|
|
47
|
+
|
|
48
|
+
The puppet generator comes with a single executable called `ppgen`. It uses a syntax
|
|
49
|
+
similar to git.
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
ppgen <command> [options] <subcommand> [suboptions]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
To get help, please call it with `help` as parameter or `--help|-h` as option.
|
|
56
|
+
|
|
57
|
+
*Example:*
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
ppgen help
|
|
61
|
+
ppgen help <command>
|
|
62
|
+
ppgen <command> help <subcommand>
|
|
63
|
+
ppgen --help
|
|
64
|
+
ppgen -h
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
In general it supports some other special options. A better description for all other options is given below and is
|
|
68
|
+
available via the `help`-command as well.
|
|
69
|
+
|
|
70
|
+
* `--debug`: Gives you very detailed debug output
|
|
71
|
+
* `--silent`: Makes it silent
|
|
72
|
+
|
|
73
|
+
*Example:*
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
ppgen <command> <subcommand> --debug
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
*Example:*
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
ppgen <command> <subcommand> --silent
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Besides the given options `ppgen` provides a way to define the name of the
|
|
86
|
+
module and the class name for the given resource used to create the output
|
|
87
|
+
|
|
88
|
+
* Module name: `--module`
|
|
89
|
+
* Class name: `--class`
|
|
90
|
+
|
|
91
|
+
*Example:*
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
#command
|
|
95
|
+
ppgen <command> <subcommand> --module mymodule --class myclass
|
|
96
|
+
|
|
97
|
+
# output
|
|
98
|
+
class mymodule::myclass {
|
|
99
|
+
|
|
100
|
+
[...]
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Data flow
|
|
106
|
+
|
|
107
|
+
The flow of data through `ppgen` is described in the following figure. Today it
|
|
108
|
+
reads data data via an importer (1) first -- there's no streaming support
|
|
109
|
+
available. After the import filter the data via the import filter (2) and then
|
|
110
|
+
the export filter (3). To output the filtered data `ppgen` uses a suitable
|
|
111
|
+
exporter (4).
|
|
112
|
+
|
|
113
|
+
__Please note:__
|
|
114
|
+
|
|
115
|
+
Available options for (1), (2), (3), (4) and (5) may depend on the chosen command
|
|
116
|
+
and/or subcommand.
|
|
117
|
+
|
|
118
|
+
*Figure:*
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
Input --> Importer --> ImportFilter --> ExportFilter --> Action --> Exporter --> Output
|
|
122
|
+
(1) (2) (3) (4) (5)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### All Available Options for Importer, Import|ExportFilter, Action, Exporter
|
|
126
|
+
|
|
127
|
+
`ppgen` supports the following importers:
|
|
128
|
+
|
|
129
|
+
* File: Read data from a file
|
|
130
|
+
* Directory: Generate a listing for a directory and use all items (directory/file) found
|
|
131
|
+
* Stdin: Read data from stdin
|
|
132
|
+
|
|
133
|
+
Which importer to use is determined via `<input>`. If it's a file the `File`-importer is used and so on.
|
|
134
|
+
|
|
135
|
+
*Example*
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
ppgen <command> <subcommand> --source <input>
|
|
139
|
+
ppgen <command> <subcommand> --source file.txt
|
|
140
|
+
ppgen <command> <subcommand> --source dir.d
|
|
141
|
+
ppgen <command> <subcommand> --source stdin
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
`ppgen` supports the following import filters:
|
|
145
|
+
|
|
146
|
+
* Null (`null`, default): Import plain text data
|
|
147
|
+
* Yaml (`yaml`): Import [YAML](http://www.yaml.org) documents
|
|
148
|
+
* Passwd (`passwd`): Import structured data from `/etc/passwd` (linux/unix-operating
|
|
149
|
+
systems only)
|
|
150
|
+
|
|
151
|
+
*Example*
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
ppgen <command> <subcommand> --import-filter <filter>
|
|
155
|
+
ppgen <command> <subcommand> --import-filter null
|
|
156
|
+
ppgen <command> <subcommand> --import-filter yaml
|
|
157
|
+
ppgen <command> <subcommand> --import-filter passwd
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
`ppgen` supports the following export filters:
|
|
161
|
+
|
|
162
|
+
* Null (`null`, default): No modification of data
|
|
163
|
+
* Filesystem attributes (`filesystem_attributes`): It tries to read filesystem attributes like owner,
|
|
164
|
+
mode etc. from the filesystem
|
|
165
|
+
* Build role for directory (`build_role_includes_for_directory`): Special export filter which scans a directory for
|
|
166
|
+
`*.pp` and generates a `<dir'>.pp` including the sub-pp-files
|
|
167
|
+
|
|
168
|
+
*Example*
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
ppgen <command> <subcommand> --export-filter <filter>
|
|
172
|
+
ppgen <command> <subcommand> --export-filter null
|
|
173
|
+
ppgen <command> <subcommand> --export-filter filesystem_attributes
|
|
174
|
+
ppgen <command> <subcommand> --export-filter build_role_includes_for_directory
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
`ppgen` supports the following actions:
|
|
178
|
+
|
|
179
|
+
* Null (`null`, default): no action
|
|
180
|
+
* Copy files to module (`copy_files_to_module_directory`): Given a module name (default: mymodule) it copies existing files to a directory `<module>`
|
|
181
|
+
|
|
182
|
+
*Example*
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
ppgen <command> <subcommand> --action <action>
|
|
186
|
+
ppgen <command> <subcommand> --action null
|
|
187
|
+
ppgen <command> <subcommand> --action copy_files_to_module_directory
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
`ppgen` supports the following exporters:
|
|
191
|
+
|
|
192
|
+
* File (`file`): Store output in a single file
|
|
193
|
+
* Directory (`dir|directory`): Store output in multiple files (name = equals name of resource, user => hans, name => hans.pp)
|
|
194
|
+
* Stdout (`stdout`): Output data to stdout
|
|
195
|
+
|
|
196
|
+
*Example*
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
ppgen <command> <subcommand> --destination <destination>
|
|
200
|
+
ppgen <command> <subcommand> --destination file:file.txt
|
|
201
|
+
ppgen <command> <subcommand> --destination dir:dir1.d
|
|
202
|
+
ppgen <command> <subcommand> --destination directory:dir1.d
|
|
203
|
+
ppgen <command> <subcommand> --destination stdout
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
It supports `create`, `list` (not implemented yet) and `show`(not implemented
|
|
208
|
+
yet)-commands, as well as the special `tasks`-command. The last one should make
|
|
209
|
+
the usage easier. Instead of giving `ppgen` all needed options it is a shortcut
|
|
210
|
+
for some options so that you need to provide a `--source` and a
|
|
211
|
+
`--destination`-option only.
|
|
212
|
+
|
|
213
|
+
Please use the following command to get an overview about the available
|
|
214
|
+
resource which can be created
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
ppgen help create
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Data formats
|
|
221
|
+
|
|
222
|
+
If you chose to use the yaml import filter, the following YAML-file-formats are
|
|
223
|
+
supported for the `create`-command.
|
|
224
|
+
|
|
225
|
+
### User
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
---
|
|
229
|
+
user1:
|
|
230
|
+
userid: 1000
|
|
231
|
+
groupid: 1000
|
|
232
|
+
homedir: /home/user1
|
|
233
|
+
shell: /usr/bin/bash
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Package
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
---
|
|
240
|
+
ssh:
|
|
241
|
+
version: 1
|
|
242
|
+
provider: yum
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
### File
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
---
|
|
250
|
+
path/to/file:
|
|
251
|
+
type:file
|
|
252
|
+
source: puppet:///module/file.txt
|
|
253
|
+
owner: user1
|
|
254
|
+
mode: 0644
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Role
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
---
|
|
261
|
+
horray:
|
|
262
|
+
includes:
|
|
263
|
+
- name1
|
|
264
|
+
- name2
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
## Tasks
|
|
269
|
+
|
|
270
|
+
### Create a user manifests from plain text file and writing it to a file
|
|
271
|
+
|
|
272
|
+
Input: `file.txt`
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
user1
|
|
276
|
+
user2
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Command:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
ppgen create user --source file.txt --destination file:output.txt
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Output: `output.txt`
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
class mymodule::myclass {
|
|
289
|
+
user {'user1':
|
|
290
|
+
ensure => present,
|
|
291
|
+
managehome => true,
|
|
292
|
+
}
|
|
293
|
+
user {'user2':
|
|
294
|
+
ensure => present,
|
|
295
|
+
managehome => true,
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### Create a user manifests from yaml writing it to stdout
|
|
301
|
+
|
|
302
|
+
Input: `file.yml`
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
---
|
|
306
|
+
user1:
|
|
307
|
+
userid: 1000
|
|
308
|
+
groupid: 1000
|
|
309
|
+
homedir: /home/user1
|
|
310
|
+
shell: /usr/bin/bash
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Command:
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
ppgen create user --source file.yml --destination file:output.txt --import-filter yaml
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Output: `output.txt`
|
|
320
|
+
|
|
321
|
+
```
|
|
322
|
+
class mymodule::myclass {
|
|
323
|
+
user {'user1':
|
|
324
|
+
ensure => present,
|
|
325
|
+
managehome => true,
|
|
326
|
+
uid => '1000',
|
|
327
|
+
gid => '1000',
|
|
328
|
+
home => '/home/user1',
|
|
329
|
+
shell => '/usr/bin/bash',
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Create module skeleton
|
|
335
|
+
|
|
336
|
+
Command:
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
ppgen create module --module name
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
Output: Directory `name`
|
|
343
|
+
|
|
344
|
+
```
|
|
345
|
+
name/
|
|
346
|
+
|-- files
|
|
347
|
+
`-- manifests
|
|
348
|
+
`-- init.pp
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Create roles for existing pp-files
|
|
352
|
+
|
|
353
|
+
**Please note**:
|
|
354
|
+
You should run this command only on VCS-enabled module directories (e.g.
|
|
355
|
+
git,cvs,svn,bazar,mercurial). It may overwrite existing role-files (e.g.
|
|
356
|
+
directory = 'dir1', role-file = 'dir1.pp').
|
|
357
|
+
|
|
358
|
+
Input:
|
|
359
|
+
|
|
360
|
+
```
|
|
361
|
+
name
|
|
362
|
+
|-- files
|
|
363
|
+
`-- manifests
|
|
364
|
+
|-- apps
|
|
365
|
+
| |-- firefox.pp
|
|
366
|
+
| |-- i3.pp
|
|
367
|
+
| `-- mutt.pp
|
|
368
|
+
`-- init.pp
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
Command:
|
|
372
|
+
|
|
373
|
+
```
|
|
374
|
+
cd name/manifests
|
|
375
|
+
ppgen create role --export-filter build_role_includes_for_directory --source apps --destination dir:./
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
Output: file `apps.pp`
|
|
379
|
+
|
|
380
|
+
```
|
|
381
|
+
name
|
|
382
|
+
|-- files
|
|
383
|
+
`-- manifests
|
|
384
|
+
|-- apps
|
|
385
|
+
| |-- firefox.pp
|
|
386
|
+
| |-- i3.pp
|
|
387
|
+
| `-- mutt.pp
|
|
388
|
+
|-- apps.pp <--- NEW
|
|
389
|
+
`-- init.pp
|
|
390
|
+
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
## Tipps & Tricks
|
|
394
|
+
|
|
395
|
+
### Remote access to filesystem
|
|
396
|
+
|
|
397
|
+
Some of `ppgen` commands and/or options need filesystem access. If you try to
|
|
398
|
+
migrate a server and it's not possible to install the `puppet_generator` onto
|
|
399
|
+
the old one, `sshfs` may help you. Please consult the manual of `sshfs` to make
|
|
400
|
+
it work.
|
|
401
|
+
|
|
402
|
+
### Jump Server Infrastructure
|
|
403
|
+
|
|
404
|
+
To make your life in an infrastructure with a jump server easier, you could use
|
|
405
|
+
the following ssh setup, which can be used with sshfs as well (recommened for
|
|
406
|
+
the use with sshfs by the author of this manual)! Given the following
|
|
407
|
+
infrastructure:
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
linux/unit work station --> jump server --> target server
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
You build up a ssh connection from the workstation (1) to the jump server (2).
|
|
414
|
+
|
|
415
|
+
```
|
|
416
|
+
linux/unit work station ====== jump server
|
|
417
|
+
(1) ssh (2)
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
Furthermore: You build up a tcp connection from the jump server (2) to the target
|
|
421
|
+
server (3).
|
|
422
|
+
|
|
423
|
+
```
|
|
424
|
+
jump server ****** target server
|
|
425
|
+
(2) tcp (3)
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
Done this way you have a connection like the following one in the next figure.
|
|
429
|
+
|
|
430
|
+
```
|
|
431
|
+
linux/unit work station ====== jump server ****** target server
|
|
432
|
+
ssh tcp
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
Then you instruct ssh to use this connection for another ssh connection: from
|
|
436
|
+
the workstation to the target server. This works by using the first connection
|
|
437
|
+
as proxy connection via the ssh proxy command (see below).
|
|
438
|
+
|
|
439
|
+
```
|
|
440
|
+
ssh
|
|
441
|
+
linux/unit work station ------------------------- target server
|
|
442
|
+
(1) (jump server) (3)
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
To get this up and running you should use a ssh configuration similar to the following one: File `$HOME/.ssh/config`:
|
|
446
|
+
|
|
447
|
+
```
|
|
448
|
+
Host jump_server
|
|
449
|
+
Hostname jump_server.example.com
|
|
450
|
+
User user
|
|
451
|
+
ForwardAgent yes
|
|
452
|
+
IdentityFile ~/.ssh/id_rsa
|
|
453
|
+
|
|
454
|
+
Host target_server
|
|
455
|
+
Hostname target_server.example.com
|
|
456
|
+
User admin
|
|
457
|
+
ForwardAgent yes
|
|
458
|
+
IdentityFile ~/.ssh/id_rsa
|
|
459
|
+
ProxyCommand ssh user@jump_server "socat - TCP4:%h:%p" <--- most important line
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
Furthermore you need to install a utitilty which is able to bridge STDIN to TCP
|
|
463
|
+
like `socat` or `netcat`. Personally I prefer `socat` because from my point of
|
|
464
|
+
view it's the most flexible tool for this type of task.
|
|
465
|
+
|
|
466
|
+
## Development
|
|
467
|
+
|
|
468
|
+
Please see the [developer-documentation](README.DEVELOPER.md) for more details.
|
|
469
|
+
|
|
470
|
+
## Copyright
|
|
471
|
+
|
|
472
|
+
© 2013 Max Meyer and Contributors. All rights reserved. Please see [Licence](LICENSE.md).
|
|
473
|
+
|
|
474
|
+
## Contributers
|
|
475
|
+
|
|
476
|
+
* Dennis Günnewig (VR Netze GmbH, https://www.vrnetze.de)
|
|
477
|
+
|
data/Rakefile
ADDED
data/TODO.md
ADDED
data/bin/ppgen
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'puppet_generator/main'
|
|
4
|
+
|
|
5
|
+
if ENV['PUPPET_GENERATOR_ENV'] and not ENV['TRAVIS_CI'] == 'true'
|
|
6
|
+
case ENV['PUPPET_GENERATOR_ENV'].downcase.to_sym
|
|
7
|
+
when :test
|
|
8
|
+
PuppetGenerator.enable_coverage_report
|
|
9
|
+
PuppetGenerator.enable_debugging_libraries
|
|
10
|
+
when :development
|
|
11
|
+
PuppetGenerator.enable_debugging_libraries
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
require 'puppet_generator'
|
|
16
|
+
PuppetGenerator::Ui::Runner.start
|
data/cucumber.yml
ADDED