The directory hosting the implementation of this puppet module is organized as follows:

.gitignore              # Git ignore file
.ruby-{version,gemset}  # [RVM](https://rvm.io/) configuration
.vagrant_init.rb        # Vagrant provisionner to test this module
├── Gemfile[.lock]      # [Bundler](http://bundler.io/) configuration
├── LICENSE             # Licence file
├── README.md           # This file
├── Rakefile            # Definition of the [rake](https://github.com/jimweirich/rake) tasks
├── Vagrantfile         # Pilot Vagrant to test this module
├── docs/               # [Read the Docs](readthedocs.org) main directory
├── files/              # (eventually) Contains static files, which managed nodes can download
├── lib/                # (eventually) Custom facts/type/provider definitions
├── manifests/         
│   ├── init.pp         # Main manifests file which defines the sudo class 
│   ├── common/
│   │   ├── debian.pp   # Specific Debian setup for the main class
│   │   └── redhat.pp   # Specific Redhat setup for the main class
│   ├── common.pp       # Common class setup for all OS
│   ├── ...             # Implementation of the other sysadmins::* classes / definitions
│   └── params.pp       # Class parameters
├── metadata.json       # Puppet module configuration file -- See http://tinyurl.com/puppet-metadata-json
├── mkdocs.yml          # [Read the Docs](readthedocs.org) configuration 
├── pkg/                # Hold build packages to be published on the [Puppet forge](https://forge.puppetlabs.com/ULHPC/sysadmins)
├── spec/               # (eventually) [Rspec](https://www.relishapp.com/rspec/) tests
├── templates/          # (eventually) Module ERB template files
└── tests/              # Tests cases for the module usage

Globally, this module follows the official PuppetLabs guidelines for the predictable directory tree structure of Puppet modules.