objetivo

Descrever a instalação do serviço puppetmaster em centos 6.2

Este servidor deve atender o agentes em centos 5.x e 6.x

sobre o puppet

O Puppet é uma ferramenta que nos permite fazer o gerenciamento das configurações dos sistemas e serviços de um parque UNIX/LINUX.

premissas

Partiremos do premissa de que você tem uma instalação limpa do CENTOS 6.2 64 bits e um servidor puppetmaster rodando.

requisitos

repositorios

puppetlabs

instalando repo

yum install http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-1.noarch.rpm

atualize os índices de pacotes

yum update

veja a versão do pacote puppet-server

[root@galaxy yum.repos.d]# yum info puppet

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
Name        : puppet
Arch        : noarch
Version     : 2.7.13
Release     : 1.el6
Size        : 3.0 M
Repo        : installed
From repo   : puppetlabs
Summary     : A network tool for managing many disparate systems
URL         : http://puppetlabs.com
License     : ASL 2.0
Description : Puppet lets you centrally manage every important aspect of your system using a
          : cross-platform specification language that manages all the separate elements
          : normally aggregated in different files, like users, cron jobs, and hosts,
          : along with obviously discrete elements like packages, services, and files.

stealthymonkeys

instalando repo

yum install http://passenger.stealthymonkeys.com/rhel/6/passenger-release.noarch.rpm

atualize os índices de pacotes

yum update

veja a versão do pacote modpassenger
yum info mod
passenger.x8664 <code> Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirror.ueg.br * epel: mirror.umd.edu * extras: mirror.ueg.br * passenger: mirror.hmdc.harvard.edu * updates: mirror.ueg.br Available Packages Name : modpassenger Arch : x8664 Epoch : 1 Version : 3.0.12 Release : 1.el6 Size : 1.3 M Repo : passenger Summary : Apache Module for Phusion Passenger URL : http://www.modrails.com/ License : Modified BSD Description : Phusion Passenger™ — a.k.a. modrails or mod_rack — makes deployment

          : of Ruby web applications, such as those built on the revolutionary
          : Ruby on Rails web framework, a breeze. It follows the usual Ruby on
          : Rails conventions, such as “Don’t-Repeat-Yourself”.
          : 
          : This package contains the pluggable Apache server module for Passenger.

</code>

pacotes

httpd

yum install httpd

passenger

instalando mod_passenger

yum install mod_passenger

puppet

yum install puppet

instalando puppet-dashboard

você só vai precisar copiar o arquivo ca_crl.pem do servidor puppetmaster para as configurações do apache ssl nesta segunda máquina.

inicie o httpd

service httpd start

ative o httpd na inicialização

chkconfig httpd on

instale o dashboard

yum install puppet-dashboard.noarch

mysql server

instalando mysql server

instale o mysql server

yum install mysql mysql-devel mysql-server

configurando mysql server

ative o serviço do mysql na inicialização

chkconfig mysql on

inicie o mysql server

service mysqld start

acesse o console do mysql

mysql

criando base e setando perms

crie a base de dados

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

defina privilégios de acesso

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

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

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

de um flush no cache de privilégios

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit

tuning

ajuste parâmetros do mysql server conf

vim /etc/mysql/my.cnf
# Allowing 32MB allows an occasional 17MB row with plenty of spare room
max_allowed_packet = 32M

reinicie o mysql server

service mysqld restart

configurando dashboard

configurando settings.yml

acesse o diretório

cd /usr/share/puppet-dashboard/config

copie o arquivo

cp settings.yml.example settings.yml

edite o arquivo

vim settings.yml

ajuste a linha colocando o host do servidor puppet

a_server: 'puppet.dominio.local'

configurando database.yml

agora vamos editar o arquivo database.yml

vim database.yml

conteúdo

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

development:
  database: dashboard_development
  username: dashboard
  password:
  encoding: utf8
  adapter: mysql

test:
  database: dashboard_test
  username: dashboard
  password:
  encoding: utf8
  adapter: mysql

agora acesse o diretório

 /usr/share/puppet-dashboard

populando banco

rake RAILS_ENV=production db:migrate

==  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) ====================================

configurando vhost no apache

agora crie um arquivo com o conteúdo abaixo

/etc/httpd/conf.d/dashboard.conf
# you may want to tune these settings
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
PassengerMaxRequests 1000
PassengerStatThrottleRate 120
RailsAutoDetect On
 
<VirtualHost *:80>
        ServerName dashboard.dominio.local # UPDATE THIS TO YOUR FQDN
        DocumentRoot /usr/share/puppet-dashboard/public/
        <Directory /usr/share/puppet-dashboard/public/>
                Options None
                Order allow,deny
                allow from all
        </Directory>
  ErrorLog /var/log/httpd/dashboard.dominio.local_error.log
  LogLevel warn
  CustomLog /var/log/httpd/dashboard.dominio.local_access.log combined
  ServerSignature On
 
</VirtualHost>

Crie o diretório para os logs e especifique suas permissões

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

habilitando inventário dos nós

edite o arquivo settings.yml

vim /usr/share/puppet-dashboard/config/settings.yml

altere o valor de false para true na linha abaixo

enable_inventory_service: true

gerando certificados

se está máquina já era gerenciada pelo puppet, provavelmente ela já tem um certificado válido em /var/lib/puppet/ssl o qual já foi inclusive aceito pelo servidor puppet, portanto, para aproveitar isto vamos ajustar o arquivo /usr/share/puppet-dashboard/config/settings.yml, neste arquivo vamos encontrar o nome 'dashboard' , altere para o nome já registrado no puppet

cn_name: 'dashboard'

ficou assim

cn_name: 'dashboard.dominio.local'

agora vamos gerar os certificados necessários para o dashboard (isso aqui está confuso).

[root@dashboard puppet-dashboard]# cd /usr/share/puppet-dashboard/
[root@dashboard puppet-dashboard]# rake cert:create_key_pair RAILS_ENV=production
[root@dashboard puppet-dashboard]# rake cert:request RAILS_ENV=production

feito isto, pare os processo dashboard

service puppet-dashboard stop
service puppet-dashboard-worker stop

desative os processos dashboard

chkconfig puppet-dashboard off
chkconfig puppet-dashboard-worker off 

reinicie o httpd

service httpd restart

e acesse o endereço http://dashboard.dominio.local

instalando dependências no puppet server

se você instalou o puppetmaster passenger seguindo meu tutorial de build via gem, faça a instalação das dependências abaixo (no puppetmaster), do contrário a comunicação entre ele e o dashboard não vai funcionar

mysql-devel

instalar o mysql-devel para build de uma gem

yum install mysql-devel

activerecord

agora precisamos instalar a gem activerecord 3.0.11, a versão mais atual é a 3.2.3, mas por algum motivo no centos5 dá um problema ao rodar o puppet

err: Could not retrieve catalog from remote server: Error 400 on SERVER: stack level too deep

portando vamos instalar uma versão que funciona com os agentes tanto no centos5 quanto no centos6

gem install activerecord -v 3.0.11

gem-mysql

depois disto instale a gem mysql

gem install mysql -- --with-mysql-conf=/usr/bin/mysql --with-mysql-lib=/usr/lib/mysql

reinicie httpd

pronto dependências instaladas, reinicie o httpd do servidor puppet

service httpd restart

configurando puppet client

Nos arquivos de configuração do agent, adicione:

  # puppet.conf (on each agent)
  [agent]
    report = true

reinicie

service puppet restart

configurando puppet master

configuracoes

No arquivo de configuração do master, adicione:

[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

[master]
reports = store, http
storeconfigs = true
dbadapter = mysql
dbname = puppetdashboard
dbuser = puppetadmin
dbpassword = 4linuxpuppet
dbserver = ip-do-dashboard
dbconnections=10
autosign=false
reporturl = http://dashboard.dominio.local/reports/upload
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

reinicie o httpd

service httpd restart

init do dashboard

desabilite o dashboard (pois estamos usando o apache2 e passenger)

chkconfig puppet-dashboard

pronto

acessando dashboard

Acesse seu puppetdashboard http://dashboard.dominio.local/ 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.

Caso prefira, use o daemon puppet-dashboard-workers, basta habilitá-lo e iniciá-lo.

referências



puppet_instalando_puppet_dashboard_remoto_em_centos.txt · Last modified: 2012/06/13 19:53 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