Skip to content

Commit 70a6639

Browse files
jcpunkekohl
authored andcommitted
Fixes #35943 - Switch to puppetlabs vcsrepo for gitrepo tracking
1 parent 1a1117e commit 70a6639

File tree

8 files changed

+46
-31
lines changed

8 files changed

+46
-31
lines changed

.fixtures.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ fixtures:
1010
puppetserver_foreman: 'https://github.com/theforeman/puppet-puppetserver_foreman.git'
1111
stdlib: 'https://github.com/puppetlabs/puppetlabs-stdlib.git'
1212
systemd: 'https://github.com/voxpupuli/puppet-systemd.git'
13+
vcsrepo: 'https://github.com/puppetlabs/puppetlabs-vcsrepo.git'

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ sets up `/var/lib/puppet/puppet.git` where each branch maps to one environment.
2929
Avoid using 'server' as this name isn't permitted. On each push to the repo, a
3030
hook updates `/etc/puppet/environments` with the contents of the branch.
3131

32-
Requires [theforeman/git](https://forge.puppetlabs.com/theforeman/git).
32+
Permissions can be controlled via the `git_repo_{user,group,hook_mode,umask}`
33+
parameters.
34+
35+
Requires [puppetlabs/vcsrepo](https://forge.puppetlabs.com/puppetlabs/vcsrepo) >= 5.2.0.
3336

3437
## Foreman integration
3538

manifests/init.pp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,9 +240,11 @@
240240
#
241241
# $server_common_modules_path:: Common modules paths
242242
#
243-
# $server_git_repo_path:: Git repository path
243+
# $server_git_repo_path:: Git repository path on disk
244244
#
245-
# $server_git_repo_mode:: Git repository mode
245+
# $server_git_repo_umask:: Umask used during git operations
246+
#
247+
# $server_git_repo_hook_mode:: Git repository hook mode
246248
#
247249
# $server_git_repo_group:: Git repository group
248250
#
@@ -671,8 +673,9 @@
671673
Array[Stdlib::Absolutepath, 1] $server_envs_dir = $puppet::params::server_envs_dir,
672674
Optional[Stdlib::Absolutepath] $server_envs_target = $puppet::params::server_envs_target,
673675
Variant[Undef, String[0], Array[Stdlib::Absolutepath]] $server_common_modules_path = $puppet::params::server_common_modules_path,
674-
Pattern[/^[0-9]{3,4}$/] $server_git_repo_mode = $puppet::params::server_git_repo_mode,
676+
Pattern[/^[0-9]{3,4}$/] $server_git_repo_hook_mode = $puppet::params::server_git_repo_hook_mode,
675677
Stdlib::Absolutepath $server_git_repo_path = $puppet::params::server_git_repo_path,
678+
Pattern[/^[0-9]{3,4}$/] $server_git_repo_umask = $puppet::params::server_git_repo_umask,
676679
String $server_git_repo_group = $puppet::params::server_git_repo_group,
677680
String $server_git_repo_user = $puppet::params::server_git_repo_user,
678681
Hash[String, String] $server_git_branch_map = $puppet::params::server_git_branch_map,

manifests/params.pp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,12 @@
252252
$server_common_modules_path = unique(["${server_envs_dir[0]}/common", "${codedir}/modules", "${sharedir}/modules", '/usr/share/puppet/modules'])
253253

254254
# Dynamic environments config, ignore if the git_repo is 'false'
255-
# Path to the repository
255+
# Path to the repository on disk
256256
$server_git_repo_path = "${vardir}/puppet.git"
257-
# mode of the repository
258-
$server_git_repo_mode = '0755'
257+
# Umask for vcsrepo operations
258+
$server_git_repo_umask = '0022'
259+
# mode of the repository hooks
260+
$server_git_repo_hook_mode = '0755'
259261
# user of the repository
260262
$server_git_repo_user = $user
261263
# group of the repository

manifests/server.pp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,11 @@
8282
#
8383
# $common_modules_path:: Common modules paths
8484
#
85-
# $git_repo_path:: Git repository path
85+
# $git_repo_path:: Git repository path on disk
8686
#
87-
# $git_repo_mode:: Git repository mode
87+
# $git_repo_umask:: Umask used during git operations
88+
#
89+
# $git_repo_hook_mode:: Git repository hook mode
8890
#
8991
# $git_repo_group:: Git repository group
9092
#
@@ -382,8 +384,9 @@
382384
Array[Stdlib::Absolutepath, 1] $envs_dir = $puppet::server_envs_dir,
383385
Optional[Stdlib::Absolutepath] $envs_target = $puppet::server_envs_target,
384386
Variant[Undef, String[0], Array[Stdlib::Absolutepath]] $common_modules_path = $puppet::server_common_modules_path,
385-
Pattern[/^[0-9]{3,4}$/] $git_repo_mode = $puppet::server_git_repo_mode,
387+
Pattern[/^[0-9]{3,4}$/] $git_repo_hook_mode = $puppet::server_git_repo_hook_mode,
386388
Stdlib::Absolutepath $git_repo_path = $puppet::server_git_repo_path,
389+
Pattern[/^[0-9]{3,4}$/] $git_repo_umask = $puppet::server_git_repo_umask,
387390
String $git_repo_group = $puppet::server_git_repo_group,
388391
String $git_repo_user = $puppet::server_git_repo_user,
389392
Hash[String, String] $git_branch_map = $puppet::server_git_branch_map,

manifests/server/config.pp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -229,25 +229,20 @@
229229
}
230230

231231
if $puppet::server::git_repo {
232-
include git
233-
234-
if $puppet::server::manage_user {
235-
Class['git'] -> User[$puppet::server::user]
236-
}
237-
238232
file { $puppet::vardir:
239233
ensure => directory,
240234
owner => 'root',
241235
group => 'root',
242236
}
243237

244-
git::repo { 'puppet_repo':
245-
bare => true,
246-
target => $puppet::server::git_repo_path,
247-
mode => $puppet::server::git_repo_mode,
248-
user => $puppet::server::git_repo_user,
249-
group => $puppet::server::git_repo_group,
250-
require => File[$puppet::vardir, $primary_envs_dir],
238+
vcsrepo { 'puppet_repo':
239+
ensure => 'bare',
240+
provider => 'git',
241+
path => $puppet::server::git_repo_path,
242+
user => $puppet::server::git_repo_user,
243+
group => $puppet::server::git_repo_group,
244+
umask => $puppet::server::git_repo_umask,
245+
require => File[$puppet::vardir, $primary_envs_dir],
251246
}
252247

253248
$git_branch_map = $puppet::server::git_branch_map
@@ -256,8 +251,8 @@
256251
content => template($puppet::server::post_hook_content),
257252
owner => $puppet::server::git_repo_user,
258253
group => $puppet::server::git_repo_group,
259-
mode => $puppet::server::git_repo_mode,
260-
require => Git::Repo['puppet_repo'],
254+
mode => $puppet::server::git_repo_hook_mode,
255+
require => Vcsrepo['puppet_repo'],
261256
}
262257
}
263258

manifests/server/install.pp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
Class['puppet::server::install'] -> Class['foreman::config']
1111
}
1212

13+
if $puppet::server::git_repo {
14+
ensure_packages(['git'])
15+
}
16+
1317
if $puppet::server::manage_user {
1418
$shell = $puppet::server::git_repo ? {
1519
true => $facts['os']['family'] ? {
@@ -22,6 +26,10 @@
2226
user { $puppet::server::user:
2327
shell => $shell,
2428
}
29+
30+
if $puppet::server::git_repo {
31+
Package['git'] -> User[$puppet::server::user]
32+
}
2533
}
2634

2735
if $puppet::manage_packages == true or $puppet::manage_packages == 'server' {

spec/classes/puppet_server_spec.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@
347347
end
348348
should contain_user('puppet')
349349
.with_shell(shell)
350-
.that_requires('Class[git]')
350+
.that_requires('Package[git]')
351351
end
352352

353353
it do
@@ -357,9 +357,9 @@
357357
end
358358

359359
it do
360-
should contain_git__repo('puppet_repo')
361-
.with_bare(true)
362-
.with_target("#{vardir}/puppet.git")
360+
should contain_vcsrepo('puppet_repo')
361+
.with_ensure('bare')
362+
.with_path("#{vardir}/puppet.git")
363363
.with_user('puppet')
364364
.that_requires("File[#{environments_dir}]")
365365
end
@@ -368,7 +368,7 @@
368368
should contain_file("#{vardir}/puppet.git/hooks/post-receive")
369369
.with_owner('puppet') \
370370
.with_mode('0755') \
371-
.that_requires('Git::Repo[puppet_repo]') \
371+
.that_requires('Vcsrepo[puppet_repo]') \
372372
.with_content(/BRANCH_MAP = \{[^a-zA-Z=>]\}/)
373373
end
374374

@@ -672,7 +672,7 @@
672672
it { should contain_puppet__config__main('environmentpath').with_value('/etc/puppetlabs/code/environments/:/etc/puppetlabs/code/unmanaged-environments/') }
673673
it { should contain_file('/etc/puppetlabs/code/environments/') }
674674
it { should contain_file('/etc/puppetlabs/code/unmanaged-environments/') }
675-
it { should contain_git__repo('puppet_repo').that_requires('File[/etc/puppetlabs/code/environments/]') }
675+
it { should contain_vcsrepo('puppet_repo').that_requires('File[/etc/puppetlabs/code/environments/]') }
676676
it { should contain_file('/test/puppet/hooks/post-receive').with_content(/ENVIRONMENT_BASEDIR\s=\s"\/etc\/puppetlabs\/code\/environments\/"/) }
677677
end
678678
end

0 commit comments

Comments
 (0)