Core-Admin Variable Push para gestor de alojamientos -- importado de variables de entorno


#1

Índice

1. Introducción

Core-Admin Variable Push es una característica usada en conjunto con el gestor de alojamientos (#WebhostnigManagement) que permite al usuario de la web poder importar las declaraciones de variables de entorno localizadas en su .bash_profile dentro de la configuración Apache2 como declaraciones SetEnv (realizándose una conversión en el proceso export a SetEnv):

De esta manera:

  • Se pueden automatizar el deployment (push) importando e integrando las variables de desarrollo que generan entornos como Symphony, Cake, etc.

  • Se asegura que la configuración de variables es consistente: lo que hay en el .bash_profile se encuentra en la configuración Apache2.

  • Evita tener que activar la opción de configuración personalizada (que deshabilita muchas opciones de Core-Admin).

2. Qué soluciona Core-Admin Variable Push

Algunos de los problemas de automatizar el despliegue de código son:

  • La configuración de variables de entorno que indicarán que estamos en producción (por ejemplo APP_ENV=prod)

  • La mezcla de estas declaraciones con otras declaraciones o cómo se relacionan con motores de ejecución (php-fpm) o cómo interaccionan con Apache2 Mod-Rewrite

Más concretamente, Core-Admin Variable Push resuelve:

  • No tener que editar el .htaccess para incluir las variables

  • Es compatible con todos los métodos de ejecución (php-fpm, itk, etc)

  • Resuelve el problema REDIRECT_ del ModRewrite de manera sólida sin soluciones exóticas dependientes del contexto y otras variables que no se controlan fácilmente.

  • Para situaciones con muchas variables, facilita asegurar que todas las variables serán correctamente importadas y sincronizadas desde un único sitio (el .bash_profile habitualmente subido con un acceso ssh).

3. Cómo activarlo y cómo funciona

  1. Se asumen que el usuario que sube las variables tiene un acceso ssh o algún método para dejar el .bash_profile actualizado con las variables deseadas en el home de la web para actualizar (habitualmente /var/webs/dominio-de-la-web.com/.bash_profile).

  2. Ahora active la opción Core-Admin Variable Push accediendo a la opción enable_variable_push del sitio:

  3. Una vez hecho el punto anterior ya se habrán importado las variables declaradas. Ahora, cada vez que quiera reimportar, ejecute el siguiente comando con el usuario de la web:

    > /usr/sbin/crad-exports-conversor.pyc .bash_profile --push-variables

4. Cómo reimportar las variables manualmente desde el panel

Para eso, simplemente vuelva a editar la opción enable_variable_push como si fuera la primera vez, dejándola activada. Esto forzará un reimportado.

5. Cómo comprobar que las variables se están importando correctamente

Dispones de varias maneras de hacerlo:

  1. Puedes ejecutar el comando siguiente para mostrar las variables que serán importadas en el maestro del apache2:

    > crad-exports-conversor.pyc .bash_profile -o .htaccess
    # esto te mostrará las variables, su contenido y todo en formato Apache2 SetEnv

  2. Puedes también revisar directamente la declaración generada por core-admin para todo el sitio. Para ello necesitarás acceso root. Tras esto ejecuta:

    > less /etc/apache2/sites-enabled/dominio-del-sitio.com.conf

  3. Por último, también puedes usar el propio php para ver las variables. Crea un fichero variables.php en la raíz del sitio y visítalo después de añadir el siguiente contenido:

    <?php

    foreach ($_SERVER as $key => $value) {
    echo “$key => $value<br>”;
    }

6. Reparación de mediator (--repair)

Cuando la base de datos de crad-mediator (/etc/core-admin/crad-mediator.sql) se recrea o un comando se vuelve a registrar, el identificador interno (cmd_id) almacenado en la base de datos cambia, pero el fichero mediator (auth file) conserva el antiguo command-hash. Esto provoca el siguiente error al ejecutar el variable push:

ERROR: command error: Command wasn’t found. Unable to proceed

El síntoma visible para el usuario del alojamiento es que el comando crad-exports-conversor.pyc .bash_profile --push-variables deja de funcionar, a pesar de que la configuración en el panel es correcta.

Diagnóstico

Para confirmar que el problema es un desajuste de command-hash, se puede verificar con:

crad-mediator.pyc -l

Este comando muestra los comandos registrados y sus usuarios asociados. Si el cmd_id que aparece en la base de datos no coincide con el command-hash almacenado dentro del fichero .mediator, es necesario reparar.

Reparación de un fichero concreto

  1. Si se conoce la ruta exacta del fichero mediator afectado, se puede reparar de forma individual:

    crad-mediator.pyc --repair /var/webs/ejemplo.dominio.com/import-variables.variable-push.mediator

  2. Salida esperada:

    REPAIRING: /var/webs/ejemplo.dominio.com/import-variables.variable-push.mediator (user=ejemplodominiocom) command-hash mismatch: file=3e649829c042 db=5d0f600610c7
    REPAIRED: /var/webs/ejemplo.dominio.com/import-variables.variable-push.mediator (user=ejemplodominiocom)

Reparación global (todos los ficheros)

  1. En caso de que la base de datos se haya recreado completamente y haya múltiples alojamientos afectados, se pueden reparar todos los ficheros mediator registrados con un solo comando:

    crad-mediator.pyc --repair all

  2. Salida esperada:

    REPAIRING: /var/webs/sitio1.ejemplo.com/import-variables.variable-push.mediator (user=sitio1ejemplocom) command-hash mismatch: file=3e649829c042 db=5d0f600610c7
    REPAIRED: /var/webs/sitio1.ejemplo.com/import-variables.variable-push.mediator (user=sitio1ejemplocom)
    OK: /var/webs/sitio2.ejemplo.com/import-variables.variable-push.mediator (user=sitio2ejemplocom) already in sync (command-hash=a1b2c3d4e5f6)

    SUMMARY: 1 repaired, 1 already ok, 0 errors (total: 2)

El resumen final indica:

  • repaired: ficheros que tenían desajuste y fueron corregidos
  • already ok: ficheros que ya estaban sincronizados con la base de datos
  • errors: ficheros que no pudieron repararse (por ejemplo, si no existe el registro en la base de datos o hay un problema de permisos)

Verificación tras la reparación

Después de reparar, se recomienda:

  1. Ejecutar --repair all de nuevo para confirmar que todos los ficheros están en sync:

    crad-mediator.pyc --repair all

  2. Todos deberían aparecer como already in sync.

  3. Probar el variable push como el usuario del alojamiento:

    su - ejemplodominiocom -s /bin/bash
    /usr/sbin/crad-exports-conversor.pyc .bash_profile --push-variables --verbose

  4. El resultado esperado es:

    INFO: variable push command finished ok (status=0): INFO: hosting reloaded [ejemplo.dominio.com] : None

Notas

  • El comando --repair requiere permisos de root.
  • La reparación reescribe el fichero mediator con el cmd_id y password actuales de la base de datos, y restaura los permisos (0400) y propietario correctos.
  • Si un fichero mediator no existe en disco pero su registro sí está en la base de datos, --repair lo recrea automáticamente.