Estructura de Proyecto Node-RED

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de los siguientes archivos en un proyecto Node-RED personalizado contiene la lógica y funcionalidad de un nodo?

  • Un archivo con extensión `.js` (correct)
  • Un archivo con extensión `.html`
  • Un archivo `Dockerfile`
  • Un archivo `settings_instance.js`

¿Cuál es el propósito principal del archivo Dockerfile en un proyecto de Node-RED personalizado?

  • Automatizar los commits y pushes a un repositorio Git.
  • Gestionar la configuración personalizada de Node-RED, incluyendo seguridad y puertos.
  • Contener funciones de utilidad para el manejo de logs.
  • Definir cómo se construye la imagen de Node-RED dentro de un contenedor Docker. (correct)

¿Qué tarea realiza el script git-sync.sh en un proyecto Node-RED?

  • Automatiza la creación de commits y la subida de cambios a un repositorio Git.
  • Ajusta la configuración específica de Node-RED en un entorno determinado.
  • Clona y sincroniza un repositorio Git con un directorio en el contenedor de Node-RED. (correct)
  • Define la configuración de los logs para la depuración del sistema.

¿Cuál es la función del archivo settings_instance.js en un proyecto Node-RED?

<p>Contiene la configuración personalizada de Node-RED, ajustando su comportamiento en entornos específicos. (C)</p> Signup and view all the answers

¿Qué propósito tiene la carpeta custom-nodes dentro de la estructura de un proyecto Node-RED personalizado?

<p>Organizar los nodos personalizados por categoría, conteniendo los archivos <code>.js</code> y <code>.html</code> de cada nodo. (C)</p> Signup and view all the answers

¿Cuál de las siguientes dependencias instaladas por el Dockerfile se utiliza para manejar la autenticación con Azure AD?

<p><code>jsonwebtoken</code> (D)</p> Signup and view all the answers

¿Qué función realiza la directiva COPY en un Dockerfile?

<p>Copia archivos y directorios desde la máquina del desarrollador al sistema de archivos del contenedor. (A)</p> Signup and view all the answers

¿Qué hace el script commit-push.sh con el archivo flows.json?

<p>Lo sincroniza con un repositorio Git, asegurando que los flujos se actualicen automáticamente. (D)</p> Signup and view all the answers

¿Qué función tiene la variable CHECK_INTERVAL en el script commit-push.sh?

<p>Establece el tiempo en segundos entre cada verificación de cambios en el archivo <code>flows.json</code>. (A)</p> Signup and view all the answers

¿Qué comandos de Git se utilizan dentro del script git-sync.sh para actualizar un repositorio existente?

<p><code>git fetch</code>, <code>git pull</code> (A)</p> Signup and view all the answers

¿Cuál es el propósito del comando mkdir -p /data/custom-nodes en el Dockerfile?

<p>Crear un directorio para almacenar los nodos personalizados dentro del contenedor. (B)</p> Signup and view all the answers

¿Qué ocurre si el script git-sync.sh detecta que el directorio del repositorio existe, pero no contiene la carpeta .git?

<p>Elimina el directorio y lo vuelve a crear. (D)</p> Signup and view all the answers

¿Con qué frecuencia el script commit-push.sh monitorea los cambios en el archivo flows.json por defecto?

<p>Cada 30 segundos (B)</p> Signup and view all the answers

¿Cuál es el propósito del comando git reset --hard origin/main dentro del script commit-push.sh?

<p>Forzar la sincronización con la versión más reciente del repositorio remoto. (D)</p> Signup and view all the answers

¿Qué garantiza la directiva ENTRYPOINT en el Dockerfile?

<p>Que Node-RED se ejecute con la configuración adecuada y que se sincronicen los cambios con Git. (A)</p> Signup and view all the answers

¿Para qué se utilizan las librerías winston y winston-daily-rotate-file que se instalan en el Dockerfile?

<p>Para manejar los logs del sistema, permitiendo la rotación diaria de los archivos de log. (C)</p> Signup and view all the answers

¿Qué variable en el script git-sync.sh define la URL del repositorio Git en Azure DevOps?

<p><code>REPO_URL</code> (C)</p> Signup and view all the answers

Dentro del script commit-push.sh, ¿qué comandos se utilizan para configurar el usuario de Git si aún no está definido?

<p><code>git config --global user.email &lt;email&gt;</code> y <code>git config --global user.name &lt;nombre&gt;</code> (D)</p> Signup and view all the answers

¿Qué garantiza el uso de git clean -fd en el script git-sync.sh?

<p>Que se eliminen los archivos y directorios que no están rastreados por Git. (D)</p> Signup and view all the answers

¿Cuál es el principal beneficio de sincronizar el archivo flows.json con un repositorio Git?

<p>Mantener una copia de seguridad automática de los flujos de Node-RED y asegurar su actualización en el entorno de ejecución. (A)</p> Signup and view all the answers

¿Qué función tiene la variable FLOW_FILE en el script commit-push.sh?

<p>Define la ruta al archivo de flujos que está en ejecución en Node-RED. (A)</p> Signup and view all the answers

¿Qué define el archivo con extensión .html en la carpeta de un nodo personalizado?

<p>La interfaz gráfica del nodo. (A)</p> Signup and view all the answers

¿Qué ocurre si el archivo flows.json no se encuentra en el repositorio al inicio del script commit-push.sh?

<p>El script utiliza el archivo de flujos predeterminado de Node-RED. (B)</p> Signup and view all the answers

¿Qué función cumple el comando EXPOSE 1880 en el Dockerfile?

<p>Expone el puerto 1880 para permitir el acceso a la interfaz de Node-RED. (C)</p> Signup and view all the answers

¿Qué tipo de sincronización utiliza el comando git pull origin main --rebase en el script git-sync.sh?

<p>Rebase (C)</p> Signup and view all the answers

¿Qué se instala durante el proceso de npm install en el Dockerfile?

<p>Las dependencias específicas de cada nodo personalizado, así como librerías esenciales para logs y autenticación. (D)</p> Signup and view all the answers

¿Qué se configura al ejecutar el comando git config --global user.email "" y git config --global user.name "nodered-appsvc" dentro del script commit-push.sh?

<p>El usuario y correo electrónico que se utilizarán para realizar los commits. (C)</p> Signup and view all the answers

Si el script git-sync.sh encuentra que el directorio REPO_DIR existe, pero está vacío, ¿qué acción realiza?

<p>Elimina el directorio y clona el repositorio. (B)</p> Signup and view all the answers

¿Qué tipo de archivo es commit-push.sh?

<p>Script de Bash (A)</p> Signup and view all the answers

En el contexto del Dockerfile, ¿qué significa la instrucción WORKDIR /data?

<p>Establece <code>/data</code> como el directorio de trabajo, donde Node-RED guarda sus configuraciones y flujos. (C)</p> Signup and view all the answers

¿Cuál es la principal función del archivo loggerUtils.js?

<p>Contener funciones reutilizables para manejar logs de forma estructurada. (B)</p> Signup and view all the answers

¿Cuál de los siguientes comandos se utiliza en el script commit-push.sh para añadir los cambios del archivo flows.json al área de preparación (staging area) de Git?

<p>git add (A)</p> Signup and view all the answers

¿Qué archivo se utiliza para definir cómo se crean los logs en un proyecto Node-RED?

<p>loggers.js (C)</p> Signup and view all the answers

¿Qué rama del repositorio Git se sincroniza por defecto con el script git-sync.sh?

<p>main (A)</p> Signup and view all the answers

¿Cuál es el propósito de la instrucción exec node-red --userDir /data --flowFile /data/flows.json en la directiva ENTRYPOINT del Dockerfile?

<p>Iniciar el servicio Node-RED utilizando la configuración y los flujos personalizados ubicados en <code>/data</code>. (B)</p> Signup and view all the answers

¿Qué ocurre cuando se ejecuta el comando git fetch origin main dentro del script commit-push.sh?

<p>Se descargan los últimos cambios del repositorio remoto sin fusionarlos con la rama local. (A)</p> Signup and view all the answers

Flashcards

Carpeta custom-nodes

Contiene los nodos personalizados organizados por secciones, subcarpetas para cada nodo, y archivos JavaScript y HTML.

Dockerfile

Define cómo se construye la imagen de Node-RED personalizada dentro de un contenedor Docker.

loggers.js

Define cómo se generan los logs dentro del sistema para depuración y monitoreo.

loggerUtils.js

Contiene funciones reutilizables para manejar logs de forma estructurada.

Signup and view all the flashcards

settings_instance.js

Archivo de configuración personalizada de Node-RED, permite ajustar seguridad, puertos, logs y autenticación.

Signup and view all the flashcards

commit-push.sh

Script para automatizar commits y push a Git, sincronizando el archivo flows.json.

Signup and view all the flashcards

git-sync.sh

Script para clonar y sincronizar automáticamente un repositorio Git con un directorio en el contenedor de Node-RED.

Signup and view all the flashcards

Archivo .js (nodo personalizado)

Contiene la lógica y funcionalidad del nodo personalizado.

Signup and view all the flashcards

Archivo .html (nodo personalizado)

Contiene la interfaz gráfica del nodo personalizado.

Signup and view all the flashcards

WORKDIR /data (Dockerfile)

Define el directorio de trabajo como /data, donde Node-RED almacena configuraciones y flujos.

Signup and view all the flashcards

RUN mkdir -p (Dockerfile)

Crea las carpetas /data/custom-nodes (nodos personalizados) y /data/node_modules (módulos de Node.js).

Signup and view all the flashcards

COPY (Dockerfile)

Copia los nodos personalizados y archivos de logs a las carpetas correspondientes en el contenedor.

Signup and view all the flashcards

RUN npm install (Dockerfile)

Instala dependencias específicas de cada nodo personalizado usando npm install.

Signup and view all the flashcards

Instalación de Winston, express-jwt

Instala librerías esenciales para logs (winston) y autenticación (express-jwt, jwks-rsa).

Signup and view all the flashcards

Copia de settings_instance.js

Copia el archivo settings_instance.js, permitiendo una configuración personalizada de Node-RED.

Signup and view all the flashcards

COPY git-sync.sh, commit-push.sh

Copia scripts git-sync.sh (sincroniza) y commit-push.sh (automatiza commits).

Signup and view all the flashcards

EXPOSE 1880 (Dockerfile)

Expone el puerto 1880 para acceder a la interfaz de Node-RED.

Signup and view all the flashcards

ENTRYPOINT (Dockerfile)

Sincroniza con Git, sube cambios automáticamente y arranca Node-RED con configuración personalizada.

Signup and view all the flashcards

Verificación de flows.json (commit-push.sh)

Asegura que el repositorio está actualizado y copia flows.json si existe, usando el archivo de flujos por defecto si no.

Signup and view all the flashcards

Monitoreo de cambios (commit-push.sh)

Monitorea cambios en flows.json cada 30 segundos, sincronizando automáticamente con Git.

Signup and view all the flashcards

Sincronización del repositorio (commit-push.sh)

Actualiza el repositorio con la última versión y detecta cambios en flows.json.

Signup and view all the flashcards

Configuración de Git (commit-push.sh)

Configura usuario Git, agrega cambios, hace commit y push al repositorio remoto.

Signup and view all the flashcards

Verificación del repositorio (git-sync.sh)

Verifica si el directorio del repositorio existe y está correctamente clonado.

Signup and view all the flashcards

Actualización del repositorio (git-sync.sh)

Actualiza el repositorio si ya existe, asegurando la última versión desde Azure DevOps.

Signup and view all the flashcards

Clonación del repositorio (git-sync.sh)

Clona el repositorio desde Azure DevOps si no existe, garantizando la disponibilidad del código.

Signup and view all the flashcards

Study Notes

Estructura General del Proyecto Node-RED

  • Un proyecto personalizado de Node-RED se organiza con archivos y carpetas esenciales para la gestión de nodos, configuración, logs y automatización.
  • La carpeta custom-nodes alberga los nodos personalizados, clasificados por categorías y secciones.
  • Dentro de cada sección, las carpetas de nodos contienen archivos JavaScript (.js) para la lógica y HTML (.html) para la interfaz gráfica.
  • El Dockerfile contiene la configuración específica para la imagen de Docker.
  • loggers.js gestiona la configuración de logs del sistema.
  • loggerUtils.js proporciona funciones de utilidad para la gestión y estructuración de logs.
  • settings_instance.js ofrece una configuración personalizada para la instancia de Node-RED.
  • El script commit-push.sh automatiza los commits y push a un repositorio Git.
  • El script git-sync.sh sincroniza el repositorio Git con el entorno de Node-RED.

Carpeta /custom-nodes – Desarrollo de Nodos Personalizados

  • Esta carpeta organiza los nodos personalizados en subcarpetas por categoría.
  • Cada nodo incluye dos archivos principales:
  • Un archivo .js que contiene la lógica y la funcionalidad del nodo.
  • Un archivo .html que define la interfaz gráfica del nodo.

Dockerfile – Configuración de la Imagen de Docker

  • Este archivo define la construcción de una imagen de Node-RED personalizada dentro de un contenedor Docker.
  • Se usa la imagen oficial de Node-RED más reciente como base: FROM --platform=linux/amd64 nodered/node-red:latest.
  • El directorio de trabajo se establece en /data, donde Node-RED almacena configuraciones y flujos: WORKDIR /data.
  • Se crean los directorios /data/custom-nodes y /data/node_modules para nodos personalizados y módulos de Node.js: RUN mkdir -p /data/custom-nodes y RUN mkdir -p /data/node_modules.
  • Se copian los nodos personalizados, archivos de logs y utilidades a sus respectivas carpetas en el contenedor: COPY custom-nodes /data/custom-nodes, COPY logger.js /data/logger.js, y COPY loggerUtils.js /data/loggerUtils.js.
  • Se instalan las dependencias específicas de cada nodo personalizado usando npm install en cada subcarpeta dentro de custom-nodes.
  • Se instalan dependencias globales como winston, winston-daily-rotate-file, express-jwt, jwks-rsa, jsonwebtoken, y passport-azure-ad para logs y autenticación.
  • Se copia el archivo settings_instance.js a /data/settings.js para aplicar una configuración personalizada a Node-RED, lo que permite definir seguridad, puertos, logs y autenticación.
  • Se copian los scripts git-sync.sh y commit-push.sh a /data/ para automatizar la sincronización con Git.
  • Se expone el puerto 1880: EXPOSE 1880.
  • El comando de inicio ejecuta scripts de sincronización con Git y arranca Node-RED con la configuración personalizada: ENTRYPOINT ["bash", "-c", "bash /data/git-sync.sh && bash /data/commit-push.sh & exec node-red --userDir /data --flowFile /data/flows.json"].

loggers.js y loggerUtils.js – Configuración de los Logs

  • loggers.js define la generación de logs para depuración y monitoreo del sistema.
  • loggerUtils.js contiene funciones reutilizables para manejar logs de manera estructurada.

settings_instance.js – Configuración de Node-RED

  • Este archivo personaliza la configuración de Node-RED en entornos específicos.

commit-push.sh – Automatización de Commits y Push

  • Este script sincroniza el archivo flows.json de Node-RED con un repositorio Git.
  • Las variables clave incluyen:
  • FLOW_FILE: Ruta del archivo de flujos en ejecución en Node-RED.
  • REPO_FLOW_FILE: Archivo flows.json dentro del repositorio Git.
  • REPO_DIR: Ruta del repositorio Git en Node-RED.
  • CHECK_INTERVAL: Intervalo de 30 segundos entre cada verificación.
  • Si flows.json existe en el repositorio, se copia a /data/flows.json.
  • Se monitorean continuamente los cambios en flows.json cada 30 segundos.
  • El script descarga y sincroniza el repositorio con la última versión antes de aplicar cambios.
  • Utiliza git add, git commit, y git push para subir automáticamente los cambios detectados en Node-RED al repositorio Git.

git-sync.sh – Sincronización Automática con Git

  • Este script clona y sincroniza automáticamente un repositorio Git de Azure DevOps con un directorio en el contenedor de Node-RED.
  • Las variables clave incluyen:
  • REPO_URL: URL del repositorio Git en Azure DevOps.
  • REPO_DIR: Carpeta donde se clonará el repositorio en el contenedor.
  • FLOW_FILE: Ubicación del archivo flows.json dentro del repositorio.
  • BRANCH: Rama de Git que se va a sincronizar (main).
  • REMOTE_NAME: Nombre del repositorio remoto (origin).
  • Verifica si el repositorio ya está clonado; si no lo está, lo clona desde Azure DevOps.
  • Si el repositorio ya existe, lo actualiza con git pull.
  • Si el directorio existe pero no contiene .git/, se elimina y se vuelve a crear para evitar errores.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

Historia y Arquitectura de Node-RED
10 questions
Fundamentos de Node-RED: Tipos de Nodos
10 questions
Fundamentos de Node-RED: Nodos y Mensajes
11 questions
Autenticación en Node-RED con Azure AD
15 questions
Use Quizgecko on...
Browser
Browser