objetivo

abordar a instalação do puppet-dashboard em máquina separada do puppetmaster.

premissas

ter uma máquina com puppetmaster instalado e rodando

ambiente

Duas VMs debian squeeze rodando em virtualbox no OSX

puppet, 192.168.56.101
puppetagent, 192.168.56.102

procedimentos

repositórios

tenha os seguintes repositórios habilitados em seu sources.list

deb http://ftp.debian.org/debian squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main
deb http://apt.puppetlabs.com/debian squeeze main
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free

puxe a chave do repo do puppetlabs e instale

gpg --recv-key 4BD6EC30
gpg -a --export 4BD6EC30 | sudo apt-key add -

atualize os índices

aptitude update

instalando

dashboard parte 1

aptitude install apache2 libapache2-mod-passenger puppet-dashboard

mysql-server

instale o mysql server

aptitude install mysql-server

acesse o banco

root@puppetdashboard:/usr/share/doc/puppet-dashboard# mysql -u root -p

crie o banco para o dashboard

mysql> create database puppetdashboard;
Query OK, 1 row affected (0.00 sec)

defina os privilegios e usuário

mysql> grant all privileges on puppetdashboard.* to puppetadmin@localhost identified by 'senha';
Query OK, 0 rows affected (0.00 sec)

saia do banco

mysql> quit
Bye

dashboard parte 2

edite o arquivo database.yaml em /etc/puppet-dashboard e altere os dados de production

production:
database: puppetdashboard
username: puppetadmin
password: senha
encoding: utf8
adapter: mysql

acesse o diretorio do dashboard

cd /usr/share/puppet-dashboard

popule o banco

rake RAILS_ENV=production db:migrate

veja a saída

==  BasicSchema: migrating ====================================================
-- create_table(:assignments, {:force=>true})
   -> 0.0077s
-- create_table(:nodes, {:force=>true})
   -> 0.0076s
-- create_table(:services, {:force=>true})
   -> 0.0077s
==  BasicSchema: migrated (0.0234s) ===========================================

==  CreateNodeGroupMemberships: migrating =====================================
-- create_table(:node_group_memberships)
   -> 0.0082s
==  CreateNodeGroupMemberships: migrated (0.0084s) ============================

...
...
...
...
...
...
...

==  AddReportForeignKeyConstraints: migrated (0.1235s) ========================

==  RemoveUrlFromNodes: migrating =============================================
-- remove_column(:nodes, :url)
   -> 0.0177s
==  RemoveUrlFromNodes: migrated (0.0179s) ====================================

bacana agora vamos para a parte do apache2

apache2

habilite o módulo passenger

a2enmod passenger

desabilite o vhost default

a2dissite 000-default

acesse o diretorio do apache

cd /etc/apache2/sites-available

crie o arquivo dashboard como conteúdo abaixo

/etc/apache2/sites-available/dashboard
# you may want to tune these settings
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
PassengerMaxRequests 1000
PassengerStatThrottleRate 120
RailsAutoDetect On
 
<VirtualHost *:80>
        ServerName  puppetdashboard.dominio
        DocumentRoot /usr/share/puppet-dashboard/public/
        <Directory /usr/share/puppet-dashboard/public/>
                Options None
                Order allow,deny
                allow from all
        </Directory>
  ErrorLog /var/log/apache2/dashboard-error.log
  CustomLog /var/log/apache2/dashboard-access.log combined
  LogLevel warn
  ServerSignature On
 
</VirtualHost>

ative o arquivo

a2ensite dashboard

reinicie o apache2

/etc/init.d/apache2 restart

dashboard parte 3

desabilite o daemon dashboard visto que vamos usar o apache2 para sustentar o serviço

update-rc.d -f puppet-dashboard remove

desligue os daemons

/etc/init.d/puppet-dashboard stop

configurando

puppet agent

adicione o parâmetro abaixo ao puppet.conf na seção main

report=true

veja o exemplo abaixo

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
report=true

puppetmaster

instale as dependencias necessárias para funcionando do dashboard

aptitude install libactiverecord-ruby libmysql-ruby

agora ajuste a conf do puppet adicionando os seguintes parâmetros

reports = store, http
reporturl = http://dashboard.dominio/reports/upload

e vamos adicionar também os parâmetros abaixo visto que o dashboard roda em uma máquina remota

dbadapter = mysql
dbname = puppetdashboard
dbuser = puppetadmin
dbpassword = 4linuxpuppet
dbserver = 10.196.8.94
dbconnections=10

esses dois aqui servem para nao assinar certificados automaticamente e armazenar as configurações dos nodes

storeconfigs = true
autosign=false

a configuração completa ficará assim

/etc/puppet/puppet.conf
[main]
report=true
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post
 
[master]
autosign=false
storeconfigs = true
dbadapter = mysql
dbname = puppetdashboard
dbuser = puppetadmin
dbpassword = senha
dbserver = 10.196.8.94
dbconnections=10
reports = store, http
reporturl = http://dashboard.dominio/reports/upload
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

reinicie o apache

/etc/init.d/apache2 restart

reiniei o puppet

/etc/init.d/puppet restart

mysql

edite o arquivo /etc/mysql/my.conf e altere a linha abaixo

bind-address            = 127.0.0.1

para

bind-address            = 0.0.0.0

reinicie o mysql

/etc/init.d/mysql restart

puppet-agent

reinicie o puppet agent nas máquinas para que o report=true passe a valer

service puppet restart

confira se o agent está habilitado

vim /etc/default/puppet

o parâmetro START deve estar com YES

START=yes

faça uma checagem

root@puppetagent:~# service puppet status
agent is running.

acessando dashboard

Acesse seu puppetdashboard http://dashboard.dominio/ e acompanhe as atualizações, rode manualmente em um node

puppet agent --test

Na tela do dashboard você deverá ver algo como 'pending tasks', isto significa que a informação está chegando e aguardando para ser processada, existe um script chamado delay_jobs que faz o processamento destas informações, caso queira rodar manualmente, use os comandos:

cd /usr/share/puppet-dashboard
env RAILS_ENV=production script/delayed_job -p dashboard -n 4 -m start

Com isso iniciamos o delayd_jobs com 4 processos, recomendo 1 para cada processador, bom, agora você já deverá ver informação sendo processada no Dashboard.

Pode rodar manualmente mas caso os processos morram, o dashboard para de atualizar, para resolver isto temos um daemon chamado puppet-dashboard-workers, ele foi instalado com o pacote puppet-dashboard, vamos reiniciá-lo

root@agent-debian:/etc/apache2/sites-available# /etc/init.d/puppet-dashboard-workers restart
Restarting Puppet Dashboard Workers:Not starting Puppet Dashboard Workers, disabled via /etc/default/puppet-dashboard-workers ... (warning).

bom o script disse que precisamos habilitar o daemon na inicializacao, basta editar o arquivo /etc/default/puppet-dashboard-workers, modifique a linha abaixo

###START=no

para

START=yes

ajuste o numero de processo de acordo com o numero de processadores

UM_DELAYED_JOB_WORKERS=1

após o ajuste, reinicie o dashboard-workers

 
root@agent-debian:/etc/apache2/sites-available# /etc/init.d/puppet-dashboard-workers restart
Restarting Puppet Dashboard Workers:Rails Error: Unable to access log file. Please ensure that /usr/share/puppet-dashboard/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.

opa está reclamando de falta de um arquivo de log, vamos criar e setar as permissões

touch /usr/share/puppet-dashboard/log/production.log
chmod 0666 /usr/share/puppet-dashboard/log/production.log

beleza vamos testar novamente

root@agent-debian:~# /etc/init.d/puppet-dashboard-workers stop
root@agent-debian:~# /etc/init.d/puppet-dashboard-workers start
Starting Puppet Dashboard Workers:Puppet Dashboard Worker (pid 2143) is running.
Puppet Dashboard Worker (pid 2142) is running.

tudo certo

referências



puppet_instalando_puppet_dashboard_remoto_em_debian.txt · Last modified: 2012/09/20 18:25 by gutocarvalho
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0