You must create the module directory structure in the pre-defined module directory of puppet.conf.
For example, let's say we want to pass a host file to the servers.
mkdir –p /etc/puppet/environments/production/modules/my_hosts/files
mkdir –p /etc/puppet/environments/production/modules/my_hosts/manifests
manifests - holds init.pp and any other configuration.
init.pp - is the core of the module
files - holds any files we wish to serve as part of our module
templates - contains any templates our module might use
vi /etc/puppet/environments/production/modules/my_hosts/manifests/my_hosts.pp
class my_hosts {
file { 'hosts':
owner => 'root',
group => 'root',
mode => '0440',
path => '/etc/hosts',
ensure => file,
source => 'puppet://environments/production/modules/my_hosts/files/hosts'
}
}