bootstrap.pp
No OneTemporary

File Metadata

Created
Sun, Aug 23, 7:51 PM

bootstrap.pp

#============================================
# 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/";
}
}

Event Timeline