Configuración PuppetDB

Miguel Coa M. -

Asumiendo que tenemos instalado los repositorio de puppet y el puppetmaster corriendo, procederemos a instalar PuppetDB:

1. Instalamos puppetdb

[root@master ~]# puppet resource package puppetdb ensure=latest
Notice: /Package[puppetdb]/ensure: created
package { 'puppetdb':
ensure => '1.1.1-1.el6',
}

Dependiendo de la cantidad de nodos, hardware etc, se pueden realizar "tunning"  al entorno Java que figuran en acá (sección Java Heap Size) . 

PostgresSQL

2. Instalación de repositorio para luego instalar PostgresDB (que es donde almacenaremos la información)

rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm 
yum install postgresql93-server -y

3. Levantamos el servicio de base de datos y lo dejamos por defecto al arranque

service postgresql-9.3 initdb; service postgresql-9.3 start; chkconfig postgresql-9.3 on

4. Configuramos Postgres

[root@master ~]# vim /var/lib/pgsql/9.3/data/postgresql.conf

Y modificamos las siguiente variables quedando así:

listen_addresses = '*'
log_line_prefix = '%t %u %d'

5.  Creamos la instancia de base de datos y el usuario para acceder a ella

[root@master ~]# sudo -u postgres sh
[root@master ~]$ cd /var/lib/puppetdb
[root@master ~]$ createuser -DRSP puppetdb (ingresamos el passowrd -> puppetdb)
Enter password for new role: <colocamos el password>
[root@master ~]$ createdb -O puppetdb puppetdb

 6. Configuramos los accesos a la base de datos

[root@master ~]# vim /var/lib/pgsql/9.3/data/pg_hba.conf

 Cometamos la linea

###local all all peer

Y modificamos quedando así:

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

7. Reiniciamos los servicios postgres

[root@master ~]# service postgresql-9.3 restart
Stopping postgresql-9.2 service: [ OK ]
Starting postgresql-9.2 service: [ OK ]

8. Probamos el acceso

[root@master ~]# psql -h 127.0.0.1 puppetdb puppetdb
psql (9.2.4)
Type "help" for help.
puppetdb=>

PuppetDB


9. Configuramos la información de la base de datos creada anteriormente en el archivo  /etc/puppetdb/conf.d/database.ini donde tiene que quedar así

[root@master ~]# cat /etc/puppetdb/conf.d/database.ini| grep -v '^#'
[database]
classname = org.postgresql.Driver
subname = //localhost:5432/puppetdb
subprotocol = postgresql
username = puppetdb
password = puppetdb

 10. Iniciamos el servicio PuppetDB

sudo puppet resource service puppetdb ensure=running enable=true

11. Instalamos PuppetDB Terminus

sudo puppet resource package puppetdb-terminus ensure=latest

12. Configuramos el puerto de escucha para trabajar con PuppetDB editando el archivo /etc/puppet/puppetdb.conf , quedando así:

[root@master ~]# cat /etc/puppet/puppetdb.conf | grep -v '^#'

[main] server = master.example.com port = 8081

 13.  Ahora, le diremos a Puppet que trabajará con PuppetDB y Postgres como servidor de base de datos adicionando en la sección [main] las variables

storeconfigs, storeconfigs_backend, dbadapter . Quedando así:

[root@master ~]# cat /etc/puppet/puppet.conf | grep -v '^#' |grep -v ' # '
[main]
logdir = /var/log/puppet rundir = /var/run/puppet ssldir = $vardir/ssl server = master.example.com storeconfigs = true storeconfigs_backend = puppetdb dbadapter = postgresql
[agent] classfile = $vardir/classes.txt localconfig = $vardir/localconfig

 14. Creamos elarchivo /etc/puppet/routes.yaml con el siguiente contenido

---
master:
   facts:
      terminus: puppetdb
      cache: yaml

Este archivo es sensible a los espacios de tabulación por lo que si al reiniciar los servicios arroja error de sintaxis puede ser producto de lo mismo

Aug 26 12:22:39 master puppet-master[1960]: Could not configure routes from /etc/puppet/routes.yaml: syntax error on line 3, col 16: `          cache: yaml'

 15. Reiniciamos los servicios Puppet y PuppetDB

service puppetdb restart && service puppetmaster restart 

 

Comprobación de servicios

En el servidor Puppet tenemos que tener corriendo los puertos 8080 y 8081 (Referentes a las configuraciones de PuppetDB) y el 5432 (Referente a la configuración de Postgres)

[root@master ~]# netstat -tlpn | egrep '8080|8081|5432'
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 2708/postmaster
tcp 0 0 ::ffff:127.0.0.1:8080 :::* LISTEN 2786/java
tcp 0 0 ::ffff:10.0.0.138:8081 :::* LISTEN 2786/java
tcp 0 0 :::5432 :::* LISTEN 2708/postmaster
[root@master ~]#

Y cuando conectemos un nodo, se creará toda la estructura de la base de datos 

[root@master ~]# !psql
psql -h 127.0.0.1 puppetdb puppetdb
psql (9.2.4)
Type "help" for help.
puppetdb=> \d
List of relations
Schema | Name | Type | Owner
--------+-------------------------+-------+----------
public | catalog_resources | table | puppetdb
public | catalogs | table | puppetdb
public | certname_catalogs | table | puppetdb
public | certname_facts | table | puppetdb
public | certname_facts_metadata | table | puppetdb
public | certnames | table | puppetdb
public | edges | table | puppetdb
public | reports | table | puppetdb
public | resource_events | table | puppetdb
public | resource_params | table | puppetdb
public | schema_migrations | table | puppetdb
(11 rows)

Y podemos hacer alguna query de lo que tenemos almacenado:

puppetdb=> select * from certname_facts where name = 'operatingsystem';
certname | name | value
-------------------+-----------------+--------
node2.example.com | operatingsystem | CentOS
(1 row)

PuppetDB  va dejando la información del facter de la conexión de los nodos en el siguiente log /var/lib/puppetdb/db/db.log 

 

Referencias: 

http://docs.puppetlabs.com/puppetdb/latest/connect_puppet_master.html  Y otras URL que no me recuerdo. 

 

 

 

0 Comentarios

Inicie sesión para dejar un comentario.
Tecnología de Zendesk