andrelohmann.nodesource
nodesource
Contenido
Usa este rol para instalar nodejs desde el repositorio nodesource en tu servidor ubuntu.
Requisitos
Este rol requiere ubuntu.
Variables del Rol
El conjunto predeterminado de variables define la versión de node y debe ser sobrescrito en group_vars/host_vars.
nodesource_nodejs_version: '20'
Ejemplo de Playbook
- hosts: nodesource
roles:
- { role: andrelohmann.nodesource }
Desarrollo del Rol
Propósito Especial
Este repositorio admite las siguientes características para el desarrollo del rol:
- yamllint
- ansible-lint
- prueba de molécula
- acción de github
- actualización automática de versiones
- actualización de ansible-galaxy
- mostrar estado de la construcción
- prueba dentro de vagrant (con fines de desarrollo)
- prueba con molécula (dentro o fuera de vagrant)
- prueba contra contenedor docker
- prueba y desarrollo dentro de vscode
Requisitos Previos
- Virtualbox + Vagrant instalado (solo necesario si el rol se va a probar con vagrant también)
- Docker Desktop
- VisualStudioCode + paquete de extensión remota (las dependencias están definidas en .vscode/extensions.json)
Configuración del Desarrollo
Este rol de ansible se desarrolla utilizando molécula para las pruebas. Su desarrollo se basa en Visual Studio Code y un contenedor de desarrollo correspondiente, resolviendo todas las dependencias en términos de herramientas necesarias (ansible, linter, molécula).
El rol se probará en tres contenedores de ubuntu (bionic, focal, jammy).
Para iniciar los contenedores de prueba de molécula desde el contenedor de desarrollo, se necesita montar el socket de docker.
Carpetas y Archivos Importantes
.devcontainer
- Define el Dockerfile para el contenedor de desarrollo
- Configura el inicio del contenedor de desarrollo (por ejemplo, montar el socket de docker)
molecule/default/Dockerfile.js
- Utilizado como plantilla para todas las plataformas definidas en molecule/default/molecule.yml
- Prepara los entornos para soportar servicios systemd (necesario para algunos roles de ansible que actúan sobre systemd)
- Instala todos los requisitos para ejecutar ansible contra el contenedor derivado
- El archivo está alineado con los atributos de las plataformas en molecule/default/molecule.yml
- Para más información, estudia la documentación de molécula
Uso
Visual Studio Code
- Cambia al directorio raíz de tu rol y abre vscode
code .
- Desde el contenedor de desarrollo, puedes usar los siguientes comandos de ejecución
yamllint .
ansible-lint .
molecule create
molecule test
Vagrant + Virtualbox
- Cambia al directorio raíz de tu rol
- Cambia a la carpeta de vagrant
- Inicia e ingresa a la máquina vagrant
vagrant up
vagrant ssh
- Cambia a la carpeta del rol
cd /etc/ansible/roles/ansible-role- [tab]
- Ahora puedes ejecutar todas las pruebas
yamllint .
ansible-lint .
molecule create
molecule test
Proceso de Construcción y Liberación
El rol de ansible define varios flujos de trabajo de github para ejecutar pruebas de molécula y gestión de lanzamientos.
La gestión de lanzamientos requiere un par de configuraciones.
Proteger la rama master/main
- Configuración -> Ramas -> Añadir regla de protección de rama
- Nombre del patrón de rama -> main o master (dependiendo de tu rama predeterminada)
- Proteger ramas coincidentes -> marcar "Requerir una pull request antes de fusionar"
- "Requerir aprobaciones" puede manejarse según sea necesario
Dar permisos de lectura y escritura a GITHUB_TOKEN
- Configuración -> Acciones -> General -> Permisos del flujo de trabajo -> permisos de lectura y escritura
Mensajes de confirmación
Los mensajes de confirmación deben seguir un formato especial para lograr una actualización de versión semántica de parche, menor o mayor.
parche
0.0.x
fix(single_word): descripción
menor
0.x.0
feat(single_word): descripción
mayor
x.0.0
perf(single_word): descripción
CAMBIO RUPTURANTE: descripción del cambio rupturante
Es muy importante que "CAMBIO RUPTURANTE: " esté mencionado en la segunda línea o más. En mensajes de confirmación de línea única, se ignorará la actualización de la versión mayor.
Agregar secreto GALAXY_API_KEY
- Autentícate con tu cuenta de github en https://galaxy.ansible.com/.
- Obtén la clave de api de galaxy desde Preferencias -> Clave API
- Abre tu repositorio de rol en github
- Configuración -> Secretos y variables -> Acciones -> Nuevo secreto del repositorio
- Usa "GALAXY_API_KEY" como clave y la clave API de galaxy copiada como valor
Licencia
MIT
Información del Autor
© Andre Lohmann (y otros) 2023
https://github.com/andrelohmann
Contacto del Mantenedor
- Andre Lohmann <lohmann.andre (en) gmail (punto) com>
ansible-galaxy install andrelohmann.nodesource