No, you can add different modules in different directories and have separate init.pp
's there.
Examples:
apache2/manifests/init.pp
:
class apache2 {
do some stuff;
}
postfix/manifests/init.pp
:
class postfix {
do other stuff;
}
my_mail_and_web_server/manifests/init.pp
:
class my_mail_and_web_server {
class { 'apache2':; }
class { 'postfix':; }
}
manifests/site.pp
:
node 'mailandweb.mycompany.com' {
class { 'my_mail_and_web_server':; }
}
See https://docs.puppetlabs.com/puppet/latest/reference/modules_fundamentals.html for more details on how to structure your modules.