diff --git a/CHANGELOG.md b/CHANGELOG.md index cd05659a6..30f2d78d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# 2016-07-27 - Release 3.1.1 +###Features +- Add support to set user and group id. [\#254](https://github.com/voxpupuli/puppet-rundeck/pull/254) ([zlanyi](https://github.com/zlanyi)) + + # 2016-07-11 - Release 3.1.0 ###Features - Add support for more security role in web.xml [\#250](https://github.com/voxpupuli/puppet-rundeck/pull/250) ([zlanyi](https://github.com/zlanyi)) diff --git a/manifests/init.pp b/manifests/init.pp index 83a063d10..c012d9d87 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -142,6 +142,12 @@ # [*user*] # The user that rundeck is installed as. # +# [*user_id*] +# If you want to have always the same user id. Eg. because of the NFS share. +# +# [*group_id*] +# If you want to have always the same group id. Eg. because of the NFS share. +# # [*security_roles_array_enabled*] # Boolean value if you need more roles. false or true (default is false). # @@ -215,6 +221,8 @@ $truststore = $rundeck::params::truststore, $truststore_password = $rundeck::params::truststore_password, $user = $rundeck::params::user, + $user_id = $rundeck::params::user_id, + $group_id = $rundeck::params::group_id, $security_roles_array_enabled = $rundeck::params::security_roles_array_enabled, $security_roles_array = $rundeck::params::security_roles_array, ) inherits rundeck::params { @@ -254,6 +262,8 @@ validate_bool($manage_default_api_policy) validate_bool($security_roles_array_enabled) validate_array($security_roles_array) + validate_string($user_id) + validate_string($group_id) class { '::rundeck::install': } -> class { '::rundeck::config': } ~> diff --git a/manifests/install.pp b/manifests/install.pp index 95a7a0b5a..bdd5b6c2b 100644 --- a/manifests/install.pp +++ b/manifests/install.pp @@ -11,7 +11,7 @@ $manage_yum_repo = $rundeck::manage_yum_repo, $package_ensure = $rundeck::package_ensure, $package_source = $rundeck::package_source, - $rdeck_home = $rundeck::rdeck_home, + $rdeck_home = $rundeck::rdeck_home ) { if $caller_module_name != $module_name { @@ -24,6 +24,9 @@ $user = $rundeck::user $group = $rundeck::group + $user_id = $rundeck::user_id + $group_id = $rundeck::group_id + File { owner => $user, @@ -76,9 +79,20 @@ } } - if $group == 'rundeck' { + if $group == 'rundeck' and $group_id == '' { ensure_resource('group', 'rundeck', { 'ensure' => 'present' } ) - } else { + } + elsif $group == 'rundeck' and $group_id != '' { + ensure_resource('group', 'rundeck', { 'ensure' => 'present', 'gid' => $group_id } ) + } + elsif $group != 'rundeck' and $group_id != '' { + ensure_resource('group', $group, { 'ensure' => 'present', 'gid' => $group_id } ) + + group { 'rundeck': + ensure => absent, + } + } + else { ensure_resource('group', $group, { 'ensure' => 'present' } ) group { 'rundeck': @@ -86,9 +100,20 @@ } } - if $user == 'rundeck' { + if $user == 'rundeck' and $user_id == '' { ensure_resource('user', $user, { 'ensure' => 'present', 'groups' => [$group] } ) - } else { + } + elsif $user == 'rundeck' and $user_id != '' and $group_id != '' { + ensure_resource('user', $user, { 'ensure' => 'present', 'groups' => [$group], 'uid' => $user_id, 'gid' => $group_id } ) + } + elsif $user != 'rundeck' and $user_id != '' and $group_id != '' { + ensure_resource('user', $user, { 'ensure' => 'present', 'groups' => [$group], 'uid' => $user_id, 'gid' => $group_id } ) + + user { 'rundeck': + ensure => absent, + } + } + else { ensure_resource('user', $user, { 'ensure' => 'present', 'groups' => [$group] } ) user { 'rundeck': @@ -96,6 +121,7 @@ } } + file { $rdeck_home: ensure => directory, } ~> diff --git a/manifests/params.pp b/manifests/params.pp index 146f2b7d8..b08e82858 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -240,6 +240,8 @@ $user = 'rundeck' $group = 'rundeck' + $user_id = '' + $group_id = '' $loglevel = 'INFO' $rss_enabled = false diff --git a/spec/classes/install_spec.rb b/spec/classes/install_spec.rb index aa4e1159b..4440c59dc 100644 --- a/spec/classes/install_spec.rb +++ b/spec/classes/install_spec.rb @@ -84,4 +84,36 @@ ) end end + describe 'different user and group with ids' do + let(:params) do + { + user: 'A1234', + group: 'A1234', + user_id: '10000', + group_id: '10000' + } + end + let(:facts) do + { + osfamily: 'Debian', + serialnumber: 0, + rundeck_version: '', + puppetversion: '3.8.1' + } + end + it do + should contain_group('A1234').with( + 'ensure' => 'present', + 'gid' => '10000' + ) + end + + it do + should contain_user('A1234').with( + 'ensure' => 'present', + 'gid' => '10000', + 'uid' => '10000' + ) + end + end end