]> gitweb.fluxo.info Git - puppet-dhcp.git/commitdiff
Refactor module
authorRaphaël Pinson <raphael.pinson@camptocamp.com>
Thu, 11 Apr 2013 09:54:50 +0000 (11:54 +0200)
committerRaphaël Pinson <raphael.pinson@camptocamp.com>
Thu, 11 Apr 2013 10:03:37 +0000 (12:03 +0200)
  * Use a top dhcp class with a $server boolean param
  * Refactor the dhcp::class to use packages/config/service classes
  * Don't use inheritance, put everything in dhcp::params

manifests/init.pp [new file with mode: 0644]
manifests/params.pp
manifests/server.pp
manifests/server/config.pp [moved from manifests/server/base.pp with 50% similarity]
manifests/server/debian.pp [deleted file]
manifests/server/packages.pp [new file with mode: 0644]
manifests/server/service.pp [new file with mode: 0644]

diff --git a/manifests/init.pp b/manifests/init.pp
new file mode 100644 (file)
index 0000000..8a14b13
--- /dev/null
@@ -0,0 +1,7 @@
+class dhcp (
+  $server = true,
+) {
+  if $server {
+    class { '::dhcp::server': }
+  }
+}
index d2ba584c1775f0be8343acb917a1bfbc050a6d2b..20fbcd26522e699c64e676a72ab7d783f2ed788b 100644 (file)
@@ -17,6 +17,13 @@ class dhcp::params {
         lenny   => 'dhcp3-server',
         squeeze => 'isc-dhcp-server',
       }
+
+      $service_pattern = $::lsbdistcodename? {
+        lenny   => '/usr/sbin/dhcpd3',
+        squeeze => '/usr/sbin/dhcpd',
+      }
+
+      $base_template = 'dhcp/dhcpd.conf.debian.erb'
     }
 
     default: {
index 6bdf51f77adb5509d01279e88af5c242e96f9e30..779b3056ffd447f51b63c403d900b6dce480c25a 100644 (file)
@@ -33,7 +33,7 @@ node "dhcp.toto.ltd" {
 */
 
 class dhcp::server {
-  case $::operatingsystem {
-    Debian: { include dhcp::server::debian }
-  }
+  class { '::dhcp::server::packages': } ->
+  class { '::dhcp::server::config': } ~>
+  class { '::dhcp::server::service': }
 }
similarity index 50%
rename from manifests/server/base.pp
rename to manifests/server/config.pp
index 4e7d645565ffa4acd133af68fa696380d55d2e05..c37d044b34356dfb9f7b544dc64b6dd892dca4c2 100644 (file)
@@ -1,25 +1,6 @@
-# = Class dhcp::server::base
-#
-# Do NOT include this class - it won't work at all.
-# Set variables for package name and so on.
-# This class should be inherited in dhcp::server::$operatingsystem.
-#
-class dhcp::server::base {
-
-  include dhcp::params
-  include concat::setup
-
-  package {'dhcp-server':
-    ensure => present,
-    name   => $dhcp::params::srv_dhcpd,
-  }
-
-  service {'dhcpd':
-    ensure  => running,
-    name    => $dhcp::params::srv_dhcpd,
-    enable  => true,
-    require => Package['dhcp-server'],
-  }
+class dhcp::server::config {
+  include ::dhcp::params
+  include ::concat::setup
 
   concat {"${dhcp::params::config_dir}/dhcpd.conf":
     owner => root,
@@ -30,8 +11,7 @@ class dhcp::server::base {
   concat::fragment {'00.dhcp.server.base':
     ensure  => present,
     target  => "${dhcp::params::config_dir}/dhcpd.conf",
-    require => Package['dhcp-server'],
-    notify  => Service['dhcpd'],
+    content => template($dhcp::params::base_template),
   }
 
   file {"${dhcp::params::config_dir}/dhcpd.conf.d":
@@ -40,7 +20,7 @@ class dhcp::server::base {
     recurse => true,
     purge   => true,
     force   => true,
-    source  => 'puppet:///modules/dhcp/empty'
+    source  => "puppet:///modules/${module_name}/empty"
   }
 
   file {"${dhcp::params::config_dir}/subnets":
@@ -48,7 +28,7 @@ class dhcp::server::base {
     recurse => true,
     purge   => true,
     force   => true,
-    source  => 'puppet:///modules/dhcp/empty',
+    source  => "puppet:///modules/${module_name}/empty",
     require => Package['dhcp-server'],
     notify  => Service['dhcpd'],
   }
@@ -58,8 +38,6 @@ class dhcp::server::base {
     recurse => true,
     purge   => true,
     force   => true,
-    source  => 'puppet:///modules/dhcp/empty',
-    require => Package['dhcp-server'],
+    source  => "puppet:///modules/${module_name}/empty",
   }
-
 }
diff --git a/manifests/server/debian.pp b/manifests/server/debian.pp
deleted file mode 100644 (file)
index 5d23bbe..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# = Class: dhcp::server::debian
-#
-# Installs a dhcp server on debian system.
-#
-# This class should not be included as is,
-# please include "dhcp::server" instead.
-#
-class dhcp::server::debian inherits dhcp::server::base {
-
-  Concat::Fragment['00.dhcp.server.base'] {
-    content => template('dhcp/dhcpd.conf.debian.erb'),
-  }
-
-  Service['dhcpd'] {
-    pattern => $::lsbdistcodename ? {
-      squeeze => '/usr/sbin/dhcpd',
-      lenny   => '/usr/sbin/dhcpd3',
-    }
-  }
-
-}
diff --git a/manifests/server/packages.pp b/manifests/server/packages.pp
new file mode 100644 (file)
index 0000000..34751e8
--- /dev/null
@@ -0,0 +1,8 @@
+class dhcp::server::packages {
+  include ::dhcp::params
+
+  package {'dhcp-server':
+    ensure => present,
+    name   => $dhcp::params::srv_dhcpd,
+  }
+}
diff --git a/manifests/server/service.pp b/manifests/server/service.pp
new file mode 100644 (file)
index 0000000..d531a7d
--- /dev/null
@@ -0,0 +1,10 @@
+class dhcp::server::service {
+  include ::dhcp::params
+
+  service {'dhcpd':
+    ensure  => running,
+    name    => $dhcp::params::srv_dhcpd,
+    enable  => true,
+    pattern => $dhcp::params::service_pattern,
+  }
+}