Installazione di Puppet Dashboard in Debian dai repository ufficiali Puppetlabs

From RVM Wiki
Jump to navigation Jump to search

Installazione con modulo puppetlabs

  • NON FUNZIONA, perchè il modulo sulal forge non è aggiornato con github
  • Questa procedura funziona solo se si installa la Dashboard sul puppet master, dove è anche residente mysql.
  • Installare il modulo:
puppet module install puppetlabs-dashboard
  • Dichiare nell'host pupept master
           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,
           }

Preparazione database

  • Predisporre un database Mysql (decidere se locale o remoto: in quest'ultimo caso sostituire localhost con %):
sudo mysql --defaults-file=/etc/mysql/debian.cnf -Bse 'CREATE DATABASE dashboard_production CHARACTER SET utf8;'
sudo mysql --defaults-file=/etc/mysql/debian.cnf -Bse 'CREATE DATABASE dashboard_development CHARACTER SET utf8;'
sudo mysql --defaults-file=/etc/mysql/debian.cnf -Bse 'CREATE DATABASE dashboard_test CHARACTER SET utf8;'
sudo mysql --defaults-file=/etc/mysql/debian.cnf -Bse "CREATE USER 'dashboard'@'localhost' IDENTIFIED BY 'verysecretpassword';"
sudo mysql --defaults-file=/etc/mysql/debian.cnf -Bse "GRANT ALL PRIVILEGES ON dashboard_production.* TO 'dashboard'@'localhost';"
sudo mysql --defaults-file=/etc/mysql/debian.cnf -Bse "GRANT ALL PRIVILEGES ON dashboard_test.* TO 'dashboard'@'localhost';"
sudo mysql --defaults-file=/etc/mysql/debian.cnf -Bse "GRANT ALL PRIVILEGES ON dashboard_development.* TO 'dashboard'@'localhost';"
  • Assicurarsi che il parametro seguente sia impostato almeno a 32M
sudo puppet resource file_line my.cnf path='/etc/mysql/my.cnf' match='max_allowed_packet.*=.*' line='max_allowed_packet = 32M' multiple=true
sudoedit /etc/mysql/my.cnf
#...
max_allowed_packet = 32M
#...
  • Riavviare mysql:
sudo invoke-rc.d mysql restart

Installazione Dashboard

  • Configurare i repository puppetlabs
  • Installare il pacchetto
sudo apt-get update
sudo apt-get install puppet-dashboard
  • Elencare il nome della propria Timezone:
cd /usr/share/puppet-dashboard/
sudo rake time:zones:local
  • UTC +01:00 *

Amsterdam Belgrade Berlin Bern Bratislava Brussels Budapest Copenhagen Ljubljana Madrid Paris Prague Rome Sarajevo Skopje Stockholm Vienna Warsaw West Central Africa Zagreb

  • Impostare la timezone corretta:
sudoedit /etc/puppet-dashboard/settings.yml
time_zone: 'Rome'
  • Modificare il file di configurazione per la connessione al Database:
sudo puppet resource file_line dashboard-database-yaml path='/etc/puppet-dashboard/database.yml' match='  password:' line='  password: verysecretpassword' multiple=true
sudoedit /etc/puppet-dashboard/database.yml
# ...
production:
  host: mysql.example.priv
  database: dashboard_production
  username: dashboard
  password: verysecretpassword
  encoding: utf8
  adapter: mysql

development:
  host: mysql.example.priv
  database: dashboard_development
  username: dashboard
  password: verysecretpassword
  encoding: utf8
  adapter: mysql

test:
  host: mysql.example.priv
  database: dashboard_test
  username: dashboard
  password: verysecretpassword
  encoding: utf8
  adapter: mysql
  • Creare il database:
cd /usr/share/puppet-dashboard/ && \
sudo rake RAILS_ENV=production db:migrate
  • Impostare le permission per la scrittura dei LOG, che andranno in /usr/share/puppet-dashboard/log/
sudo chown www-data.www-data /usr/share/puppet-dashboard/log/*
  • Impostare la timezone corretta:
sudoedit /etc/puppet-dashboard/settings.yml
time_zone: 'Rome'

  • Testare se il server Webrick funziona:
sudo -u www-data ./script/server -e production
  • Se tutto funziona, stoppare:
CTRL-C

Attivazione di Passenger

  • Copiare i file skeleton:
sudo cp /usr/share/puppet-dashboard/ext/passenger/dashboard-vhost.conf /etc/apache2/sites-available/puppet-dashboard
  • Abilitare il virtualhost:
sudo a2ensite puppet-dashboard
  • Editare il file
sudoedit /etc/apache2/sites-available/puppet-dashboard
#LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.11
PassengerRuby /usr/bin/ruby1.8

# you may want to tune these settings
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
# PassengerMaxRequests 1000
PassengerStatThrottleRate 120
RailsAutoDetect On

<VirtualHost *:80>
        SetEnv RAILS_ENV production
        RailsBaseURI /
        # UPDATE SERVERNAME
        ServerName puppet.example.priv
        DocumentRoot /usr/share/puppet-dashboard/public/
        <Directory /usr/share/puppet-dashboard/public/>
                Options None
				AllowOverride AuthConfig
                Order allow,deny
                allow from all
        </Directory>
  ErrorLog /var/log/apache2/puppet-dashboard_error.log
  LogLevel warn
  CustomLog /var/log/apache2/puppet_dashboard_access.log combined
  ServerSignature On

# ....
  • Restartare apache
sudo service apache2 restart


Attivazione job di manutenzione

  • Creare lo script di logrotate per il log contenuti nella usr:
sudoedit /etc/logrotate.d/puppet-dashboard.conf
/usr/share/puppet-dashboard/log/*.log {
  compress
  copytruncate # this requires no restart of the process to let go of the file
  daily
  missingok
  rotate 6
}
  • Creare lo script di purge dei vecchi reports in /var:
sudoedit /usr/local/sbin/puppet-reports-cleanup
#!/bin/bash
DAYS=5

cd /usr/share/puppet-dashboard
env RAILS_ENV=production rake reports:prune upto=$DAYS unit=day

for i in $(find /var/lib/puppet/reports -type f -mtime +$DAYS) ; do rm -vf $i; done

cd /usr/share/puppet-dashboard
env RAILS_ENV=production rake reports:prune:orphaned

Configurazione dei puppet agent

  • Sui client, inserire le seguenti direttive:
sudoedit /etc/puppet/puppet.conf
[agent]
 report = true
  • Lanciare un run a mano
sudo puppet agent --test

Configurazione del puppet master

  • Ora istruire il puppet master per inviare i report alla dashboard:
 sudoedit /etc/puppet/puppet.conf
[master]
 reports = store, http
 reporturl = http://puppet.example.priv/reports/upload
  • Restartare apache (se si usa passenger)
sudo invoke-rc.d apache2 restart
  • Verificare che dopo aver lanciato dei run manuali dai client, ci siano dei Background task nella barra in alto a sinistra

Attivazione dei Worker

  • Una volta ricevuti i report, la Dashboard li deve elaborare. Questo viene fatto dai Worker, che devono essere lanciati in un numero uguale ai core
  • Configurarli (in numero uguale ai core):
sudoedit /etc/default/puppet-dashboard-workers
START=yes
NUM_DELAYED_JOB_WORKERS=1
  • Avviarli:
sudo invoke-rc.d puppet-dashboard-workers restart
  • Ora si dovrebbero vedere i report corretti

Manutenzione

  • Creazione cronjob:
sudoedit /etc/cron.d/puppet-reports-cleanup
# cleanup old reports at 06:00
0 6     * * *   root    /usr/local/sbin/puppet-reports-cleanup > /dev/null 2>&1
  • Creare lo script
sudoedit /usr/local/sbin/puppet-reports-cleanup
#!/bin/bash
DAYS=5

cd /usr/share/puppet-dashboard
env RAILS_ENV=production rake reports:prune upto=$DAYS unit=day

for i in $(find /var/lib/puppet/reports -type f -mtime +$DAYS) ; do rm -vf $i; done

cd /usr/share/puppet-dashboard
env RAILS_ENV=production rake reports:prune:orphaned
  • Renderlo eseguibile:
sudo chmod +x /usr/local/sbin/puppet-reports-cleanup

Riferimenti