diff --git a/hieradata/common.yaml b/hieradata/common.yaml index 5c004ed..cd02e13 100644 --- a/hieradata/common.yaml +++ b/hieradata/common.yaml @@ -32,3 +32,7 @@ profiles::puppet::autosign::domains: profiles::puppet::enc::enc_repo: https://git.unkin.net/unkinben/puppet-enc.git profiles::puppet::r10k::r10k_repo: https://git.unkin.net/unkinben/puppet-r10k.git +profiles::puppet::g10k::bin_path: '/opt/puppetlabs/bin/g10k' +profiles::puppet::g10k::cfg_path: '/etc/puppetlabs/r10k/r10k.yaml' +profiles::puppet::g10k::environments_path: '/etc/puppetlabs/code/environments' +profiles::puppet::g10k::default_environment: 'develop' diff --git a/site/profiles/manifests/puppet/g10k.pp b/site/profiles/manifests/puppet/g10k.pp index 958e53e..617190b 100644 --- a/site/profiles/manifests/puppet/g10k.pp +++ b/site/profiles/manifests/puppet/g10k.pp @@ -30,8 +30,12 @@ # # Limitations: # This is designed to work on Unix-like systems only. -class profiles::puppet::g10k { - +class profiles::puppet::g10k ( + String $bin_path, + String $cfg_path, + String $environments_path, + String $default_environment, +){ package { 'unzip': ensure => installed, } @@ -50,7 +54,7 @@ class profiles::puppet::g10k { owner => 'root', group => 'root', mode => '0755', - content => "#!/usr/bin/bash\n/opt/puppetlabs/bin/g10k -config /etc/puppetlabs/r10k/r10k.yaml\n", + content => template('profiles/puppet/g10k/puppet-g10k.erb'), require => Archive['/tmp/g10k.zip'], } diff --git a/site/profiles/manifests/puppet/puppetmaster.pp b/site/profiles/manifests/puppet/puppetmaster.pp index d50ed16..d9e9e3d 100644 --- a/site/profiles/manifests/puppet/puppetmaster.pp +++ b/site/profiles/manifests/puppet/puppetmaster.pp @@ -29,15 +29,17 @@ class profiles::puppet::puppetmaster { include profiles::puppet::autosign class { 'profiles::puppet::server': - vardir => '/opt/puppetlabs/server/data/puppetserver', - logdir => '/var/log/puppetlabs/puppetserver', - rundir => '/var/run/puppetlabs/puppetserver', - pidfile => '/var/run/puppetlabs/puppetserver/puppetserver.pid', - codedir => '/etc/puppetlabs/code', - dns_alt_names => ['prodinf01n01.main.unkin.net'], - server => 'prodinf01n01.main.unkin.net', - node_terminus => 'exec', - external_nodes => '/opt/puppetlabs/bin/enc', - autosign => '/etc/puppetlabs/puppet/autosign.conf', + vardir => '/opt/puppetlabs/server/data/puppetserver', + logdir => '/var/log/puppetlabs/puppetserver', + rundir => '/var/run/puppetlabs/puppetserver', + pidfile => '/var/run/puppetlabs/puppetserver/puppetserver.pid', + codedir => '/etc/puppetlabs/code', + dns_alt_names => ['prodinf01n01.main.unkin.net'], + server => 'prodinf01n01.main.unkin.net', + node_terminus => 'exec', + external_nodes => '/opt/puppetlabs/bin/enc', + autosign => '/etc/puppetlabs/puppet/autosign.conf', + default_manifest => '/etc/puppetlabs/code/environments/develop/manifests', + default_environment => 'develop', } } diff --git a/site/profiles/manifests/puppet/server.pp b/site/profiles/manifests/puppet/server.pp index 03b82c3..ca68998 100644 --- a/site/profiles/manifests/puppet/server.pp +++ b/site/profiles/manifests/puppet/server.pp @@ -25,6 +25,8 @@ class profiles::puppet::server ( String $node_terminus, String $external_nodes, String $autosign, + String $default_manifest, + String $default_environment, ) { file { '/etc/puppetlabs/puppet/puppet.conf': @@ -33,16 +35,18 @@ class profiles::puppet::server ( group => 'root', mode => '0644', content => epp('profiles/puppet/server/puppet.conf.epp', { - 'vardir' => $vardir, - 'logdir' => $logdir, - 'rundir' => $rundir, - 'pidfile' => $pidfile, - 'codedir' => $codedir, - 'dns_alt_names' => join($dns_alt_names, ','), - 'server' => $server, - 'node_terminus' => $node_terminus, - 'external_nodes' => $external_nodes, - 'autosign' => $autosign, + 'vardir' => $vardir, + 'logdir' => $logdir, + 'rundir' => $rundir, + 'pidfile' => $pidfile, + 'codedir' => $codedir, + 'dns_alt_names' => join($dns_alt_names, ','), + 'server' => $server, + 'node_terminus' => $node_terminus, + 'external_nodes' => $external_nodes, + 'autosign' => $autosign, + 'default_manifest' => $default_manifest, + 'default_environment' => $default_environment, }), notify => Service['puppetserver'], } diff --git a/site/profiles/templates/puppet/g10k/puppet-g10k.erb b/site/profiles/templates/puppet/g10k/puppet-g10k.erb new file mode 100644 index 0000000..2bb537e --- /dev/null +++ b/site/profiles/templates/puppet/g10k/puppet-g10k.erb @@ -0,0 +1,4 @@ +#!/usr/bin/bash +<%= @bin_path %> -config <%= @cfg_path %> +rm -f <%= @environments_path %>/production +ln -s <%= @environments_path %>/<%= @default_environment %> <%= @environments_path %>/production diff --git a/site/profiles/templates/puppet/server/puppet.conf.epp b/site/profiles/templates/puppet/server/puppet.conf.epp index 37f3a5e..a22777b 100644 --- a/site/profiles/templates/puppet/server/puppet.conf.epp +++ b/site/profiles/templates/puppet/server/puppet.conf.epp @@ -15,3 +15,5 @@ server = <%= $server %> node_terminus = exec external_nodes = <%= $external_nodes %> autosign = <%= $autosign %> +default_manifest = <%= $default_manifest %> +default_environment = <%= $default_environment %>