orachide.springboot_service
Rol de Ansible para Aplicación Spring Boot
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í:
<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_serviceLicencia
 
            Unknown
          
Descargas
 
            1.4k
          
Propietario
 Want to learn and share more and more !!!!
