Commit 94b10f220b0ad57bd7782903ceebb16a9590d85e
1 parent
d4af4bf811
first spike at docs on puppet modules
Showing 1 changed file with 111 additions and 0 deletions Inline Diff
docs/modules.md
| 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 |