miércoles, 12 de junio de 2013

Modificación de datos del servidor después de clonar

Buenos días,

 una entrada rápida. A más de uno nos habrán clonado un servidor virtual Red Hat desde Vmware, Xen u otra plataforma. Vamos a ver que modificaciones hemos de realizar para no duplicar servidores ni dejar rastros en la configuración.

Una vez clonado el servidor se recomienda arrancarlo con la tarjeta de red deshabilitada o en el modo "single user".

Cambio de password de root

# passwd

Cambio de hostname

Modificar la entrada de HOSTNAME.
# vi /etc/sysconfig/network
Modificar si existierá la entrada que hacé refencia a la IP y el hostname.
# vi /etc/hosts
Ejecutar el comando anterior para cambiar el hostname en caliente, sin reiniciar.
# hostname NEWHOSTNAME

Modificación del networking

Al realizar la clonación normalmente la MAC de la tarjeta de red cambia y también es posible que cambie el nombre del adaptador. La configuración de red (ip, mask, gateway) también se habrá de modificar. Se modificarán en los siguientes archivos:

# cd /etc/sysconfig/network-scripts/
# vi ifcfg-eth0
# vi ifcfg-eth1

Si cambia el rango de IP, hemos de modificar el GATEWAY en:
# vi /etc/sysconfig/network

Reiniciamos el servicio de networking:
# service network restart

Recrear las claves SSH

Para que no hayan problemas de identidad. La forma más rápida es borrarlas y reiniciar. Automáticamente se generarán unas nuevas claves unicas para el servidor. 
# cd /etc/.ssh
# rm -f *_key*
# reboot
 Las claves de usuario, por ejemplo root, también se tendrán que borrar y volver a generar si existieran.

Otras modificaciones

También se tendría que modificar si lo tuviese:
  • Otros certificados.
  • Configuración del cliente de backup.
  • Configuración de la monitorización.
  • Alta en la RHN.

Saludos!!




martes, 11 de junio de 2013

Notificaciones de Centreon en el escritorio Ubuntu

Hola,

hemos realizado un script en bash que chequea la URL del servidor de centreon y nos avisa si hubiera alguna alerta con nuestros servidores. Se aprovecha el servicio de notificaciones de Ubuntu para enviar estos mensajes al escritorio.  Para su reutilización se ha de modificar la URL target y el usuario/password ya que los del script son ficticios.

El script:
#!/bin/bash                                                                                                                                                            
# Guardar cookies                                                                                                                                                        
USERNAME=admin                                                                                                                                                      
CHECK_INTERVAL=120                                                                                                                                                      
EXCEPTIONS_FILE="/etc/notify-exceptions"                                                                                                                                
# Gets                                                                                                                                                                
check(){                                                                                                                                                              
        FILE=`mktemp`                                                                                                                                                  
        COOKIES_FILE=`mktemp`                                                                                                                                          
        EXCEPTIONS=`cat $EXCEPTIONS_FILE`                                                                                                                                
        wget --keep-session-cookies --save-cookies $COOKIES_FILE --post-data "useralias=$USERNAME&password=$PASSWORD&submit=Connect+%3E%3E" http://myserver.com/centreon/index.php -O /dev/null 2> /dev/null
        wget --load-cookies $COOKIES_FILE -p http://myserver.com/centreon/include/home/tacticalOverview/xml/ndo/tacticalOverviewXml.php -O $FILE 2> /dev/null
        cat $FILE | tr "<" "\n" |sort | uniq |grep -i "\[sucs" |cut -c9-15 > $FILE
        NUMBER_OF_HOSTS=`diff $FILE /etc/notify-exceptions | grep "^<" | cut -d " " -f2 | wc -l`
        rm $FILE $COOKIES_FILE
        echo $NUMBER_OF_HOSTS
}
# Bucle
while true
do
        RES=`check`
        if  [[ $RES  -ne 0 ]] ; then
                notify-send --urgency=low -i "terminal" "Alerta Unix" "Eventos en $RES servidores."
        fi
        sleep $CHECK_INTERVAL
done
rm $HOSTS_FILE
El resultado:



Saludos!!



viernes, 7 de junio de 2013

Raspberry Pi Doorbell

Hola,

 hace tiempo que teníaa pensado que en el timbre de mi casa sonará la "Marcha Imperial" de Star Wars. Siempre ha estado en mente, ahora con la ayuda de una Raspberry Pi, ojear unas cuantas web y los consejos de Matías se ha hecho realidad.



Aprovechando que ya tenía en casa el raspberry pi, lo he estado usando para recoger la temperatura del comedor y consultarlo desde Android, para más adelante controlar la caldera. Cuando el proyecto tenga cara y ojos ya haré otro post.

Lo que más me ha costado ha sido encontrar los cables que entraban del timbre de la puerta. Tuve que desmontar el timbre clásico a 220v.

Esquemas eléctricos del timbre a 220v

Una vez encontrados y pasados al comedor, se conecta al GPIO 17. El GPIO es el puerto de entradas y salidas digitales del Raspberry. 

GPIO Pin Schema

El programa es bastante sencillo y muy bien optimizado gracias a los consejos de Matias. Basicamente es un bucle infinito que esta comprobando el estado puerto GPIO 17 si este es "0" se activa. 

Usaremos las librerías de desarrollo de juegos para reproducir un mp3.  La librería "pygame" tiene un efecto de sonido "fadeout", así que tras 15 segundos de reproducción hace el "fadeout", queda bastante "cool". 

El script se deja ejecutando en segundo plano y se configura en el arranque.


#!/usr/bin/python
import RPi.GPIO as GPIO
from time import sleep
import pygame

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)

TIME = 15
HOME = "/home/pi/doorbell/"
TONE = "tone.mp3"

pygame.init()
while True:
    if not GPIO.input(17):
        pygame.mixer.music.load(HOME+TONE)
        pygame.mixer.music.play()
        sleep(TIME)
        pygame.mixer.music.fadeout(5000)
        pygame.mixer.stop()
    sleep(0.1)

Os dejo un video y una foto del invento:

Foto de la protoboard


Ni que decir tiene que se puede cambiar el fichero a reproducir por tu música preferida. Incluso se puede poner el sonido de un timbre clásico. :-)

Lo interesante ahora sería buscarle una caja para que quede todo dentro sin tantos cables. Pero eso para más adelante...

Saludos!!


Merge realizado con exito

Hola,

 este par de semana he dejado el blog un poco olvidado. Pero es que hemos realizado un merge de unos códigos (de ADN) y el resultado ha sido muy bueno ^__^

Durmiendo con Tux

miércoles, 15 de mayo de 2013

Trabajando con discos (IV)

Hola,

 siguiendo el ultimo articulo Trabajando con discos (III) vamos ha ampliar el grupo de volúmenes y el filesystem final. Agregaremos un nuevo volumen físico de 300Mb y lo agregaremos al ya existente. La ampliación final del filesystem lo realizaremos en caliente.

Crearemos la nueva partición LVM:


[root@gamma ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08e3a6bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          50      401593+  82  Linux swap / Solaris
/dev/sda2              51          76      208845   8e  Linux LVM

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (77-130, default 77): p
First cylinder (77-130, default 77):
Using default value 77
Last cylinder, +cylinders or +size{K,M,G} (77-130, default 130): +300M

Command (m for help): p

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08e3a6bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          50      401593+  82  Linux swap / Solaris
/dev/sda2              51          76      208845   8e  Linux LVM
/dev/sda3              77         115       313267+ 83  Linux LVM

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

[root@gamma ~]# partx
La creamos como nuevo volumen físico:

[root@gamma ~]# pvcreate /dev/sda3
  Writing physical volume data to disk "/dev/sda3"
  Physical volume "/dev/sda3" successfully created

Agregamos la el nuevo volumen físico al grupo de volúmenes:




[root@gamma ~]# vgextend vg1 /dev/sda3
  Volume group "vg1" successfully extended
 Ahora que el vg tiene 200Mb más podemos ampliar el volumen ya existente:



[root@gamma ~]# lvextend -L500MB /dev/mapper/vg1-lv1
  Extending logical volume lv1 to 500.00 MiB
  Logical volume lv1 successfully resized
 Vemos el tamaño previo del volumen que está actualmente montado en el filesystem /dir1

[root@gamma ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda2             7.7G  2.1G  5.3G  28% /
tmpfs                 372M  112K  372M   1% /dev/shm
/dev/vda1             485M   33M  428M   7% /boot
/dev/vda3             985M   80M  856M   9% /home
/dev/mapper/vg1-lv1   194M  5.6M  179M   4% /dir1

Con el comando rezise2fs ampliamos el volumen en caliente:


[root@gamma ~]# resize2fs /dev/mapper/vg1-lv1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /dir1; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/vg1-lv1 to 512000 (1k) blocks.
The filesystem on /dev/mapper/vg1-lv1 is now 512000 blocks long.



Comprobamos que la ampliación se ha llevado a cabo:

[root@gamma ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda2             7.7G  2.1G  5.3G  28% /
tmpfs                 372M  112K  372M   1% /dev/shm
/dev/vda1             485M   33M  428M   7% /boot
/dev/vda3             985M   80M  856M   9% /home
/dev/mapper/vg1-lv1   485M  6.3M  453M   2% /dir1

La ampliación en caliente es una de las principales ventajas de LVM, gracias a su gran flexibilidad, es posible planificar migraciones de datos entre diferentes cabinas de discos, en caliente, sin paradas ni perdidas de servicio.

También cabe destacar que durante el formateo de discos se pierde una parte de la capacidad. Al crearse un partición LVM también se parte otra parte de capacidad en la gestión de LVM. En este caso practico de un volumen neto de 500Mb quedan 485Mb tras agregar LVM y formatear. Hemos perdido un 3% de la capacidad. No es mucho en nuestro entorno, pero en un entorno con Teras de información sería algo a tener en cuenta.

En el siguiente post veremos como encriptar un volumen.

... (Continuará)

martes, 14 de mayo de 2013

Sacacorchos

Hola,

 seguro que muchos de vosotros habéis tenido la necesidad de conectaros desde el trabajo a vuestros sistemas domésticos  ¿Quien no tiene un pequeño servidor en casa para realizar pruebas? Hace poco he descubierto gracias al compañero Matias de una herramienta llamada Sacacorchos. Me ha sorprendido por su fácil configuración.

El nombre real de la aplicación es "Corkscrew" nos permitirá realizar un tunnel SSH a través del proxy. Para su utilización, como siempre podemos bajar el código y compilarlo o instalar el paquete de tu distribución de Linux favorita. La información completa de la podéis encontrar en el README. En Ubuntu sería por ejemplo:


root@myhost:~# apt-get install corkscrew
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following package was automatically installed and is no longer required:
  libdate-manip-perl
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
  corkscrew
0 upgraded, 1 newly installed, 0 to remove and 4 not upgraded.
Need to get 0 B/11.8 kB of archives.
After this operation, 77.8 kB of additional disk space will be used.
Selecting previously unselected package corkscrew.
(Reading database ... 305468 files and directories currently installed.)
Unpacking corkscrew (from .../corkscrew_2.0-7_amd64.deb) ...
Processing triggers for man-db ...
Setting up corkscrew (2.0-7) ...
Comprobamos que el binario ha sido instalado y está en el PATH:

root@myhost:~# which corkscrew
/usr/bin/corkscrew
En la configuración de SSH, hemos de añadir una entrada por cada host que queramos enviar a través de un túnel por el proxy.

root@myhost:~/.ssh# cat config
Host micasa.com
Hostname micasa.com
ProxyCommand corkscrew myproxy 3128 %h %p
Tan sencillo como esto. A la hora de realizar la conexión ssh con el host de destino hemos de indicar el puerto por el que establecer la comunicación. Por norma general podemos usar el 443 que el proxy no lo tiene cerrado.

root@myhost:~/.ssh# ssh micasa.com -p 443
root@micasa.com's password: 
Saludos,




jueves, 9 de mayo de 2013

Trabajando con discos (II)


 Vamos a ver como añadir/ampliar nuestra memoria swap en 400MB. El swap en un tipo de memoria de intercambio que se almacena en disco. Primero crearemos la partición en /dev/sda de 400MB y del tipo 82 Linux Swap.

[root@gamma ~]# fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x08e3a6bd.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08e3a6bd

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +400MB

Command (m for help): p

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08e3a6bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          50      401593+  83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris       
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx        
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data   
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility  
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt        
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access    
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O       
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor     
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs       
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT           
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor     
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor     
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary 
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS   
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep       
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT           
1e  Hidden W95 FAT1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08e3a6bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          50      401593+  82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Haremos que el kernel refresque el estado de los discos:

 [root@gamma ~]#partx

Formateamos la partición de swap:


[root@gamma ~]# mkswap /dev/sda1
Setting up swapspace version 1, size = 401588 KiB
no label, UUID=a74e9042-da78-4d6b-afcb-91a71d92c78e





Activamos la partición de swap:

[root@gamma ~]# swapon /dev/sda1



Comprobamos que ahora tenemos +400M más de swap:

[root@gamma ~]# free -l
             total       used       free     shared    buffers     cached
Mem:        760752     471884     288868          0      21724     203588
Low:        760752     471884     288868
High:            0          0          0
-/+ buffers/cache:     246572     514180
Swap:      1425576          0    1425576

Añadir la entrada de /etc/fstab para activar la partición de swap en el arranque.

UUID=a74e9042-da78-4d6b-afcb-91a71d92c78e swap                    swap    defaults        0 0

...(Continuará)