Archivo

Archivo para junio, 2010

puppet5

Miércoles, 30 de junio de 2010

Puppet(V): Configuración de los clientes a gestionar (II)

En la entrada anterior empezamos a ver como definir nuestros clientes en Puppet. Una vez hecho, ahora nos toca definir los elementos que queremos gestionar.

1. Ficheros

El primer elemento que vamos a gestionar es un fichero. Mediante este elemento vamos a poder modificar el contenido de un fichero, sus permisos, su propietario,…

Para gestionar los ficheros usaremos el elemento file. Un ejemplo de la utilización de este elemento es la siguiente:

file { "/etc/mifichero":
 source =>  "puppet://servidorpuppet/carpetagrupo/etc/mifichero",
 owner =>  "root",
 group => "root",
 mode => 700,
 }

La directiva source nos permite especificar la ubicación desde la que obtendremos el fichero.

  • servidorpuppet es el nombre del servidor puppet del que obtener el fichero. En caso de no especificarse se considera que es el mismo que el servidor del que se ha obtenido la configuración.
  • carpetagrupo es el repositorio dentro del servidor del que obtendremos el fichero. Estos repositorios se definen en el fichero fileserver.conf del servidor Puppet.

Las directivas owner, group y mode nos permiten definir el propietario, grupo y permisos a asignar al fichero. Por ejemplo, podríamos utilizar estas directivas para asegurarnos que determinado fichero tiene los permisos que deseamos aunque algún otro proceso o usuario los haya cambiado.

2. Directorios

Una extensión del elemento fichero nos permite gestionar un directorio y todos los ficheros contenidos en él.

file { "/etc/midirectorio":
 source =>  "puppet:///carpetagrupo/etc/midirectorio",
 owner =>  "root",
 group => "root",
 recurse => "true",
 purge => "true",
 force => "true",
 }

Para gestionar un directorio en lugar de un fichero individual, simplemente añadiremos la directiva recurse con valor true. Además también es interesante usar las directivas purge (hace que se borren en el destino todos los ficheros que se hayan borrado del origen) y force (hace que se borren los directorios que si no quedarían vacíos).

Continuará

Linux ,

puppet4

Martes, 22 de junio de 2010

Puppet(IV): Configuración de los clientes a gestionar

Una vez que se ha visto como hacer la instalación del servidor y del cliente Puppet llega el momento de ver como gestionar los clientes. Esta configuración se guardará dentro del directorio /etc/pupppet/manifests del servidor Puppet. Dentro de este directorio tendremos un fichero site.pp que será el fichero inicialmente leído por Puppet.

Inclusión de ficheros de configuración adicionales

Dentro del fichero site.pp podemos añadir la directiva import para permitir incluir otros ficheros de configuración. En esta directiva podemos especificar el nombre completo del fichero o un * para que se incluyan todos los ficheros de un directorio (estos ficheros tienen que tener extensión .pp)

import "nodes.pp"
import "classes/*"

Esta directiva nos permite dividir nuestra configuración en varios ficheros, lo que es muy útil en caso de tener que gestionar varios clientes.

Definición de nodos

Los primeros elementos que definiremos serán los nodos. Con los nodos nos podemos referir a servidores concretos:

node "micliente.midominio.com" {}

o a grupos de servidores:

node grupoclientes1 {}

Una característica muy importante de Puppet es la herencia. Esta característica nos permite que un nodo incorpore dentro de él reglas definidas en otro nodo. La herencia la definiremos de la siguiente forma:

node "micliente.midominio.com" inherits grupoclientes1 {}

De momento, Puppet no soporta la herencia múltiple.

Por último podemos definir un nodo especial default que se aplicará a todos los clientes para los que no se haya definido un nodo más concreto.

node default {}

… Continuará …

Linux ,

puppet3

Lunes, 21 de junio de 2010

Puppet(III): Instalación del cliente

La instalación del cliente la hacemos instalando los paquetes puppet y ruby-rdoc (no existe para RH4) del repositorio EPEL:

# yum install puppet ruby-rdoc (RH5)
# up2date –i puppet (RH4)

Una vez instalado ejecutamos:

#  puppetd -o --server=puppetserver.midominio.com

Con este comando nos conectamos al servidor, le hacemos una petición y finalizamos la ejecución. Ahora en el fichero /var/log/messages del servidor deberíamos ver una línea del estilo:

puppetmasterd[6729]:  *******.midominio.com has a waiting certificate request

Puppet se comunica mediante conexiones SSL con certificados de cliente. Para que la conexión funcione es necesario que la CA que incorpora el servidor de Puppet firme el certificado emitido por el  cliente. Para hacer esto ejecutamos los siguientes comandos:

# puppetca --list
# puppetca --sign *******.midominio.com

Una vez hecho esto, volvemos a ejecutar en el cliente el comando anterior y ya nos debería hacer la sincronización inicial:

#  puppetd -o --server=puppetserver.midominio.com

Para que el servidor se conecte automáticamente a nuestro servidor Puppet modificamos el fichero /etc/sysconfig/puppet y configuramos la variable PUPPET_SERVER.

PUPPET_SERVER=puppetserver.midominio.com

Ahora ya podemos proceder a activar el servicio con:

# chkconfig puppet  on

Para arrancarlo tenemos el siguiente comando:

# service puppet start

… continuará…

Linux , ,

puppet2

Jueves, 10 de junio de 2010

Puppet(II): Instalación del servidor Puppet

La forma más sencilla de instalar Puppet en servidores Red Hat es a través del repositorio EPEL. Una vez configurado este repositorio simplemente ejecutaremos:

# yum install puppet-server ruby-rdoc

Estos paquetes dependerán de otros que es posible que no tengamos instalados y que también los necesitaremos. El paquete ruby-rdoc no es imprescindible, pero sin él no funcionará la ayuda de los comandos de Puppet, por lo que recomiendo su instalación (este paquete no está disponible para Red Hat 4).

Configuración servidor Puppet

La configuración de puppet se divide en dos partes:

  • configuración del propio servidor Puppet. Se guarda en los ficheros: auth.conf, fileserver.conf y puppet.conf. El primero que nos interesa es fileserver.conf porque es allí donde definimos donde se indican las ubicaciones de los ficheros que luego se distribuirán:
[misficheros]
path /var/lib/puppet/files/misficheros
allow *.midominio.com
  • configuración de los clientes a gestionar: se guardan en ficheros .pp del directorio manifests. El principal es site.pp. Aquí es donde se definen las acciones que se realizarán con los clientes (distribución de ficheros, creación de tareas de cron, servicios, instalación de paquetes,…)

Arranque del servidor Puppet

Para arrancar el servidor tenemos el siguiente comando:

# service puppetmaster start

Si queremos que el servidor Puppet arranque automáticamente con el SO, ejecutaremos el siguiente comando:

 # chkconfig puppetmaster on

Hay que tener en cuenta que el servidor Puppet escucha en el puerto 8140, por lo tanto, hay que garantizar que exista conexión entre los clientes y este puerto del servidor (firewalls).

… continuará …

Sin clasificar

puppet1

Lunes, 7 de junio de 2010

Puppet (I): Introducción

Puppet es un sistema open source para automatizar las tareas administrativas de servidores Unix. Nos permite gestionarlos de forma remota y en el caso de tener que administrar múltiples servidores permite mantener una configuración uniforme de los mismos de forma sencilla.

Entre otras cosas desde Puppet podemos:

  • Distribuir ficheros de configuración almacenados en un repositorio centralizado
  • Instalar paquetes de software en los servidores
  • Gestionar servicios (arrancarlos, pararlos, reiniciarlos,…)
  • Gestionar el cron

Puppet está escrito en Ruby y está disponible para sistemas operativos tipo Unix, aunque parece que el soporte para Windows estará disponible a lo largo de este año.

No es la única herramienta de este estilo. Existen varias alternativas (CFEngine, Spacewalk,…), pero desde mi punto de vista es una herramienta con la que es posible obtener resultados de forma rápida y eso en mi caso era un factor muy importante.

En mi caso me he centrado en la administración de sistemas Red Hat Linux 4 y 5 ya que son los sistemas que administro.

… continuará …

Linux , ,