Introduccion
Cuando la configuracion de un sistema de busqueda se gestiona manualmente, resulta dificil reproducir los entornos y aumenta el riesgo de errores de configuracion. Adoptando practicas modernas de DevOps, gestionemos y automaticemos tambien la infraestructura de busqueda como codigo.
En este articulo se presenta un enfoque para gestionar las configuraciones de Fess como codigo y automatizar los despliegues.
Publico objetivo
Personas que desean automatizar las operaciones del sistema de busqueda
Personas que desean aplicar metodos DevOps/IaC a la infraestructura de busqueda
Personas con conocimientos basicos de Docker y CI/CD
Aplicacion de Infrastructure as Code
Los siguientes elementos se gestionan como «codigo» para los entornos de Fess.
Definicion de entornos con Docker Compose
Archivo Docker Compose para produccion
Ampliamos la configuracion basica utilizada en la Parte 2 para definir una configuracion adecuada para entornos de produccion.
services:
fess:
image: ghcr.io/codelibs/fess:15.5.1
environment:
- SEARCH_ENGINE_HTTP_URL=http://opensearch:9200
- FESS_DICTIONARY_PATH=/usr/share/opensearch/config/dictionary/
ports:
- "8080:8080"
depends_on:
opensearch:
condition: service_healthy
restart: unless-stopped
opensearch:
image: ghcr.io/codelibs/fess-opensearch:3.6.0
environment:
- discovery.type=single-node
- OPENSEARCH_JAVA_OPTS=-Xmx4g -Xms4g
- DISABLE_INSTALL_DEMO_CONFIG=true
- DISABLE_SECURITY_PLUGIN=true
- FESS_DICTIONARY_PATH=/usr/share/opensearch/config/dictionary/
volumes:
- opensearch-data:/usr/share/opensearch/data
- opensearch-dictionary:/usr/share/opensearch/config/dictionary
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 90s
restart: unless-stopped
volumes:
opensearch-data:
opensearch-dictionary:
Los puntos clave son los siguientes.
Definicion del health check: Fess se inicia solo cuando OpenSearch esta listo
Persistencia de volumenes: Los datos se mantienen de forma permanente
Politica de reinicio: Recuperacion automatica ante fallos
Configuracion explicita del heap de la JVM
Automatizacion de la configuracion con la API de administracion
Mediante el uso de la API de administracion de Fess, puede gestionar las configuraciones de forma programatica sin utilizar la interfaz grafica.
Exportar configuracion
Exporte la configuracion actual de Fess y guardela como codigo.
Puede exportar desde la consola de administracion en [Informacion del sistema] > [Respaldo]. Tambien es posible exportar mediante scripts utilizando la API de administracion.
Importar configuracion
Aplique la configuracion a un nuevo entorno de Fess utilizando los archivos de configuracion guardados. Esto facilita la reconstruccion o replicacion de entornos.
Uso de la CLI fessctl
fessctl es una herramienta de linea de comandos para Fess. Muchas de las operaciones que se pueden realizar en la consola de administracion tambien se pueden ejecutar desde la linea de comandos.
Operaciones principales
Crear, actualizar y eliminar configuraciones de rastreo (web, sistema de archivos, almacen de datos)
Ejecutar trabajos del planificador
Gestionar usuarios, roles y grupos
Gestionar configuraciones de busqueda como key match, etiquetas y boosts
Mediante el uso de la CLI, puede convertir los cambios de configuracion en scripts e integrarlos en pipelines CI/CD.
Construccion de pipelines CI/CD
Flujo de trabajo para cambios de configuracion
Gestione los cambios de configuracion del sistema de busqueda con el siguiente flujo de trabajo.
Cambio: Modificar los archivos de configuracion y gestionarlos en una rama de Git
Revision: Revisar los cambios mediante pull requests
Prueba: Verificar el comportamiento en un entorno de staging
Despliegue: Aplicar la configuracion al entorno de produccion
Ejemplo de automatizacion con GitHub Actions
Este es un ejemplo de aplicacion automatica de cambios al entorno de produccion cuando se fusionan cambios en los archivos de configuracion.
name: Deploy Fess Config
on:
push:
branches: [main]
paths:
- 'fess-config/**'
- 'dictionary/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Apply dictionary updates
run: |
# Transferir archivos de diccionario al servidor Fess
scp dictionary/* fess-server:/opt/fess/dictionary/
- name: Verify Fess health
run: |
# Verificar el estado operativo de Fess mediante la API de salud
curl -s https://fess.example.com/api/v1/health
Automatizacion de respaldos
Automaticemos tambien los respaldos periodicos.
Script de respaldo
Utilice cron o las funciones de programacion de CI/CD para realizar respaldos periodicos.
#!/bin/bash
set -euo pipefail
BACKUP_DIR="/backup/fess/$(date +%Y%m%d)"
mkdir -p "${BACKUP_DIR}"
# Obtener la lista de archivos de respaldo de Fess
curl -s -o "${BACKUP_DIR}/fess-backup-files.json" \
-H "Authorization: Bearer ${FESS_TOKEN}" \
"https://fess.example.com/api/admin/backup/files"
# Descargar datos de configuracion (ejemplo: fess_config.bulk)
curl -s -o "${BACKUP_DIR}/fess_config.bulk" \
-H "Authorization: Bearer ${FESS_TOKEN}" \
"https://fess.example.com/api/admin/backup/file/fess_config.bulk"
# Eliminar respaldos antiguos (mas de 30 dias)
find /backup/fess -type d -mtime +30 -exec rm -rf {} +
echo "Backup completed: ${BACKUP_DIR}"
Procedimiento de reconstruccion del entorno
Documente el procedimiento para reconstruir completamente un entorno para la recuperacion ante desastres o la creacion de entornos de prueba.
Iniciar los contenedores con Docker Compose
Esperar hasta que el health check de OpenSearch devuelva green/yellow
Importar la configuracion de Fess (mediante la API de administracion o la funcion de restauracion)
Colocar los archivos de diccionario
Ejecutar los trabajos de rastreo
Verificar el funcionamiento (pruebas de busqueda)
Al convertir este procedimiento en un script, puede reconstruir los entornos rapidamente.
Resumen
En este articulo se presento un enfoque para gestionar la infraestructura de busqueda de Fess utilizando practicas de DevOps.
Codificacion de las definiciones de entorno con Docker Compose
Automatizacion de la configuracion con la API de administracion y fessctl
Automatizacion del despliegue de cambios de configuracion con pipelines CI/CD
Automatizacion de respaldos y procedimientos de reconstruccion de entornos
Evolucione las operaciones de su infraestructura de busqueda de «leer manuales y configurar manualmente» a «ejecutar codigo y desplegar automaticamente».
En el proximo articulo se tratara la extension de Fess mediante el desarrollo de plugins.