8 jul 2009

Oracle Gridcontrol Agent y HP-UX

Durante la implantación de los agentes de GridControl (10.2.0.5) para HP-UX, se genera un script que participa de la secuencia de inicio y apagado del servidor.

Este script hace una llamada al script agentstup, el cual asume ciertas cosas que no son correctas en HP-UX, al parecer fue desarrollado en Linux y no se tomaron las precauciones necesarias para validar que funcionara en un ambiente HP-UX que no necesariamente tiene utilitarios de Linux instalados, como sudo o bash.

Luego de reiniciar el servidor, teniendo ya el agente instalado, notarán que aparece un mensaje diciendo que falló un servicio y debemos revisar /etc/rc.log. Al revisarlo, notaremos que el script de inicialización de los agentes de gridcontrol no se ejecutó con éxito.

Para reparar el script hay que hacer los siguientes cambios.

- Ir al ORACLE_HOME del agente, por ejemplo: /u01/app/oracle/product/11.1.0/agent10g
- Luego entrar al directorio install/unix/scripts
- Copiar el archivo agentstup (cp agentstup agentstup.orig)
- Realizar las siguientes ediciones:

* En la línea 7, cambiar
executingUser=$USER
por
executingUser=$LOGNAME


Puesto que el script es llamado desde /sbin/init.d/gcstartup vía "su", el usuario que está ejecutando el script no es almacenado en la variable $USER

* En la línea 8, cambiar
SU=/usr/local/bin/sudo

por
SU=/usr/bin/su


En HP-UX, "sudo" no es instalado por default, para tenerlo disponible se debe instalar HP-UX RBAC (Role-Based Access Control)

* En las líneas 20 y 27, cambiar
if [ $executingUser = $installUser ] ; then

por
if [ "$executingUser" = "$installUser" ] ; then


Sin encerrar las variables, no se efectua la comparación de forma efectiva.

* En la línea 23, cambiar
$SU -u $installUser $ORACLE_HOME/bin/emctl start agent

por
$SU - $installUser -c "$ORACLE_HOME/bin/emctl start agent"


De esta forma, utilizamos el comando "su" directamente, de forma análoga, se debe hacer el cambio en la línea 30, pero esta vez el parámetro será "stop".

Para probarlo ejecuten /sbin/init.d/gcstartup start o /sbin/init.d/gcstartup stop

Con esto, ahora tendremos un agente funcional luego del reinicio de los servidores.

No hay comentarios:

Publicar un comentario