Archivo de la etiqueta: cloud

Puppet installation and configuration

Enmarcado en el proyecto personal que estoy desarrollando desde  hace unos meses, surge la necesidad de poner en marcha un sistema que permita hacer despliegues en el entorno de desarrollo, antes de llevarlo a producción. La solución para tenerlo todo controlado y poder manejar los despliegues fácilmente en los entornos reside en el uso de herramientas como chef o puppet (si quieres ver una comparativa entre los productos clic aquí). El que uso es puppet y vamos a ver como está montada la base. Puppet requiere conectividad con todos los nodos que comprondrán la infraestructura y estos nodos deberán conocer el nombre del servidor, así que es fundamental el servicio DNS para no perdernos con las direcciones IP y reducir los problemas, que los habrá para hacer más divertido el montaje/aprendizaje.

Requisitos del servidor y el cliente

Resolución DNS y sincronización NTP, sin esto, obtendremos errores de todo tipo, los más habituales, errores de certificado en la descarga de configuraciones por parte de los clientes.

Establecer el repositorio

Instalación del repositorio de puppet en el sistema de los servidores, tanto en el que ejecutará puppet master como los clientes:

Configuración del servidor

Instalación del paquete puppetmaster y todas sus dependencias:

La instalación de estos paquetes generará los scrips de inicio automático en /etc/init.d que tendremos que agregar al inicio del sistema:

Por defecto la instalación del servidor no incluye la sección [master] así que vamos a crearla e introduciremos dos directivas

Ahora tenemos que decirle donde están los nodos y como se agrupan. Esto lo vamos a realizar sobre un archivo de nodos llamado nodes.pp y uno general para incluir los nodos y demás configuración, por ahora solo los nodos:

El contenido de cada archivo es el siguiente:

Instalación y configuración de los clientes

Instalación del paquete puppet y todas sus dependencias:

[root@puppetclient1 puppet]# yum install puppet

Cada cliente requiere que le indiquemos cual será su nombre y para ello introduciremos en la sección [agent] del fichero de configuración /etc/puppet/puppet.conf

CentOS dispone del fichero de configuración /etc/sysconfig/puppet.conf para personalizar algunas directivas sin que tengamos que editar el fichero principal de configuración de puppet /etc/puppet/puppet.conf   En mi caso, he decidido hacerlo sobre el propio de puppet. Este es su contenido:

Iniciamos los servicios

Arrancamos el servidor y a continuación los clientes.  Recomendable un less en el log del servidor para comprobar que todo va bien. Además, en el primer cliente, será interesante arrancarlo con las opciones indicadas:

Vamos a firmar los certificados manualmente, aunque también podemos hacer que se firmen de forma automática. A veces aparece el mensaje Notice: Did not receive certificate precisamente por no estar el certificado firmado.

Para que se firmen los certificados automáticamente hay que agregar una directiva en el bloque [master]

Dentro de este fichero vamos a asegurar un poco la infraestructura impidiendo que nadie pueda meter un servidor en ella y se cargue de la configuración que reparte puppet

Vamos a listar ahora los clientes que tenemos, incluido el servidor:

Ahora veamos qué podemos hacer con el “cacharro”.

Para distribuir archivos, paquetes y ejecutar acciones, debemos crear un módulo que nos permita hacer lo que necesitemos.

Los módulos su ubican en la ruta /etc/puppet/modules/ y siguen la estructura de directorios: manifests templates y files. Aunque no siempre requiere de todos los directorios, pero sí del principal, manifests.
En nuestro caso, vamos crear un archivo para distribuirlo a los clientes y nos servirá como ejemplo para ver el lenguaje usado para la construcción de estos archivos y como no, usaremos el famoso motd para el ejemplo.
El primer paso será la creación de un módulo que llamaremos motd

Ahora vamos al directorio manifests y creamos un archivo init.pp con el siguiente contenido

Necesitamos colocar en el directorio files un archivo llamado motd con el contenido que deseamos mostrar en los inicios de sesión de los servidores a los que se repartirá.

Trabajar con un sistema como puppet nos da la posibilidad de repartir software a todos los nodos o simplemente, a los nodos que deseemos. Será sobre el archivo nodes.pp creado al inicio donde tendremos que indicar sobre qué nodos tendrá que ejecutar el reparto de archivos.
reload del servidor puppetmaster

Ahora el proceso repartirá automáticamente el archivo entre los clientes que pertenezcan al grupo mfernandeznodes

Para la siguiente entrada veremos como hacer toda la infraestructura un poco más “visual”

Referencias: http://docs.puppetlabs.com/puppet/

 

Virtualbox internal connection

Configuremos VirtualBox para trabajar con nuestras máquinas virtuales de forma independiente a la red en la que nos encontremos conectados o simplemente, cuando no disponemos de una conexión de red.
Desde Archivo > Preferencias > Red agregaremos un interfaz y lo configuraremos del siguiente modo:

Captura de pantalla de 2013-05-13 18:06:47

Vamos a asignar una dirección IP al servidor, en mi caso: 10.10.10.2

Captura de pantalla de 2013-05-13 18:07:41

El DHCP asignará desde la 5 a la 10

Captura de pantalla de 2013-05-13 18:07:53

 

Ahora debemos configurar la máquina virtual para que pueda funcionar con el nuevo interfaz en modo “solo anfitrión”

Captura de pantalla de 2013-05-13 18:08:33

Pues ya lo tenemos, ahora solo configuraremos la máquina virtual para que tire de este DHCP o le asignaremos una IP fija.

 

Virtualización con Proxmox sobre Server Hetzner

  Voy a compartir con todos vosotros en este, el primer post desde hace unos años, cómo es mi arquitectura actual sobre Proxmox en un servidor dedicado del proveedor Hetzner. Como el dinero es el que manda, en nuestro caso estamos usando un servidor 4S (estaba de oferta la instalación)  con una sola IP pública.

Proxmox es una plataforma de virtualización gratuita que permite virtualizar todo tipo de sistemas, para ello la plataforma soporta OpenVZ y KVM (yo uso KVM) y muchas más opciones como alta disponibilidad, autenticación centralizada, almacenamiento…

Como apunte, puedo verificar que también funcionan estupendamente sistemas W2003Server y W2008Server 😀

 

Vamos a montar el tinglao

Desde la consola de administración del sistema Hetzner (Hetzner Robot) vamos a decirle al sistema que se cargue la imagen de Debian a 64 bits minimal. Debo decir que probé a montarlo en un sistema CentOS, pero me encontré con muchos problemas y tuve que hacerlo con Debian. Todo el inicio del sistema y su acceso inicial es intuitivo y sencillo, sobre la estructura que tendrá el sistema poco puedo decir porque este aspecto es como el culo, cada uno tiene el suyo.

Os recomiendo cambiar algunas cositas importantes en el sistema:

  • Crea un usuario y deja root (adduser panzuela)
  • Puerto SSH y capado de root por SSH
  • Actualizar al máximo el sistema
  • Reconfiguración de paquetería
  • Álias de comandos
  • Instalación de agente para monitorización del sistema (NRPE en mi caso).
  • Nombre del sistema
  • Hora del sistema (dpkg-reconfigure tzdata)
  • Quitar servicios del inicio que no usaremos (update-rc.d)

Ya está todo listo, tenemos el sistema como nos gusta, todo cerrado y limitado para comenzar con la instalación de proxmox.

Agrega en el fichero sources.list las siguientes líneas:

deb http://download.proxmox.com/debian squeeze pve

Agrega la key del repo:
wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -

Recargamos la lista de paquetes con el nuevo repo:
aptitude update

Instalamos el Kernel Proxmox, este realmente contiene el hypervisor:
aptitude install pve-kernel-2.6.32-12-pve

Una vez instalado, instalamos Proxmox:
aptitude install proxmox-ve-2.6.32

Deberá aceptase la instalación de dependencias y la instalación del servidor citadel (en mi caso mantuve las opciones por defecto).

Una vez instalado tendremos que agregar el nuevo virtualhost que se genera en apache:
a2ensite pve-redirect.conf
Reiniciamos apache mediante el modo AGA:
/etc/init.d/apache2 stop
/etc/init.d/apache2 start
(Costumbre adquirida de Don Agustín García, gran amigo y maestro)

Se necesitan instalar los siguientes paquetes (Configurar al gusto):
aptitude install ntp ssh lvm2 postfix ksm-control-daemon vzprocps mtr-tiny mc
*La instalación de postfix preguntará por el tipo de servidor (Internal site) y  por el host: cdtec.es

Ahora tenemos todo el sistema montado y necesitamos acceder a la herramienta Web para crear nuestras máquinas.
pveum groupadd sysadmin
pveum aclmod / -group sysadmin -role Administrator

Creamos el usuario (vale el creado anteriormente) y lo hacemos sysadmin

pveum useradd panzuela@pam  (Puedes cambiarle el password con pveum passwd usuario@pam)

Finally, add user to the admin group:
pveum usermod panzuela@pam -group sysadmin

Ya estamos listos para acceder al sistema, pon en tu navegador la siguiente ruta:

https://<IP>:8006

Ya tenemos el sistema listo para comenzar a virtualizar máquinas. Es nuestraropia “cloud”.

proxmox