diff --git a/manifests/init.pp b/manifests/init.pp index 25ac2f9..4b87419 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -56,6 +56,7 @@ class dashboard ( $dashboard_charset = $dashboard::params::dashboard_charset, $dashboard_site = $dashboard::params::dashboard_site, $dashboard_port = $dashboard::params::dashboard_port, + $dashboard_config = $dashboard::params::dashboard_config, $mysql_root_pw = $dashboard::params::mysql_root_pw, $passenger = $dashboard::params::passenger, $mysql_package_provider = $dashboard::params::mysql_package_provider, @@ -76,7 +77,7 @@ class dashboard ( -> Class['mysql::ruby'] -> Class['mysql::server'] -> Package[$dashboard_package] - -> Mysql::DB["${dashboard_db}"] + -> Mysql::DB[$dashboard_db] -> File["${dashboard::params::dashboard_root}/config/database.yml"] -> Exec['db-migrate'] -> Class['dashboard::passenger'] @@ -91,34 +92,20 @@ class dashboard ( -> Class['mysql::ruby'] -> Class['mysql::server'] -> Package[$dashboard_package] - -> Mysql::DB["${dashboard_db}"] + -> Mysql::DB[$dashboard_db] -> File["${dashboard::params::dashboard_root}/config/database.yml"] -> Exec['db-migrate'] -> Service[$dashboard_service] - case $operatingsystem { - 'centos','redhat','oel': { - file { '/etc/sysconfig/puppet-dashboard': - ensure => present, - content => template('dashboard/puppet-dashboard-sysconfig'), - owner => '0', - group => '0', - mode => '0644', - require => [ Package[$dashboard_package], User[$dashboard_user] ], - before => Service[$dashboard_service], - } - } - 'debian','ubuntu': { - file { '/etc/default/puppet-dashboard': - ensure => present, - content => template('dashboard/puppet-dashboard.default.erb'), - owner => '0', - group => '0', - mode => '0644', - require => [ Package[$dashboard_package], User[$dashboard_user] ], - before => Service[$dashboard_service], - } - } + file { 'dashboard_config': + ensure => present, + path => $dashboard_config, + content => template("dashboard/config.${::osfamily}.erb"), + owner => '0', + group => '0', + mode => '0644', + require => [ Package[$dashboard_package], User[$dashboard_user] ], + before => Service[$dashboard_service], } service { $dashboard_service: @@ -171,22 +158,22 @@ class dashboard ( } exec { 'db-migrate': - command => "rake RAILS_ENV=production db:migrate", - cwd => "${dashboard::params::dashboard_root}", - path => "/usr/bin/:/usr/local/bin/", + command => 'rake RAILS_ENV=production db:migrate', + cwd => $dashboard::params::dashboard_root, + path => '/usr/bin/:/usr/local/bin/', creates => "/var/lib/mysql/${dashboard_db}/nodes.frm", } - mysql::db { "${dashboard_db}": + mysql::db { $dashboard_db: user => $dashboard_user, password => $dashboard_password, charset => $dashboard_charset, } user { $dashboard_user: - comment => 'Puppet Dashboard', - gid => "${dashboard_group}", ensure => 'present', + comment => 'Puppet Dashboard', + gid => $dashboard_group, shell => '/sbin/nologin', managehome => true, home => "/home/${dashboard_user}", diff --git a/manifests/params.pp b/manifests/params.pp index 7527629..5095676 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -13,33 +13,41 @@ class dashboard::params { $dashboard_ensure = 'present' - $dashboard_user = "puppet-dashboard" - $dashboard_group = "puppet-dashboard" - $dashboard_password = "changeme" + $dashboard_user = 'puppet-dashboard' + $dashboard_group = 'puppet-dashboard' + $dashboard_password = 'changeme' $dashboard_db = 'dashboard_production' $dashboard_charset = 'utf8' $dashboard_environment = 'production' - $dashboard_site = "${fqdn}" + $dashboard_site = $::fqdn $dashboard_port = '8080' $passenger = false $mysql_root_pw = 'changemetoo' $rails_base_uri = '/' - case $operatingsystem { - 'centos', 'redhat', 'fedora': { + case $::osfamily { + + 'RedHat': { + $dashboard_config = '/etc/sysconfig/puppet-dashboard' $dashboard_service = 'puppet-dashboard' $dashboard_package = 'puppet-dashboard' $dashboard_root = '/usr/share/puppet-dashboard' $mysql_package_provider = 'yum' $ruby_mysql_package = 'ruby-mysql' } - 'ubuntu', 'debian': { + + 'Debian': { + $dashboard_config = '/etc/default/puppet-dashboard' $dashboard_service = 'puppet-dashboard' $dashboard_package = 'puppet-dashboard' $dashboard_root = '/usr/share/puppet-dashboard' $mysql_package_provider = 'aptitude' $ruby_mysql_package = 'libmysql-ruby1.8' } - } + + default: { + fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, module ${module_name} only support osfamily RedHat and Debian") + } + } } diff --git a/manifests/passenger.pp b/manifests/passenger.pp index 2651ff3..9dee4b5 100644 --- a/manifests/passenger.pp +++ b/manifests/passenger.pp @@ -14,31 +14,24 @@ # class dashboard::passenger ( $dashboard_site, - $dashboard_port + $dashboard_port, + $dashboard_config = $dashboard::params::dashboard_config ) inherits dashboard { Class ['::passenger'] -> Apache::Vhost[$dashboard_site] class { '::passenger': - port => $dashboard_port, - } + port => $dashboard_port, + } file { '/etc/init.d/puppet-dashboard': ensure => absent, } - case $operatingsystem { - 'centos','redhat','oel': { - file { '/etc/sysconfig/puppet-dashboard': - ensure => absent, - } - } - 'debian','ubuntu': { - file { '/etc/default/puppet-dashboard': - ensure => absent, - } - } + file { 'dashboard_config': + ensure => absent, + path => $dashboard_config, } apache::vhost { $dashboard_site: @@ -48,4 +41,4 @@ class dashboard::passenger ( template => 'dashboard/puppet-dashboard-passenger-vhost.erb', } -} \ No newline at end of file +} diff --git a/templates/puppet-dashboard.default.erb b/templates/config.Debian.erb similarity index 100% rename from templates/puppet-dashboard.default.erb rename to templates/config.Debian.erb diff --git a/templates/puppet-dashboard-sysconfig b/templates/config.RedHat.erb similarity index 100% rename from templates/puppet-dashboard-sysconfig rename to templates/config.RedHat.erb diff --git a/tests/init.pp b/tests/init.pp index 7b439ad..cc6b565 100644 --- a/tests/init.pp +++ b/tests/init.pp @@ -1,19 +1,19 @@ node default { - class {'dashboard': - dashboard_ensure => 'present', - dashboard_user => 'puppet-dbuser', - dashboard_group => 'puppet-dbgroup', - dashboard_password => 'changeme', - dashboard_db => 'dashboard_prod', - dashboard_charset => 'utf8', - dashboard_site => $fqdn, - dashboard_port => '8080', - mysql_root_pw => 'changemetoo', - passenger => true, - mysql_package_provider => 'yum', - ruby_mysql_package => 'ruby-mysql', - } + class { 'dashboard': + dashboard_ensure => 'present', + dashboard_user => 'puppet-dbuser', + dashboard_group => 'puppet-dbgroup', + dashboard_password => 'changeme', + dashboard_db => 'dashboard_prod', + dashboard_charset => 'utf8', + dashboard_site => $fqdn, + dashboard_port => '8080', + mysql_root_pw => 'changemetoo', + passenger => true, + mysql_package_provider => 'yum', + ruby_mysql_package => 'ruby-mysql', + } }