From d2852466f2961f9af46057f9410b5d96457337f8 Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 20 May 2013 21:56:53 +0200 Subject: add a simple dashboard setup --- manifests/master/dashboard.pp | 47 +++++++++++++++ templates/master/dashboard/database.yml.erb | 8 +++ templates/master/dashboard/settings.yml.erb | 90 +++++++++++++++++++++++++++++ 3 files changed, 145 insertions(+) create mode 100644 manifests/master/dashboard.pp create mode 100644 templates/master/dashboard/database.yml.erb create mode 100644 templates/master/dashboard/settings.yml.erb diff --git a/manifests/master/dashboard.pp b/manifests/master/dashboard.pp new file mode 100644 index 0000000..16d796e --- /dev/null +++ b/manifests/master/dashboard.pp @@ -0,0 +1,47 @@ +class puppet::master::dashboard( + $settings = {}, + $service = true, + $mysql_password, +) { + + package{'puppet-dashboard': + ensure => installed, + } -> mysql::default_database{ + 'dashboard': + password => $mysql_password; + } -> file{ + '/usr/share/puppet-dashboard/config/database.yaml': + content => template('puppet/master/dashboard/database.yaml.erb'), + owner => 'puppet-dashboard', + group => 'puppet-dashboard', + mode => '0640'; + '/usr/share/puppet-dashboard/config/settings.yaml': + content => template('puppet/master/dashboard/settings.yaml.erb'), + owner => 'puppet-dashboard', + group => 'puppet-dashboard', + mode => '0640'; + } ~> exec{ + 'rake RAILS_ENV=production db:migrate': + cwd => '/usr/share/puppet-dashboard', + user => 'puppet-dashboard', + refreshonly => true; + } -> service{ + 'puppet-dashboard-workers': + ensure => running, + enable => true; + } + + service{'puppet-dashboard': } + if $service { + Service['puppet-dashboard']{ + ensure => running, + enable => true, + subscribe => File['/usr/share/puppet-dashboard/config/database.yaml','/usr/share/puppet-dashboard/config/settings.yaml'], + } + } else { + Service['puppet-dashboard']{ + ensure => stopped, + enable => false, + } + } +} diff --git a/templates/master/dashboard/database.yml.erb b/templates/master/dashboard/database.yml.erb new file mode 100644 index 0000000..df7a376 --- /dev/null +++ b/templates/master/dashboard/database.yml.erb @@ -0,0 +1,8 @@ +production: + adapter: mysql + database: 'dashboard', + host: 'localhost' + username: 'dashboard' + password: '<%= mysql_password %>' + encoding: utf8 + diff --git a/templates/master/dashboard/settings.yml.erb b/templates/master/dashboard/settings.yml.erb new file mode 100644 index 0000000..24f82a2 --- /dev/null +++ b/templates/master/dashboard/settings.yml.erb @@ -0,0 +1,90 @@ +#===[ Settings ]========================================================= +# +# This file is meant for storing setting information that is never +# published or committed to a revision control system. +# +# Do not modify this "config/settings.yml.example" file directly -- you +# should copy it to "config/settings.yml" and customize it there. +# +#---[ Values ]---------------------------------------------------------- + +# Node name to use when contacting the puppet master. This is the +# CN that is used in Dashboard's certificate. +cn_name: 'dashboard' + +ca_crl_path: 'certs/dashboard.ca_crl.pem' + +ca_certificate_path: 'certs/dashboard.ca_cert.pem' + +certificate_path: 'certs/dashboard.cert.pem' + +private_key_path: 'certs/dashboard.private_key.pem' + +public_key_path: 'certs/dashboard.public_key.pem' + +# Hostname of the certificate authority. +ca_server: 'puppet' + +# Port for the certificate authority. +ca_port: 8140 + +# Key length for SSL certificates +key_length: 1024 + +# The "inventory service" allows you to connect to a puppet master to retrieve and node facts +enable_inventory_service: false + +# Hostname of the inventory server. +inventory_server: 'puppet' + +# Port for the inventory server. +inventory_port: 8140 + +# Set this to true to allow Dashboard to display diffs on files that +# are archived in the file bucket. +use_file_bucket_diffs: false + +# Hostname of the file bucket server. +file_bucket_server: 'puppet' + +# Port for the file bucket server. +file_bucket_port: 8140 + +# Amount of time in seconds since last report before a node is considered no longer reporting +no_longer_reporting_cutoff: 3600 + +# How many days of history to display on the "Daily Run Status" graph +daily_run_history_length: 30 + +use_external_node_classification: true + +# Uncomment the following line to set a local time zone. Run +# "rake time:zones:local" for the name of your local time zone. +#time_zone: 'Pacific Time (US & Canada)' + +# Look at http://ruby-doc.org/core/classes/Time.html#M000298 for the strftime formatting +datetime_format: '%Y-%m-%d %H:%M %Z' +date_format: '%A, %B %e, %Y' + +# Set this to the URL of an image. The image will be scaled to the specified dimensions. +custom_logo_url: '/images/dashboard_logo.png' +custom_logo_width: 155px +custom_logo_height: 23px +custom_logo_alt_text: 'Puppet Dashboard' + +# We will be deprecating using "http://dashboard_servername/reports" as the puppet master's reporturl. +# Set this to 'true' once you have changed all your puppet masters to send reports to +# "http://dashboard_servername/reports/upload" +disable_legacy_report_upload_url: false + +# Disables the UI and controller actions for editing nodes, classes, groups and reports. Report submission is still allowed +enable_read_only_mode: <%= settings['enable_read_only_mode'] || false %> + +# Default number of items of each kind to display per page +nodes_per_page: 20 +classes_per_page: 50 +groups_per_page: 50 +reports_per_page: 20 + +#===[ fin ]============================================================= + -- cgit v1.2.3