Aislamiento
Rudel es un sistema de superposición seleccionado por solicitud. Una solicitud seleccionada usa las tablas de base de datos y los archivos de tema del sandbox, pero sigue ejecutándose mediante la instalación de WordPress del host.
Aislado por sandbox
Tablas de WordPress
Cada sandbox recibe un prefijo de tabla generado: el prefijo del host más los primeros siete caracteres hexadecimales del MD5 del ID del sandbox.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
Rudel cambia el prefijo de tabla de WordPress antes de que WordPress termine de iniciarse, así que cada consulta de una solicitud de sandbox lee y escribe las copias del sandbox.
Usuarios
Las tablas users y usermeta se clonan junto con las demás. Al crearse, un sandbox comienza con los usuarios y las contraseñas del host; a partir de entonces, los usuarios creados, modificados o eliminados en el sandbox no afectan al host, y los cambios del host no llegan al sandbox.
Archivos del tema activo
El tema seleccionado se copia en el directorio del sandbox:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Si el tema es un tema hijo, Rudel también copia el tema principal para mantener válida la relación entre plantillas. Un sandbox siempre sirve el tema registrado al crearse; cambiar de tema dentro del sandbox no tiene efecto.
Compartido con el host
- Núcleo de WordPress
- Archivos de plugins
- Archivos multimedia subidos
Un plugin instalado o actualizado en el host también se instala o actualiza en cada sandbox. Los plugins activos se guardan en la tabla de opciones, así que su estado de activación es propio de cada sandbox. Los archivos subidos desde un sandbox se guardan en el directorio de cargas del host. Esto agiliza la creación de sandboxes y evita reemplazar WP_CONTENT_DIR globalmente.
Mantenga Rudel activo en cada sandbox. El bloqueo del correo y la superposición del tema se ejecutan desde el plugin; además, desactivarlo mientras hay un sandbox seleccionado elimina la línea de arranque del wp-config.php compartido, lo que desactiva la selección de sandbox en toda la instalación (problema n.º 13).
Seleccionar un sandbox
Las solicitudes de HTTP seleccionan un sandbox mediante:
- el encabezado
X-Rudel-Environment(alias heredadoX-Rudel-Sandbox) - la cookie
rudel_environment(alias heredadorudel_sandbox)
Rudel nunca establece ni borra la cookie. Elimínela para volver al host; el elemento Sandbox de la barra de administración enlaza al URL del host, pero deja la cookie intacta (problema n.º 10).
Los comandos WP-CLI seleccionan un sandbox mediante:
- la variable de entorno
RUDEL_ENVIRONMENT - un
--urlcuyo host empieza por el ID del sandbox, como--url=http://alpha-3be7.example.test
El selector no está autenticado. Cualquier cliente que pueda acceder al sitio y envíe un ID de sandbox válido obtiene ese sandbox, y los ID de sandbox (nombre más cuatro caracteres hexadecimales) son fáciles de adivinar. No considere la selección de sandbox un límite de control de acceso; proteja el host público en el servidor web o a nivel de red.
Valores predeterminados de las solicitudes
Para una solicitud seleccionada, Rudel:
- bloquea el correo saliente mediante un filtro
pre_wp_mail - establece
WP_TEMP_DIRen el directoriotmpdel sandbox - establece
WP_CACHE_KEY_SALTen un valor específico del sandbox para que las cachés de objetos persistentes mantengan separadas las claves de cada sandbox - ofrece registro de
WP_DEBUGen el sandboxdebug.logy claves y sales de autenticación derivadas del ID del sandbox
El arranque define cada una de estas constantes solo si wp-config.php aún no la ha definido. Una instalación estándar de wp-config.php define WP_DEBUG y todas las claves y sales; por eso, en una instalación así, las solicitudes de sandbox usan el ajuste de depuración y las claves y sales del host (problema n.º 4). Como los usuarios también se clonan, una cookie de inicio de sesión del host puede ser válida en un sandbox.
Metadatos de ejecución
Los metadatos de ejecución de Rudel permanecen en las tablas MySQL de WordPress del host:
wp_rudel_environments
wp_rudel_worktrees
Estas tablas son la fuente de verdad de Rudel. Los directorios de entorno contienen archivos y artefactos gestionados, no el estado del registro de ejecución.