diff --git a/manifests/init.pp b/manifests/init.pp index 5352f0df..7d45a636 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -241,6 +241,10 @@ # # $server_git_repo_user:: Git repository user # +# $server_git_repo_r10k:: Git repository contains Puppetfile for r10k +# +# $server_git_repo_gen_types:: Generate types for environment isolation +# # $server_git_branch_map:: Git branch to puppet env mapping for the # default post receive hook # @@ -659,6 +663,8 @@ Array[String] $server_cipher_suites = $puppet::params::server_cipher_suites, Integer[0] $server_connect_timeout = $puppet::params::server_connect_timeout, Boolean $server_git_repo = $puppet::params::server_git_repo, + Boolean $server_git_repo_r10k = $puppet::params::server_git_repo_r10k, + Boolean $server_git_repo_gen_types = $puppet::params::server_git_repo_gen_types, Boolean $server_default_manifest = $puppet::params::server_default_manifest, Stdlib::Absolutepath $server_default_manifest_path = $puppet::params::server_default_manifest_path, String $server_default_manifest_content = $puppet::params::server_default_manifest_content, diff --git a/manifests/params.pp b/manifests/params.pp index 4eab6d50..c8c6ce23 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -255,6 +255,10 @@ $server_git_repo_user = $user # group of the repository $server_git_repo_group = $user + # check repositories for r10k modules + $server_git_repo_r10k = false + # generate environment specific types + $server_git_repo_gen_types = false # Override these if you need your own hooks $server_post_hook_content = 'puppet/server/post-receive.erb' $server_post_hook_name = 'post-receive' diff --git a/manifests/server.pp b/manifests/server.pp index fc94aa87..421bfb08 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -88,6 +88,10 @@ # # $git_repo_user:: Git repository user # +# $git_repo_r10k:: Git repository contains Puppetfile for r10k +# +# $git_repo_gen_types:: Generate types for environment isolation +# # $git_branch_map:: Git branch to puppet env mapping for the # default post receive hook # @@ -375,6 +379,8 @@ Integer[0] $connect_timeout = $puppet::server_connect_timeout, Integer[0] $web_idle_timeout = $puppet::server_web_idle_timeout, Boolean $git_repo = $puppet::server_git_repo, + Boolean $git_repo_r10k = $puppet::server_git_repo_r10k, + Boolean $git_repo_gen_types = $puppet::server_git_repo_gen_types, Boolean $default_manifest = $puppet::server_default_manifest, Stdlib::Absolutepath $default_manifest_path = $puppet::server_default_manifest_path, String $default_manifest_content = $puppet::server_default_manifest_content, diff --git a/templates/server/post-receive.erb b/templates/server/post-receive.erb index 1a2a9e1a..e056ea39 100644 --- a/templates/server/post-receive.erb +++ b/templates/server/post-receive.erb @@ -100,7 +100,7 @@ $stdin.each_line do |line| Dir.chdir environment_path do_cmd("git fetch --all") do_cmd("git reset --hard 'origin/#{branchname}'") - if File.exists? "#{environment_path}/.gitmodules" + if File.exist? "#{environment_path}/.gitmodules" # ensure that we remove deleted sub modules too do_cmd("git status --short").split("\n").each do |file| # ?? old_submodule/ @@ -111,12 +111,33 @@ $stdin.each_line do |line| end do_cmd("git submodule sync") do_cmd("git submodule update --init --recursive") + <% if @git_repo_r10k -%> + if File.exist? 'Puppetfile' + puts("Installing modules using r10k") + do_cmd("r10k puppetfile install") + end + <% end -%> + <% if @git_repo_gen_types -%> + puts("Generating types for #{environment_name})" + do_cmd("puppet generate types --environment #{environment_name}" + <% end -%> end else # Instantiate a new environment from the current repository. puts "Creating new environment #{environment_name}" do_cmd("git clone --recursive #{SOURCE_REPOSITORY} #{environment_path} --branch #{branchname}") + <% if @git_repo_r10k -%> + Dir.chdir environment_path + if File.exist? 'Puppetfile' + puts("Installing modules using r10k") + do_cmd("r10k puppetfile install") + end + <% end -%> + <% if @git_repo_gen_types -%> + puts("Generating types for #{environment_name})" + do_cmd("puppet generate types --environment #{environment_name}" + <% end -%> end end end