Initial Manifest and Template Commit
This is the initial state of the module that is tested under CentOS5 and Ruby 1.8.5.
This commit is contained in:
128
manifests/init.pp
Normal file
128
manifests/init.pp
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
# Class: puppet::dashboard
|
||||||
|
#
|
||||||
|
# This class installs and configures parameters for Puppet Dashboard
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# [*dashboard_ensure*] - The value of the ensure parameter for the
|
||||||
|
# puppet-dashboard package.
|
||||||
|
# [*dashboard_user*] - Name of the puppet-dashboard database user.
|
||||||
|
# [*dashbaord_password*] - Password for the puppet-dashboard database user.
|
||||||
|
# [*dashboard_db*] - The puppet-dashboard database name.
|
||||||
|
# [*dashboard_charset*] - Character set for the puppet-dashboard database.
|
||||||
|
#
|
||||||
|
# Actions:
|
||||||
|
# Install mysql, ruby-mysql, and mysql-server
|
||||||
|
# Install puppet-dashboard packages
|
||||||
|
# Write the database.yml
|
||||||
|
# Setup a puppet-dashboard database
|
||||||
|
# Start puppet-dashboard
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Requires:
|
||||||
|
# Class['mysql']
|
||||||
|
# Class['mysql::ruby']
|
||||||
|
# Class['mysql::server']
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Sample Usage:
|
||||||
|
# class {'dashboard':
|
||||||
|
# dashboard_ensure => 'present',
|
||||||
|
# dashboard_user => 'dashboard',
|
||||||
|
# dashboard_password => 'changeme',
|
||||||
|
# dashboard_db => 'dashboard_db',
|
||||||
|
# dashboard_charset => 'utf8',
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
class dashboard (
|
||||||
|
$dashboard_ensure = $dashboard::params::dashboard_ensure,
|
||||||
|
$dashboard_user = $dashboard::params::dashboard_user,
|
||||||
|
$dashboard_password = $dashboard::params::dashboard_password,
|
||||||
|
$dashboard_db = $dashboard::params::dashboard_db,
|
||||||
|
$dashboard_charset = $dashboard::params::dashboard_charset
|
||||||
|
|
||||||
|
) inherits dashboard::params {
|
||||||
|
|
||||||
|
$v_alphanum = '^[._0-9a-zA-Z:-]+$'
|
||||||
|
$v_bool = [ '^true$', '^false$' ]
|
||||||
|
validate_re($dashboard_ensure, $v_alphanum)
|
||||||
|
validate_re($dashboard_user, $v_alphanum)
|
||||||
|
validate_re($dashboard_password, $v_alphanum)
|
||||||
|
validate_re($dashboard_db, $v_alphanum)
|
||||||
|
validate_re($dashboard_charset, $v_alphanum)
|
||||||
|
|
||||||
|
$dashboard_ensure_real = $dashboard_ensure
|
||||||
|
$dashboard_user_real = $dashboard_user
|
||||||
|
$dashboard_password_real = $dashboard_password
|
||||||
|
$dashboard_db_real = $dashboard_db
|
||||||
|
$dashboard_charset_real = $dashboard_charset
|
||||||
|
|
||||||
|
class { 'mysql': }
|
||||||
|
class { 'mysql::server': root_password => "Ch@ngem3!" }
|
||||||
|
class { 'mysql::ruby': package_provider => 'yum' }
|
||||||
|
|
||||||
|
package { $dashboard_package:
|
||||||
|
ensure => $dashboard_version_real,
|
||||||
|
}
|
||||||
|
|
||||||
|
file { "${dashboard::params::dashboard_root}/config/database.yml":
|
||||||
|
ensure => present,
|
||||||
|
content => template('puppet/database.yml.erb'),
|
||||||
|
}
|
||||||
|
|
||||||
|
file { [ "${dashboard::params::dashboard_root}/public", "${dashboard::params::dashboard_root}/public/stylesheets", "${dashboard::params::dashboard_root}/public/javascript" ]:
|
||||||
|
ensure => directory,
|
||||||
|
mode => '0755',
|
||||||
|
owner => $dashboard_user,
|
||||||
|
group => $dashboard_group,
|
||||||
|
require => Package[$dashboard_package],
|
||||||
|
before => Service['puppet-dashboard'],
|
||||||
|
}
|
||||||
|
|
||||||
|
file { "${dashboard::params::dashboard_root}/log/production.log":
|
||||||
|
ensure => file,
|
||||||
|
mode => '0644',
|
||||||
|
owner => $dashboard_user,
|
||||||
|
group => $dashboard_group,
|
||||||
|
}
|
||||||
|
|
||||||
|
file { '/etc/logrotate.d/puppet-dashboard':
|
||||||
|
ensure => present,
|
||||||
|
content => template('puppet/puppet-dashboard.logrotate.erb'),
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
mode => '0644',
|
||||||
|
}
|
||||||
|
|
||||||
|
service { $dashboard_service:
|
||||||
|
ensure => running,
|
||||||
|
enable => true,
|
||||||
|
hasrestart => true,
|
||||||
|
subscribe => File["${dashboard::params::dashboard_root}/config/database.yml"],
|
||||||
|
}
|
||||||
|
|
||||||
|
exec { 'db-migrate':
|
||||||
|
command => "rake RAILS_ENV=production db:migrate",
|
||||||
|
cwd => "${dashboard::params::dashboard_root}",
|
||||||
|
logoutput => true,
|
||||||
|
path => "/usr/bin/:/usr/local/bin/",
|
||||||
|
creates => "/var/lib/mysql/${dashboard_db_real}/nodes.frm",
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql::db { "${dashboard_db_real}":
|
||||||
|
user => $dashboard_user,
|
||||||
|
password => $dashboard_password,
|
||||||
|
charset => $dashboard_charset,
|
||||||
|
}
|
||||||
|
|
||||||
|
Class['mysql']
|
||||||
|
-> Class['mysql::ruby']
|
||||||
|
-> Class['mysql::server']
|
||||||
|
-> Package[$dashboard_package]
|
||||||
|
-> File["${dashboard::params::dashboard_root}/config/database.yml"]
|
||||||
|
-> File["${dashboard::params::dashboard_root}/log/production.log"]
|
||||||
|
-> File['/etc/logrotate.d/puppet-dashboard']
|
||||||
|
-> Mysql::DB["${dashboard_db_real}"]
|
||||||
|
-> Exec['db-migrate']
|
||||||
|
-> Service[$dashboard_service]
|
||||||
|
}
|
||||||
|
|
||||||
53
manifests/params.pp
Normal file
53
manifests/params.pp
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Class: puppet::params
|
||||||
|
#
|
||||||
|
# This class installs and configures parameters for Puppet
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
#
|
||||||
|
# Actions:
|
||||||
|
#
|
||||||
|
# Requires:
|
||||||
|
#
|
||||||
|
# Sample Usage:
|
||||||
|
#
|
||||||
|
class dashboard::params {
|
||||||
|
|
||||||
|
$dashboard_ensure = 'present'
|
||||||
|
$dashboard_user = "puppet-dashboard"
|
||||||
|
$dashboard_group = "puppet-dashboard"
|
||||||
|
$dashboard_password = "changeme"
|
||||||
|
$dashboard_db = 'dashboard_production'
|
||||||
|
$dashboard_charset = 'utf8'
|
||||||
|
|
||||||
|
case $operatingsystem {
|
||||||
|
'centos', 'redhat', 'fedora': {
|
||||||
|
$dashboard_service = 'puppet-dashboard'
|
||||||
|
$dashboard_package = 'puppet-dashboard'
|
||||||
|
$dashboard_root = '/usr/share/puppet-dashboard'
|
||||||
|
$web_user = 'apache'
|
||||||
|
$web_group = 'apache'
|
||||||
|
}
|
||||||
|
'ubuntu', 'debian': {
|
||||||
|
$dashboard_service = 'puppet-dashboard'
|
||||||
|
$dashboard_package = 'puppet-dashboard'
|
||||||
|
$dashboard_root = '/usr/share/puppet-dashboard'
|
||||||
|
$web_user = 'www'
|
||||||
|
$web_group = 'www'
|
||||||
|
}
|
||||||
|
'freebsd': {
|
||||||
|
$dashboard_service = 'puppet-dashboard'
|
||||||
|
$dashboard_package = 'puppet-dashboard'
|
||||||
|
$dashboard_root = '/usr/share/puppet-dashboard'
|
||||||
|
$web_user = 'www'
|
||||||
|
$web_group = 'www'
|
||||||
|
}
|
||||||
|
'darwin': {
|
||||||
|
$dashboard_service = 'puppet-dashboard'
|
||||||
|
$dashboard_package = 'puppet-dashboard'
|
||||||
|
$dashboard_root = '/usr/share/puppet-dashboard'
|
||||||
|
$web_user = 'www'
|
||||||
|
$web_group = 'www'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
6
templates/database.yml.erb
Normal file
6
templates/database.yml.erb
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
production:
|
||||||
|
adapter: mysql
|
||||||
|
database: <%= dashboard_db %>
|
||||||
|
username: <%= dashboard_user %>
|
||||||
|
password: <%= dashboard_password %>
|
||||||
|
encoding: <%= dashboard_charset %>
|
||||||
10
templates/puppet-dashboard.logrotate.erb
Normal file
10
templates/puppet-dashboard.logrotate.erb
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Puppet-Dashboard logs:
|
||||||
|
<%= dashboard_config_path%>/log/production.log {
|
||||||
|
daily
|
||||||
|
missingok
|
||||||
|
rotate 7
|
||||||
|
compress
|
||||||
|
notifempty
|
||||||
|
copytruncate
|
||||||
|
}
|
||||||
|
|
||||||
12
tests/init.pp
Normal file
12
tests/init.pp
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
node default {
|
||||||
|
|
||||||
|
class {'dashboard':
|
||||||
|
dashboard_ensure => 'present',
|
||||||
|
dashboard_user => 'dashboard',
|
||||||
|
dashboard_password => 'changeme',
|
||||||
|
dashboard_db => 'dashboard_db',
|
||||||
|
dashboard_charset => 'utf8',
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user