orachide.springboot_service

Rol de Ansible para Aplicación Spring Boot

Estado de Construcción Ansible Galaxy

Rol de Ansible que instala una aplicación Spring Boot como un servicio.

Este rol copiará el artefacto de la aplicación en el servidor y lo iniciará. Por defecto, el rol también creará un servicio (SystemV - init.d, Systemd) para gestionar la aplicación.

Requisitos

Tu aplicación Spring Boot debe estar empaquetada previamente como un jar ejecutable completo, como se explica aquí:

https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html#deployment-install

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
    </configuration>
</plugin>

Variables del Rol

Variables Requerido Valor por defecto Descripción
sb_app_install_java falso true debe instalar java antes de instalar la aplicación
sb_app_create_users falso true debe crear usuarios antes de instalar la aplicación
sb_app_name verdadero Ninguno el nombre de la aplicación
sb_app_group_id verdadero Ninguno el grupo id del artefacto de maven
sb_app_artifact_id verdadero Ninguno el id del artefacto de maven
sb_app_version verdadero Ninguno la versión del artefacto de maven
sb_app_user verdadero Ninguno el propietario de los archivos de la aplicación en el servidor
sb_app_user_group verdadero Ninguno el grupo que posee los archivos de la aplicación
sb_app_extension verdadero jar la extensión del archivo del artefacto. (jar, war, ear)
sb_app_state falso present puede ser present o absent dependiendo si se instala o desinstala
sb_app_classifier falso Ninguno el clasificador del archivo del artefacto (SOURCES, DOCS...)
sb_maven_repository_url falso repositorio oficial de Maven la url del repositorio de maven
sb_app_repository_username falso Ninguno nombre de usuario usado para la autenticación del repositorio de maven
sb_app_repository_password falso Ninguno contraseña usada para la autenticación del repositorio de maven
sb_app_artifact_file falso Ninguno la ruta local al artefacto a desplegar. Si se define, el rol no descargará el artefacto de sb_maven_repository_url sino que usará el archivo local.
sb_local_maven_artifact_download falso falso ¿Debería descargarse el artefacto localmente primero y luego copiarse al host remoto?
sb_applications_root_folder falso /opt/applis la carpeta raíz donde se copiarán los archivos de la aplicación
sb_app_java_opts_xms falso 256M valor de JAVA XMS
sb_app_java_opts_xmx falso 1024M valor de JAVA XMX
sb_app_java_opts_others falso Ninguno Opciones personalizadas de JAVA_OPTS
sb_app_config_file_template_path falso Ninguno Ruta del archivo plantilla de spring application.yml. Este archivo será copiado cerca del artefacto.
sb_app_config_file_final_name falso application.yml Nombre final del archivo de configuración, puede ser *.yml o *.properties
sb_app_logback_file_template_path falso Ninguno Ruta del archivo plantilla de Logback. Este archivo se cargará configurando la propiedad del sistema logging.config
sb_app_healthcheck_urls falso Ninguno URLs HTTP para comprobar si el servicio está operativo (debería ser un array)
sb_app_healthcheck_ports falso Ninguno Puertos TCP para comprobar si el servicio está operativo (debería ser un array)
sb_app_service_java_home falso Ninguno Establecer el JAVA_HOME a usar
sb_app_stop_wait_time falso 60 segundos El tiempo en segundos a esperar al detener la aplicación antes de forzar un apagado
sb_app_env falso array con nombre y valor Variables de entorno que se añadirán en el archivo de entorno

Dependencias

Este rol puede instalar JAVA usando geerlingguy.java

Este rol puede crear el usuario de la APP usando singleplatform-eng.users

Ejemplo de Playbook

Usando artefacto de maven local

- name: Converger
  hosts: all
  roles:
    - rol: ansible-role-springboot
      sb_app_name: dummy-boot-app
      sb_app_group_id: fr.chidix
      sb_app_artifact_id: dummy-boot-app
      sb_app_version: 0.0.1-SNAPSHOT
      sb_app_extension: jar
      sb_app_user: sbuser
      sb_app_user_group: sbgroup
      sb_local_maven_artifact_download: false
      sb_app_artifact_file: "{{ playbook_dir}}/artifacts/dummy-boot-app-0.0.1-SNAPSHOT.jar"
      sb_app_config_file_template_path: "{{ playbook_dir }}/templates/dummy-boot-app-configuration.yml.j2"
      sb_app_java_opts_others: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6006"
      sb_app_healthcheck_urls:
        - "http://localhost:8082/actuator/health"
      sb_app_healthcheck_ports:
        - 8082
      sb_app_env:
        - nombre: LOGGING_PATH
          valor: "{{ sb_applications_root_folder }}/{{ sb_app_name | upper }}/logs"
        - nombre: SERVER_PORT
          valor: 8080

Usando artefacto de maven desde el repositorio

- name: Converger
  hosts: all
  roles:
    - rol: ansible-role-springboot
      sb_app_as_a_service: true
      sb_app_name: dummy-boot-app
      sb_app_group_id: fr.chidix
      sb_app_artifact_id: dummy-boot-app
      sb_app_version: 0.0.1-SNAPSHOT
      sb_app_extension: jar
      sb_app_user: sbuser
      sb_app_user_group: sbgroup
      sb_maven_repository_url: https://my-private-maven-repository/repository/maven-snapshots/
      sb_app_repository_username: my-user
      sb_app_repository_password: my-very-secure-password
      sb_local_maven_artifact_download: false
      sb_app_config_file_template_path: "{{ playbook_dir }}/templates/dummy-boot-app-configuration.yml.j2"
      sb_app_healthcheck_urls:
        - "http://localhost:8082/actuator/health"
      sb_app_healthcheck_ports:
        - 8082
      sb_app_env:
        - nombre: LOGGING_PATH
          valor: "{{ sb_applications_root_folder }}/{{ sb_app_name | upper }}/logs"
        - nombre: SERVER_PORT
          valor: 8080

Desplegar múltiples microservicios en los mismos hosts

- name: Converger
  hosts: all
  vars:
    # agregar variables comunes para todos los despliegues aquí
    sb_java_package: java-1.8.0-openjdk
    sb_app_as_a_service: true
    sb_app_extension: jar
    sb_applications_root_folder: /opt/applis
    sb_app_group_id: "org.springframework.samples.service.service"
  roles:
    - {
      rol: "ansible-role-springboot",
      sb_app_name: "microservices-registration",
      sb_app_artifact_id: "my-frontend",
      sb_app_version: "2.0.0.RELEASE",
      sb_app_run_args: '"registration 8082"',
      sb_app_healthcheck_urls: [
        "http://localhost:8082/actuator/health"
      ]
    }
    - {
      rol: "ansible-role-springboot",
      sb_app_name: "microservices-web",
      sb_app_artifact_id: "my-backend",
      sb_app_version: "2.0.0.RELEASE",
      sb_app_run_args: '"web 8083"',
      sb_app_healthcheck_urls: [
        "http://localhost:8083/actuator/health"
      ]
    }

Licencia

BSD

Información del Autor

Este rol fue creado en 2018 por Rachide Ouattara.

Acerca del proyecto

Deploy Spring Boot application as a service (initd or Systemd)

Instalar
ansible-galaxy install orachide.springboot_service
Licencia
Unknown
Descargas
1.3k
Propietario
Want to learn and share more and more !!!!