Commit 94b10f220b0ad57bd7782903ceebb16a9590d85e

Authored by Will Farrington
1 parent d4af4bf811

first spike at docs on puppet modules

Showing 1 changed file with 111 additions and 0 deletions Inline Diff

File was created 1 # Writing Puppet modules for Boxen
2
3 Writing Puppet modules for Boxen is easy.
4
5 ## Tooling
6
7 * Always use Bundler
8 * Always use librarian-puppet
9 * Always use puppet-lint
10 * Always use rspec-puppet
11
12 ## Directory structure
13
14 We follow Puppet's recommended structure very closely.
15 Here's the directory structure from the boxen Puppet module:
16
17 ```
18 ├── Gemfile
19 ├── Gemfile.lock
20 ├── README.md
21 ├── files
22 │   ├── README.md
23 │   └── gemrc
24 ├── lib
25 │   ├── facter
26 │   │   ├── boxen.rb
27 │   │   └── root_encrypted.rb
28 │   └── puppet
29 │   ├── parser
30 │   │   └── functions
31 │   │   ├── file_exists.rb
32 │   │   ├── include_all_projects.rb
33 │   │   └── include_projects_from_boxen_cli.rb
34 │   ├── provider
35 │   │   ├── package
36 │   │   │   ├── compressed_app.rb
37 │   │   │   ├── hax.rb
38 │   │   │   └── homebrew.rb
39 │   │   ├── repository
40 │   │   │   └── git.rb
41 │   │   └── service
42 │   │   └── ghlaunchd.rb
43 │   └── type
44 │   └── repository.rb
45 ├── manifests
46 │   ├── bin.pp
47 │   ├── config.pp
48 │   ├── development
49 │   │   └── project.pp
50 │   ├── development.pp
51 │   ├── environment.pp
52 │   ├── gemrc.pp
53 │   ├── janitor.pp
54 │   ├── osx_defaults.pp
55 │   ├── personal.pp
56 │   ├── profile.pp
57 │   ├── project.pp
58 │   ├── repo.pp
59 │   ├── security.pp
60 │   ├── sudoers.pp
61 │   └── zipped_widget.pp
62 ├── script
63 │   ├── bootstrap
64 │   ├── cibuild
65 │   ├── lint
66 │   ├── specs
67 │   └── syntax
68 ├── spec
69 │   ├── classes
70 │   │   ├── bin_spec.rb
71 │   │   └── environment_spec.rb
72 │   ├── fixtures
73 │   │   ├── Puppetfile
74 │   │   ├── Puppetfile.lock
75 │   │   ├── manifests
76 │   │   │   └── site.pp
77 │   │   └── modules
78 │   │   ├── boxen
79 │   │   │   ├── files -> ../../../../files
80 │   │   │   ├── lib -> ../../../../lib
81 │   │   │   ├── manifests -> ../../../../manifests
82 │   │   │   └── templates -> ../../../../templates
83 │   │   └── projects
84 │   │   └── manifests
85 │   │   └── test.pp
86 │   ├── spec_helper.rb
87 │   └── unit
88 │   └── puppet
89 │   └── type
90 │   └── repository_spec.rb
91 └── templates
92 ├── config.sh.erb
93 ├── env.sh.erb
94 └── gh_creds.sh.erb
95 ```
96
97 Of note, we do not use things like `rake` to drive specs.
98 Instead, we bias towards simple, portable shell scripts that can be consumed
99 by other shell scripts.
100