Installazione di Puppet Dashboard in Debian dai repository ufficiali Puppetlabs
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
- Loggarsi su http://myserver.example.priv:3000
- 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
- Provare a loggarsi direttamente su http://puppet.example.priv
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
- Vedere i task consigliati: Dashboard Manual: Maintaining — Documentation — Puppet Labs
- 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