#============================================ # Main Parameters $source_dir = '/etc/puppet/bootstrap/' #============================================ # Managing Puppet itself $binpath = ['/usr/bin', '/usr/sbin', '/bin'] $puppet_dir = '/etc/puppet/code/' $modules_src_dir = "${source_dir}puppet/modules/" $environments_src_dir = "${source_dir}puppet/conf/" # Standard Modules $modules = [ {'name'=> 'stdlib', 'vendor' => 'puppetlabs'}, {'name'=> 'sudo', 'vendor' => 'saz'}, {'name'=> 'ssh', 'vendor' => "saz"}, {'name'=> 'systemd', 'vendor' => "camptocamp"}, {'name'=> 'apt', 'vendor' => 'puppetlabs'}, # phabricator {'name'=> 'cron', 'vendor' => 'puppet'} ,{'name'=> 'vcsrepo', 'vendor' => 'puppetlabs'} ,{'name'=> 'php', 'vendor' => 'puppet'} ,{'name'=> 'debconf', "vendor" => "stm"} ,{'name'=> 'git', "vendor" => "puppetlabs"} ,{'name'=> 'logrotate', 'vendor' => "puppet"} ,{'name'=> 'nodejs', 'vendor' => "puppet"} ,{'name'=> 'mysql', 'vendor' => 'puppetlabs'} ,{'name'=> 'nginx', 'vendor' => 'puppet'}, # others {'name'=> 'nextcloud', 'vendor' => 'othalla'}, ] $modules.each | $module | { exec {"puppet module install ${module['vendor']}/${module['name']} --environment ${environment}": creates => "/etc/puppet/code/modules/${module['name']}", path => $binpath, logoutput => true } } # Inplace Modules $modules_custom = ['zerotier', 'basics', 'phabricator', 'xreate_org'] $modules_custom.each | $module | { file { "${puppet_dir}modules/${module}": ensure => link, target => "${modules_src_dir}${module}" } } # Environments $environments = ['virtualbox', 'prod'] file{"${puppet_dir}environments": ensure => directory; } $environments.each | $environment | { file{ "${puppet_dir}environments/$environment": ensure => directory; "${puppet_dir}environments/$environment/hiera.yaml": ensure => file, content => " version: 5 hierarchy: - name: Common path: common.yaml defaults: data_hash: yaml_data datadir: ${environments_src_dir}$environment/"; } }