Automatización de temas

Hola a todos, soy nuevo aquí :slight_smile:
Estoy ejecutando una versión Dockerizada de bitnami Discourse (la última) en un clúster de Kubernetes, realmente parece un gran proyecto. Sin embargo, me enfrento a un tipo de problema al intentar automatizar la instalación de un tema. Esencialmente, necesito construir, implementar, ejecutar y configurar esta imagen de Docker desde una CICD, para que todo esté listo en el primer inicio de sesión. En cuanto a las cosas de configuración, está la instalación del tema personalizado. Por lo que pude entender de varios foros y documentación, no hay una forma nativa de instalarlo programáticamente, solo encontré una guía de clic a clic (¡corríjanme si me equivoco!).

Mi primera idea fue agregar los archivos del tema “manualmente” en el sistema de archivos de Discourse a través de k8s, pero, según lo que puedo ver, Discourse administra sus archivos de una manera extraña, renombrándolos según su propia lógica interna y haciendo imposible predecirlo.

Investigando más a fondo, encontré esta genial CLI llamada discourse_theme, el problema aquí es que aún necesitaría generar una clave API de Discourse primero, de lo contrario no puede funcionar (de nuevo… ¡corríjanme si me equivoco!).
Así que, al final, tengo un par de preguntas:
Primero, ¿hay una forma diferente/nativa de instalar programáticamente un tema en Discourse que me haya perdido?
Y por otro lado, ¿hay alguna forma de obtener una clave API de Discourse desde un script?
Y al final, ¿alguien conoce algún truco de Kubernetes para solucionar este tipo de problema?

Muchas gracias de antemano.

Saludos.

Eso es compatible cuando se utiliza nuestro método de instalación oficial: Install a Theme programatically

1 me gusta

Creo que la única solución es crear una imagen que incluya los plugins que deseas, enviarla a un repositorio de Docker, lanzarla con las variables de entorno apropiadas y, en algún momento, ver que la base de datos se migra y los activos se compilan y se envían a S3 la primera vez (al menos) que se ejecuta la imagen. Es posible que desees migrar una vez con SKIP_POST_DEPLOYMENT_MIGRATIONS activado mientras la imagen antigua se está ejecutando y luego nuevamente después de que la nueva imagen se haya lanzado y las antiguas se hayan apagado con SKIP_POST_DEPLOYMENT_MIGRATIONS desactivado o ejecutar la tarea db:ensure_post_migrations de rake.

Puedes ejecutar una tarea de rake en una de tus imágenes en ejecución, algo como

         rake api_key:create_master['descripción de la clave']

Lo anterior podría ser suficiente para que avances un poco más. He ejecutado instancias de Kubernetes para clientes en GCP y AWS en el pasado. Nunca estuve 100% satisfecho con cómo funcionaba (funcionaba perfectamente desde la perspectiva del cliente, simplemente no era muy elegante desde la mía, pero tampoco era tan ineficiente como para que me molestara en arreglarlo). No tengo mucho más que ofrecer aquí, pero no dudes en contactarme directamente si necesitas más ayuda.

1 me gusta