Selaa lähdekoodia

Merge branch 'koumbit' into shared

Micah Anderson 11 vuotta sitten
vanhempi
commit
208aefb872

+ 1 - 0
files/sudoers/FreeBSD/sudoers

@@ -36,3 +36,4 @@ root	ALL=(ALL) ALL
 # Samples
 # %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
 # %users  localhost=/sbin/shutdown -h now
+#includedir /usr/local/etc/sudoers.d

+ 27 - 0
files/sudoers/sudoers

@@ -0,0 +1,27 @@
+#
+# This file MUST be edited with the 'visudo' command as root.
+#
+# Please consider adding local content in /etc/sudoers.d/ instead of
+# directly modifying this file.
+#
+# See the man page for details on how to write a sudoers file.
+#
+Defaults	env_reset
+Defaults	mail_badpass
+Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+
+# Host alias specification
+
+# User alias specification
+
+# Cmnd alias specification
+
+# User privilege specification
+root	ALL=(ALL:ALL) ALL
+
+# Allow members of group sudo to execute any command
+%sudo	ALL=(ALL:ALL) ALL
+
+# See sudoers(5) for more information on "#include" directives:
+
+#includedir /etc/sudoers.d

+ 20 - 0
manifests/access.pp

@@ -0,0 +1,20 @@
+define sudo::access (
+  $ensure = 'present',
+  $user = undef,
+  $access = 'ALL=(ALL) ALL'
+) {
+  include sudo
+  if $user == undef {
+    $real_user = $name
+  } else {
+    $real_user = $user
+  }
+  # there shouldn't be a dot in those filenames!
+  file { "${sudo::dir}/01-user_access-${title}":
+    ensure  => 'present',
+    owner   => 'root',
+    group   => 0,
+    mode    => '0440',
+    content => "# THIS FILE IS MANAGED BY PUPPET !\n${real_user}        ${access}\n",
+  }
+}

+ 0 - 11
manifests/base.pp

@@ -1,11 +0,0 @@
-class sudo::base {
-    if $sudo::deploy_sudoers {
-      file{'/etc/sudoers':
-        source => [ "puppet:///modules/site_sudo/sudoers/${::fqdn}/sudoers",
-                    "puppet:///modules/site_sudo/sudoers/sudoers",
-                    "puppet:///modules/sudo/sudoers/${::operatingsystem}/sudoers",
-                    "puppet:///modules/sudo/sudoers/sudoers" ],
-        owner => root, group => 0, mode => 0440;
-      }
-    }
-}

+ 0 - 12
manifests/freebsd.pp

@@ -1,12 +0,0 @@
-class sudo::freebsd inherits sudo::base {
-    package{'sudo':
-        ensure => installed,
-    }
-
-    if $sudo_deploy_sudoers {
-      File['/etc/sudoers']{
-        path => "/usr/local/etc/sudoers",
-        require => Package['sudo'],
-      }
-    }
-}

+ 23 - 6
manifests/init.pp

@@ -3,11 +3,28 @@
 # GPLv3
 
 class sudo(
-  $deploy_sudoers = false
-) {
-  case $::kernel {
-    linux: { include sudo::linux }
-    freebsd: { include sudo::freebsd }
-    default: { include sudo::base }
+  $deploy_sudoers = $sudo::deploy_sudoers,
+  $path = $sudo::params::path,
+  $dir = $sudo::params::dir
+) inherits sudo::params {
+  package {'sudo':
+    ensure => installed,
+  }
+  if $sudo::deploy_sudoers {
+    file {
+      $sudo::path:
+        source => [ "puppet:///modules/site_sudo/sudoers/${::fqdn}/sudoers",
+                    "puppet:///modules/site_sudo/sudoers/sudoers",
+                    "puppet:///modules/sudo/sudoers/${::operatingsystem}/sudoers",
+                    "puppet:///modules/sudo/sudoers/sudoers" ],
+        require => Package['sudo'],
+        owner => root, group => 0, mode => 0440;
+    }
+  }
+  file {
+    $sudo::dir:
+      ensure => directory,
+      require => Package['sudo'],
+      owner => root, group => 0, mode => 0550;
   }
 }

+ 0 - 11
manifests/linux.pp

@@ -1,11 +0,0 @@
-class sudo::linux inherits sudo::base {
-    package{'sudo':
-        ensure => installed,
-    }
-
-    if $sudo_deploy_sudoers {
-      File['/etc/sudoers']{
-        require => Package['sudo'],
-      }
-    }
-}

+ 11 - 0
manifests/params.pp

@@ -0,0 +1,11 @@
+class sudo::params {
+  $dir = $::kernel ? {
+    /freebsd/ => '/usr/local/etc/sudoers.d',
+    default => '/etc/sudoers.d',
+  }
+  $path = $::kernel ? {
+    /freebsd/ => '/usr/local/etc/sudoers',
+    default => '/etc/sudoers',
+  }
+  $deploy_sudoers = false
+}

+ 13 - 0
manifests/user_alias.pp

@@ -0,0 +1,13 @@
+define sudo::user_alias (
+  $members,
+  $ensure = 'present'
+) {
+  # this is 00-prefixed so that it's defined before the other definitions
+  file { "${sudo::dir}/00-user_alias-${title}":
+    ensure  => $ensure,
+    owner   => 'root',
+    group   => 0,
+    mode    => '0440',
+    content => "# THIS FILE IS MANAGED BY PUPPET !\n\nUser_Alias ${name} = ${members}\n",
+  }
+}

+ 3 - 0
tests/base.pp

@@ -0,0 +1,3 @@
+class { 'sudo': dir => '/tmp/sudoers.d' }
+
+sudo::access { 'foo': }

+ 1 - 0
tests/deploy.pp

@@ -0,0 +1 @@
+class { 'sudo': deploy_sudoers => true }

+ 3 - 0
tests/freebsd.pp

@@ -0,0 +1,3 @@
+# needs to be ran with FACTER_kernel=freebsd puppet apply --modulepath=.. tests/freebsd.pp
+
+sudo::access { 'foo': }