PostgreSQL replicación

PostgreSQL permite la replicación con esclavos abiertos para consulta, esta replicación se realiza como en otras bases de datos con la transferencia del log de transacciones a un servidor remoto. Para realizar esta configuración utilizaremos PostgreSQL 9.3 instalado desde sus repositorios de yum .

Para este entorno asumimos que tenemos una base de datos maestro en el host “master” con el ip 192.168.0.10, y un host esclavo llamado “slave” en el ip 192.168.0.11.

Como primer paso creamos un usuario de replicación en el maestro.

psql -c "CREATE USER replicator REPLICATION LOGIN ENCRYPTED PASSWORD 'passwd';"

En la base de datos maestro cambiamos los valores por defecto de los siguientes parámetros en el archivo postgresql.conf, será necesario crear el directorio /var/lib/pgsql/9.3/backup/archive/ para los archivos que genere WAL.

listen_addresses = '*'
wal_level = hot_standby
checkpoint_segments=8
archive_mode=on
archive_command=' test ! -f /var/lib/pgsql/9.3/backup/archive/%f && cp %p /var/lib/pgsql/9.3/backup/archive/%f '
max_wal_senders = 3
wal_keep_segments = 8

luego en pg_hba.conf agregamos una línea para que el host esclavo se pueda conectar al master remotamente.

host replication replicator 192.168.0.79/24 md5

Finalmente reiniciamos la base de datos para que todos los cambios sean tomados en cuenta por el motor.

Para crear la base de datos esclavo inicial a partir de la cual se aplicaran los logs podemos usar el comando pg_basebackup, este utilitario se conecta remotamente a la base de datos maestro y copia en el esclavo todos los archivos necesarios. Por supuesto bajamos la base de datos en el esclavo antes de proceder para evitar errores.

pg_ctl stop
pg_basebackup -h 192.168.0.10 -D /var/lib/postgresql/9.3/data  -U replicator -v -P

En el archivo postgresql.conf del esclavo activamos la opción de hot_standby, esta clausula se ignora si hay un cambio de roles y el esclavo pasa a ser el maestro.

hot_standby = on

finalmente creamos el archivo recovery.conf en el directorio de datos de PostgreSQL del esclavo, este archivo debe contener las siguientes directivas:

standby_mode='on'
primary_conninfo = 'host=192.168.0.10 port=5432 user=replicator password=passwd'
trigger_file= '/tmp/postgresql.trigger'

levantamos la base de datos en el esclavo y comprobamos el estado de la la replicación en el maestro con la siguiente consulta:

select * from pg_stat_replication;

Y eso es todo, espero que sea de utilidad.

Descargar software de edelivery con wget ( otn.oracle.com )

Cuando queremos descargar software de Oracle de edelivery directamente a una máquina sin entorno gráfico con wget podemos seguir los siguientes pasos.

1) Instalamos la extensión “cookie.txt export” en chrome (vamos a usar chrome por supuesto)
2) Navegamos por otn.oracle.com hasta el archivo que queremos descargar, copiamos el enlace
3) Oprimimos el boton de la extensión en chrome, copiamos y pegamos todas las cookies para oracle.com en un archivo cookies.txt ya sea en el servidor directamente o en local y luego lo pasamos al servidor con scp.
4) descargamos el software

wget --load-cookies cookies.txt --no-check-certificate http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_1of2.zip

Y listo eso es todo.

Kohana en Mac OsX Mountain Lion (PECL_HTTP, MCRYPT)

Estoy haciendo una app en Kohana y pensaba instalarlo en mi Mac; Instalar Kohana en Mountain Lion es sencillo solo se necesita PHP y MySQL lo complicado es instalar las extensiones pecl_http y mcrypt que no vienen con el PHP que trae el Mac ( 5.3.13).

Para instalar todo esto es necesario tener un entorno de compilación por lo que hay que descargar el Xcode 4, y después en preferencias instalar las herramientas de consola como se indica en este post.

Una ves que tenemos este entorno instalamos Homebrew para que nos ayude a compilar las librerías necesarias. Si tenemos las herramientas de consola de Xcode instaladas es solo darle al comando

ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)

previa a la instalación del pecl-http necesitamos pear que si bien se encuentra en el sistema no está configurado

sudo cp /private/etc/php.ini.default /private/etc/php.ini
sudo php /usr/lib/php/install-pear-nozlib.phar
pear config-set php_ini /private/etc/php.ini
pecl config-set php_ini /private/etc/php.ini
sudo pear upgrade-all

Ahora si podemos instalar pecl-http aunque previo a ello necesitamos la biblioteca pcre

brew install pcre
sudo pecl install pecl_http
sudo apachectl restart

El utilitario pecl se encarga de editar el php.ini por lo que no necesitamos tocarlo. Ya instalado podemos probar que funciona en la página de requisitos de Kohana.

Instalar mcrypt va a resultar mas complicado porque no existe la extensión así que tendremos que compilarla, descargando php 5.3.13 que es la versión que viene con Mountain Lion e instalando la biblioteca mcrypt con brew.

brew install mcrypt
wget http://es.php.net/get/php-5.3.13.tar.gz/from/this/mirror
tar -zxvf php-5.3.13.tar.gz
cd php-5.3.13/ext/mcrypt/
phpize
make
cd modules
sudo cp mcrypt.so /usr/lib/php/extensions/no-debug-non-zts-20090626/

finalmente editamos php.ini y añadimos la extension mcrypt

extension="mcrypt.so"

Reiniciamos apache y debería todo estar listo para desarrolar con Kohana en un Mac con Mountain Lion.

Oracle VM 3.1.1 Sandbox ( Entorno de pruebas VM Server )

Muchos queremos probar Oracle VM Server pero el requerimiento del al menos dos máquinas, una para el hipervisor y otra para el gestor nos frenan. En base a un blog del grupo Phytian y jugando un poco he logrado poner los dos ( el hipervisor y el manager ) en una sola máquina y desplegar una plantilla de las que proporciona Oracle.

La máquina que utilizaré tiene un procesador AMD de 4 núcleos 8 GB en RAM y dos discos, el primero de 500GB y el segundo de 1TB. Todos los componentes los compre y los ensamble en casa por algo menos de 400 euros, por lo que es un entorno interesante para probar el producto a un coste razonable.

Oracle VM desde la versión 3 espera que el repositorio se cree en otro disco por lo que si tenemos un sistema con un solo disco tendremos que presentarlo por NFS con todo lo que ello implica ( ciclos de CPU / posible inestabilidad  ), para presentar una partición por NFS podemos encontrar una referencia en otro post del blog de Pythian de Yuri Velikanov.

Lo primero es descargar Oracle VM 3.1.1 de Oracle E-Delivery quemarlo en CD e instalarlo en el servidor, para poder realizar esto requeriremos una cuenta de Oracle SSO, que la podemos crear en OTN.

Durante la instalación es importante editar la plantilla de particiones y asignarle más swap ( 2048M ) y asginarle mas espacio de disco al dom0 que está montado como raíz ( unos 36GB mínimo ) yo le asigné todo el espacio en el disco de 500G porque luego presentaré lo que reste por NFS y pondré un apache en el dom0 para usarlo para cargar las plantillas.

Editamos el archivo /boot/grub/grub.conf y le damos más memoria al dom0

[root@vmserver iso] cat /boot/grub/grub.conf
# grub.conf generated by anaconda
..
#boot=/dev/sdb
default=0
timeout=5
title Oracle VM Server-ovs (xen-4.1.2 2.6.39-200.1.1.el5uek)
	root (hd0,0)
	kernel /xen.gz dom0_mem=2048M
	module /vmlinuz-2.6.39-200.1.1.el5uek ro root=UUID=538a8508-9679-4d9d-8e9d-eac780c7743b
	module /initrd-2.6.39-200.1.1.el5uek.img
title Oracle VM Server-ovs serial console (xen-4.1.2 2.6.39-200.1.1.el5uek)
	root (hd0,0)
	kernel /xen.gz console=com1,vga com1=57600,8n1 dom0_mem=639M
	module /vmlinuz-2.6.39-200.1.1.el5uek ro root=UUID=538a8508-9679-4d9d-8e9d-eac780c7743b  console=tty console=ttyS0,57600n8
	module /initrd-2.6.39-200.1.1.el5uek.img

Editamos /etc/security/limits.conf  para aumentar el número de archivos abiertos al mismo tiempo.

[root@vmserver iso] cat /etc/security/limits.conf
# /etc/security/limits.conf
# .....
#@student        -       maxlogins       4

*		soft	nofile		65536
*		hard	nofile		65536

Agregamos el grupo dba y el usuario oracle

[root@vmserver stage]#groupadd dba
[root@vmserver stage]#useradd -g dba oracle

Instalamos el paquete bc que lo utiliza Oracle XE, se puede encontrar con una búsqueda en google

[root@vmserver stage]# rmp -Uvh bc-1.06-21.x86_64.rpm

listos estos pasos copiamos el iso de la instalación del, lo podemos copiar con scp desde otro servidor o con wiscp desde windows, por ejemplo yo lo he copiado en /stage. Luego montamos el iso en el sistema de archivos y lanzamos el runInstaller con la opción -n para que no de alertas en caso de no cumplir los requerimientos.

[root@vmserver stage]# ls
bc-1.06-21.x86_64.rpm  iso  VM3.3.1_Manager.iso
[root@vmserver stage]# pwd
/stage
[root@vmserver stage]# mount -o loop VM3.3.1_Manager.iso /stage/iso/
[root@vmserver stage]# cd iso
[root@vmserver iso]# ./runInstaller.sh -n

Oracle VM Manager Release 3.1.1 Installer

Oracle VM Manager Installer log file:
 /tmp/install-2012-05-25-113143.log

Please select an installation type:
   1: Demo
   2: Production
   3: Uninstall
   4: Help

   Select Number (1-4): 1

Starting demo installation ...

The Demo installation type will use an XE database.  The usage of XE is for *demo purposes only* and is not supported for production. Please *do not* plan to start with XE and migrate to a supported version of the database as this may not be possible. For production environments or any long term usage please use the "Production" option with an SE or EE database.
   1: Continue
   2: Abort

   Select Number (1-2): 1

Verifying installation prerequisites ...
Oracle VM Manager can only be installed on a 64 bit Oracle Linux version 5.5 and higher.
Current version is 'redhat' version '3.1.1'
*** WARNING: Recommended memory for the Oracle VM Manager server installation is 3950 MB RAM
Ignoring prerequisites check ...

One password is used for all users created and used during the installation.
Enter a password for all logins used during the installation:
Enter a password for all logins used during the installation (confirm): 

Verifying configuration ...

Start installing the configured components:
   1: Continue
   2: Abort

   Select Number (1-2): 1

Step 1 of 9 : Database ...
Installing Database ...
Retrieving Oracle Database 11g XE ...
Installing Oracle Database 11g XE ...
Configuring Oracle Database 11g XE ...

Step 2 of 9 : Java ...
Installing Java ...

Step 3 of 9 : Database Schema ...
Creating database schema 'ovs' ...

Step 4 of 9 : WebLogic ...
Retrieving Oracle WebLogic Server 11g ...
Installing Oracle WebLogic Server 11g ...

Step 5 of 9 : ADF ...
Retrieving Oracle Application Development Framework (ADF) ...
Unzipping Oracle ADF ...
Installing Oracle ADF ...
Installing Oracle ADF Patch...

Step 6 of 9 : Oracle VM  ...
Retrieving Oracle VM Manager Application ...
Extracting Oracle VM Manager Application ...
Installing Oracle VM Manager Core ...

Step 7 of 9 : Domain creation ...
Creating Oracle WebLogic Server domain ...
Starting Oracle WebLogic Server 11g ...
Configuring data source 'OVMDS' ...
Creating Oracle VM Manager user 'admin' ...

Step 8 of 9 : Deploy ...
Deploying Oracle VM Manager Core container ...
Deploying Oracle VM Manager UI Console ...
Deploying Oracle VM Manager Help ...
Enabling HTTPS ...
Granting ovm-admin role to user 'admin' ...

Step 9 of 9 : Oracle VM Manager Shell ...
Retrieving Oracle VM Manager Shell & API ...
Extracting Oracle VM Manager Shell & API ...
Installing Oracle VM Manager Shell & API ...

Retrieving Oracle VM Manager Upgrade tool ...
Extracting Oracle VM Manager Upgrade tool ...
Installing Oracle VM Manager Upgrade tool ...
Copying Oracle VM Manager shell to '/usr/bin/ovm_shell.sh' ...
Installing ovm_admin.sh in '/u01/app/oracle/ovm-manager-3/bin' ...
Installing ovm_upgrade.sh in '/u01/app/oracle/ovm-manager-3/bin' ...
Enabling Oracle VM Manager service ...
Shutting down Oracle VM Manager instance ...
Restarting Oracle VM Manager instance ...
Waiting 15 seconds for the application to initialize ...
Oracle VM Manager is running ...
Oracle VM Manager installed.

Please wait while WebLogic configures the applications... This can take up to 5 minutes.

Installation Summary
--------------------
Database configuration:
  Database host name          : localhost
  Database instance name (SID): XE
  Database listener port      : 1521
  Application Express port    : 8080
  Oracle VM Manager schema    : ovs

Weblogic Server configuration:
  Administration username     : weblogic

Oracle VM Manager configuration:
  Username                    : admin
  Core management port        : 54321
  UUID                        : 0004fb00000100009f9331dd1f11aec3

Passwords:
There are no default passwords for any users. The passwords to use for Oracle VM Manager, Oracle Database 11g XE, and Oracle WebLogic Server have been set by you during this installation. In the case of a default install, all passwords are the same.

Oracle VM Manager UI:

http://vmserver.oralab:7001/ovm/console


https://vmserver.oralab:7002/ovm/console

Log in with the user 'admin', and the password you set during the installation.

Please note that you need to install tightvnc-java on this computer to access a virtual machine's console.

For more information about Oracle Virtualization, please visit:

http://www.oracle.com/virtualization/

Oracle VM Manager installation complete.

Finalizada la instalación es buena idea hacer que la base de datos consuma menos memoria:

root@vmserver iso]# su - oracle
[oracle@vmserver ~]$ cd /u01/app/oracle/product/11.2.0/xe/
[oracle@vmserver xe]$ export ORACLE_HOME=`pwd`
[oracle@vmserver xe]$ export ORACLE_SID=XE
[oracle@vmserver xe]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@vmserver xe]$ sqlplus

SQL*Plus: Release 11.2.0.2.0 Production on Fri May 25 17:56:56 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: / as sysdba

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> alter system set sga_max_size=0 scope=spfile;

System altered.

SQL> alter system set memory_max_target=300M scope=spfile;

System altered.

SQL> alter system set memory_target=300M scope=spfile;

System altered.

SQL> create pfile from spfile;

File created.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  187928576 bytes
Fixed Size		    2224792 bytes
Variable Size		   96472424 bytes
Database Buffers	   83886080 bytes
Redo Buffers		    5345280 bytes
Database mounted.
Database opened.
SQL>

Podemos también cambiar los requerimientos de memoria del Oracle VM Manager editando el archivo /etc/init.d/ovmm editando las líneas que contienen los parámetros de uso de memória.

JVM_MEMORY_MIN=512m
JVM_MEMORY_MAX=1200m
JVM_MAX_PERM=384m

Una vez realizados todos estos cambios reiniciamos el servidor y entramos a la consola que estará en http://nombre-servidor:7001/ovm/console.

Los pasos siguientes serán:

  • Descubrir el servidor
  • Agregar el servidor a un server pool
  • Crear un respositorio en el segundo disco
  • Modificamos la red por defecto para que sirva para storage y máquinas virtuales
  • Agregamos unas cuantas ( unas 10 ) virtual nics
  • Descargamos un plantilla de la web de Oracle y la instalamos con el OVM
  • Creamos nuestra primera máquina virtual en base a la plantilla
  • Editamos la máquina virtual y le asignamos un virtual nic ( si no no tendrá red )

Realizando los pasos anteriores tuve unos pequeños problemas.

Primer problema no se desplegaba el segundo disco del server como almacenamiento local, buscando en los foros vi que era necesario levantar el mapeo de iscsi y lo detectaba.

[root@vmserver mapper]# service multipathd start
Starting multipathd daemon:                                [  OK  ]
[root@vmserver mapper]# ls /dev/mapper/
control  SATA_Hitachi_HDS5C30_ML0220F30UPE7D
[root@vmserver mapper]# chkconfig multipathd on

Otro inconveniente es que las plantillas las carga por http de otro servidor, así que me plantee poner un servidor apache en el dom0, para ello agregue un repositorio de los que Oracle tiene como públicos. Al tener un apache en el mismo servicor ya puedo poner las plantillas que se descarguen desde Oracle en /var/www ahorrando tiempo de red. La configuración de un repositorio en el hipervisor no es recomendada pero recordemos que este es un entorno de prueba.

[root@vmserver yum.repos.d]# pwd
/etc/yum.repos.d
[root@vmserver yum.repos.d]# cat oul5_u7_base.repo
[ol5_u7_base]
name=Oracle Linux $releasever – U7 – $basearch – base
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL5/7/base/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
gpgcheck=1
enabled=1
[root@vmserver yum.repos.d]# yum list
[root@vmserver yum.repos.d]# yum install httpd
[root@vmserver yum.repos.d]# vi /etc/httpd/conf.d/welcome.conf

Y el problema final fue que al lanzar la consola de la máquina virtual desde el OVM entraba en un lazo infinito de descargar un archivo, para solucionarlo hay que ejecutar el archivo con javaws. En mi sistema de escritorio que es un Ubuntu fue hacer que lance  la descarga con /usr/bin/javaws, un proeblema relacionado fue la necesidad de tener el tightVNC instalado, en Ubuntu se instala el paquete xtightvnc.

En el mac tuve que instalar tigthVNC en su versión java y modificar el lanzador de la aplicación a

/usr/bin/java -jar /Users/fjandrade/tightvnc-jviewer.jar -host ${host} -port ${port}

Espero que sea de ayuda!

Migrar una máquina virtual Windows XP de VMWare a VirtualBox

Esto es bastante sencillo pero si no se sigue paso a paso puede ser complejo porqué tendremos que darnos contra el regedit o encontrarnos con que no tenemos conexión de red a la máquina.

Lo primero es lanzar la máquina virtual de Windows XP con VMWare y ya dentro, en el panel de control desinstalar los VMWare Tools.

Lo segundo e importante es descargar y dejar el driver de la tarjeta de red  Intel pro 1000 para XP dentro de la máquina virtual. Al parecer VMWare reemplaza los drivers para la controladora AMD que utiliza por defecto por lo que al enganchar la maquina al VirtualBox cambiamos el tipo; Windows XP no trae este controlador por defecto por ello hay que dejarlo dentro de la máquina virtual para después instalarlo.

El tercer paso es copiar/mover los archivos, lanzar el VirtualBox y crear una nueva máquina virtual cuando nos pida el disco le damos el archivo vmdk principal, si esta dividido en múltiples archivos es aquel que no lleva un número. En Settings/Características de la máquina virtual en la pestaña system/sistema activamos  IO APIC y nos aseguramos que el Chipset sea PIIX3. Finalmente en la red/network para la primera controlado abrimos el cuadro de dialogo avanzada/advanced y cambiamos el tipo de adaptador a Intel PRO/1000 MT Desktop.

Arrancamos la máquina virtual, instalamos el driver de la tarjeta de red y luego el VirtualBox Guess Additions y eso es todo.

 

VirtualBox 4.0.4 Interface Web en Linux (vboxweb phpvirtualbox CentOS 5.6)

Partimos de asumir que se tiene un VirtualBox instalado y ejecutando correctamente, también asumimos que se tiene en el mismo servidor Apache y PHP.

Para activar el acceso web en VirtualBox creamos un fichero /etc/default/virtualbox

[root@localhost ~]# cat /etc/default/virtualbox
VBOXWEB_USER=fjandrade

#VBOXWEB_PIDFILE=
VBOXWEB_HOST=127.0.0.1
VBOXWEB_PORT=18083
VBOXWEB_TIMEOUT=0
#VBOXWEB_CHECK_INTERVAL=5
#VBOXWEB_THREADS=100
#VBOXWEB_KEEPALIVE=100
#VBOXWEB_LOGFILE=/var/log/vbox/web
#INSTALL_DIR=/usr/lib/virtualbox
El usuario debe ser el mismo que vamos a emplear para iniciar las máquinas virtuales y tiene que pertenecer al grupo vboxusers, sobre todo tener en cuenta los permisos de archivo al declarar el usuario.
Una vez creado este archivo levantamos el servicio
[root@localhost ~]# /etc/init.d/vboxweb-service start
Starting VirtualBox web service                            [  OK  ]
finalmente descargamos phpvirtualbox de esta dirección http://code.google.com/p/phpvirtualbox/ y descomprimimos su contenido en el directorio del servidor web.
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
phpvirtualbox-4.0-5.zip
[root@localhost html]# unzip phpvirtualbox-4.0-5.zip
[root@localhost html]# ln -s phpvirtualbox-4.0-5 phpvirtualbox
[root@localhost html]# rm phpvirtualbox-4.0-5.zip
Finalmente copiamos y editamos el archivo de configuracion de phpvirtualbox
[root@localhost html]# cd phpvirtualbox
[root@localhost phpvirtualbox]# cp config.php-example config.php
[root@localhost phpvirtualbox]# vi config.php
Modificamos las lineas, con el usuario y la contraseña del sistema operativo que emplearemos principalmente en la gestión de las máquinas virtuales.
/* Username / Password for system user that runs VirtualBox */
var $username = ‘fjandrade’;
var $password = ‘XXXXX’;
Finalmente podremos acceder a la interface web en:
http://servidor/phpvirtualbox
El usuario y contraseña predefinidos son admin/admin.

Guia de Instalación Oracle 11gR2 con ASM en VirtualBox

He escrito una pequeña guia de instalación de Oracle 11gR2 con ASM (Oracle Restart /Grid Infraestructure) y Virtualbox 4.04 que se encuentra en este enlace:

http://www.fjandrade.com/Download/Instalacion_Oracle11g_ASM_OUL.pdf

Como fue escrito para la Comunidad Oracle Hispana existen dos foros abiertos con preguntas, si tienen alguna duda puede que ya este respondida allí.

http://comunidadoraclehispana.ning.com/forum/topics/instalando-oracle-virtual-box

http://comunidadoraclehispana.ning.com/forum/topics/instalando-oracle-database-11g

El tutorial requiere unos retoques, espero trabajar en ello pronto.

Saludos y espero que sea de ayuda.

Marca de Agua en proceso por lotes (mogrify)

Este es uno de esos posts que hago para tenerlos a mano. Para realizar cualquiera de estas tareas es necesario tener instalado imagemagick, y exiftool . En ubuntu instalar lo necesario es tan fácil como darle al aptitude.

#sudo aptitude install imagemagick
#sudo aptitude install libimage-exiftool-perl

Exiftool sirve para modificar la información EXIF de una foto, pero también para obtener datos desde consola dela misma, así:

exiftool imagen.jpg

Para procesar las fotos primero mogrify para cambiarlas de tamaño al 50%, de 12MP  a 6MP está bastante bien, además que en muchos sitios no se pueden subir fotos de más de 5MB.

mogrify -resize 50% *.jpg

Luego puedo pasarle un scrip de lomografia para el gimp, hay que tener cuidado con hacer una copia de los originales porque este proceso por lotes los borra.

gimp -i -b ‘(elsamuko-lomo-batch “*.jpg” 1.5 10 10 0.8 5 1 3 128 0 FALSE FALSE TRUE FALSE 0 0 115)’ -b ‘(gimp-quit 0)’

El script original, así como más información de él en esta web,  el scrip es fantástico. Tiene que estar previamente instalado en GIMP, no viene con la distribución inicial del programa.

Finalmente creamos un png con fondo transparente con la información que queremos poner en el borde de la fotografía, yo uso esta imágen y luego con el gestor de proceso en lotes de imagemagick ( mogrify ) procesamos la marca de agua. Con el siguiente comando agrego un borde y la imagen como marca de agua en el borde superior derecho.

mogrify -border 15×15 -gravity southeast -geometry +15+15 -draw “image Over 0,0 300,120 ‘./watermark.png’”  *.jpg

y está listo para subir a cualquier web.

Ubuntu Netboot con PXE (o Instalar Ubuntu por red sin CD).

Esto aplica a la versión 9.10 que es la que estoy usando en este momento. El problema es simple: tengo un aula donde algunos CDROMs no terminan de funcionar ( o serán los CDs). En fin que he perdido la paciencia con esto y decidí montarla por red, la verdad es que es fácil… una vez que se sabe.

En un ordenador que ya tenga instalado ubuntu y con acceso a los repositorios instalamos dhcp, tftpf y el servidor apache.

sudo aptitude install tftpd-hpa
sudo aptitude install dhcp3-server
sudo aptitude install apache2

editamos el archivo /etc/default/tftpd-hpa y cambiamos la línea de RUN_DAEMON por yes, si queremos podemos cambiar el directorio de servicio de tftpd.

#Defaults for tftpd-hpa
RUN_DAEMON=”yes”
OPTIONS=”-l -s /tftpboot”

Hay un pequeño bug si cambias el directorio de destino, tendrás que quitar la linea que hace referencia al servicio por inet en /etc/inetd.conf.

Con el paso anterior esta listo el tftp luego necesitaremom dhcp. Editamos el archivo  /etc/dhcp3/dhcpd.conf. Y al final creamos una nueva subred… sé que esto se puede hacer mejor y espero estudiarlo con más detalle.

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
filename “pxelinux.0″;
next-server 192.168.1.1;
host laptop {
hardware ethernet 00:aa:00:aa:00:aa;
fixed-address 192.168.1.11;
}
}

Los servicios se levantan y bajan de /etc/rc.d/init.d/

sudo /etc/init.d/dhcp3-server stop
sudo /etc/init.d/dhcp3-server stop
sudo /etc/init.d/dhcp3-server stop
sudo /etc/init.d/dhcp3-server stop

Si existe algún problema se dará durante el inicio del servicio, para comprobar que el tftpd-hpa está arriba podemos hacer un “ps aux | grep tftp”. Si el servidor dhcp3 no se puede levantar pues se mira en el syslog como dirá el mensaje de error “tail /var/log/syslog”. Yo tuve un pequeño problema  ya que mi ordenador tiene varias tarjetas de red, tuve que editar el archivo /etc/default/dhcp3-server y decile que utilice el eth0 para el dhcp.

INTERFACES=”eth0″

Listo, ahora el proceso. Cuando se inicie el servidor en el/la BIOS casi siempre existe una opción de inicio por red, si le damos a esa opción busca un servidor DHCP que le diga que hacer, en este caso le pasamos la direccion física (MAC en hardware ethernet) y el dhcp se encarga de darnos del servidor ( next-server ) el archivo de netboot (pxelinux.0). Y ya está, solo falta poner el software de netboot y luego el cd disponible via web para que se pueda realizar la instalación en remoto.

Descargamos el CD de instalación alternativo de Ubuntu ( el Alternate Install CD no el Desktop ): http://releases.ubuntu.com/karmic

Creamos un directorio, montamos la descarga y copiamos los archivos tanto al directorio del tft como al apache.

sudo mkdir /tmp/910Alt
sudo mount -o loop ubuntu-9.10-alternate-i386.iso /tmp/910Alt
cd /tmp/910Alt
sudo cp -r /tmp/910Alt/install/netboot/* /tftpboot/
sudo mkdir /var/www/910Alt
sudo cp /tmp/910Alt/* /var/www/910Alt

Si todo va bien cuando lancemos la instalación por red se nos presentara una pantalla de instalación, seguimos todos los pasos hasta el final cuando nos pregunte por el mirror para descargar los paquetes escogemos la primera opción y le damos la direccion del servidor y luego la cadena 910Alt. Asi 192.168.1.1, directorio (quitamos ubuntu) y ponemos 910Alt. Como proxy lo dejamos en blanco.

Una vez finalizada la instalación es mejor quitar las referencias en el /etc/apt/sources.list al servidor porque solo da problemas y es mejor establecer la descarga desde internet, si no se dispone de mucho ancho de banda o son muchos ordenadores y se quiere optimar el uso del canal se puede utilizar apt-cacher que me ha dado muy buen resultado y su configuración es mínima.

Este metodo de instalación también me ha servido para darle nueva vida a un portátil con unos años encima, ahora tiene una instalación mínima y un web browser.

Saludos

FJA

Enlaces Utilizados:
http://javcasta.wordpress.com/2009/11/18/linux-ubuntu-9-10-instalacion-de-un-servidor-tftp/
http://linuxadministration.us/2009/11/16/ubuntu-9-10-pxe-boot/
https://wiki.koeln.ccc.de/index.php/Ubuntu_PXE_Install
http://syslinux.zytor.com/wiki/index.php/PXELINUX
https://help.ubuntu.com/community/Installation/Netboot
https://bugs.launchpad.net/ubuntu/+source/tftp-hpa/+bug/227881
http://ubuntuforums.org/archive/index.php/t-1112209.html