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_service
Licencia
Unknown
Descargas
1.3k
Propietario
Want to learn and share more and more !!!!