orachide.springboot_service
Rôle Ansible pour une application Spring Boot
Rôle Ansible qui installe une application Spring Boot en tant que service.
Ce rôle va copier l'artefact de l'application sur le serveur et le démarrer. Par défaut, le rôle créera également un service (SystemV - init.d, Systemd) pour gérer l'application.
Exigences
Votre application Spring Boot doit être préalablement empaquetée en un fichier jar exécutable, comme expliqué ici :
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
Variables du rôle
Variables | Requis | Valeur par défaut | Description |
---|---|---|---|
sb_app_install_java | faux | vrai | doit installer Java avant d'installer l'application |
sb_app_create_users | faux | vrai | doit créer des utilisateurs avant d'installer l'application |
sb_app_name | vrai | Aucun | le nom de l'application |
sb_app_group_id | vrai | Aucun | l'ID de groupe de l'artefact Maven |
sb_app_artifact_id | vrai | Aucun | l'ID de l'artefact Maven |
sb_app_version | vrai | Aucun | la version de l'artefact Maven |
sb_app_user | vrai | Aucun | le propriétaire des fichiers de l'application sur le serveur |
sb_app_user_group | vrai | Aucun | le groupe qui possède les fichiers de l'application |
sb_app_extension | vrai | jar | l'extension du fichier d'artefact. (jar,war,ear) |
sb_app_state | faux | present | Peut être present ou absent selon l'installation ou la désinstallation |
sb_app_classifier | faux | Aucun | le classificateur du fichier d'artefact (SOURCES, DOCS...) |
sb_maven_repository_url | faux | Dépôt Maven officiel | l'URL du dépôt Maven |
sb_app_repository_username | faux | Aucun | nom d'utilisateur utilisé pour l'authentification au dépôt Maven |
sb_app_repository_password | faux | Aucun | mot de passe utilisé pour l'authentification au dépôt Maven |
sb_app_artifact_file | faux | Aucun | le chemin local vers l'artefact à déployer. Si défini, le rôle ne téléchargera pas l'artefact depuis sb_maven_repository_url mais utilisera le fichier d'artefact local. |
sb_local_maven_artifact_dowload | faux | faux | L'artefact doit-il être téléchargé localement d'abord puis copié sur l'hôte distant ? |
sb_applications_root_folder | faux | /opt/applis | le dossier racine où les fichiers de l'application seront copiés |
sb_app_java_opts_xms | faux | 256M | valeur JAVA XMS |
sb_app_java_opts_xmx | faux | 1024M | valeur JAVA XMX |
sb_app_java_opts_others | faux | Aucun | Options JAVA_OPTS personnalisées |
sb_app_config_file_template_path | faux | Aucun | Chemin du modèle de fichier application.yml de Spring. Ce fichier sera copié près de l'artefact |
sb_app_config_file_final_name | faux | application.yml | Nom final du fichier de configuration, peut être *.yml ou *.properties |
sb_app_logback_file_template_path | faux | Aucun | Chemin du modèle de fichier Logback. Ce fichier sera chargé en définissant la propriété système logging.config |
sb_app_healthcheck_urls | faux | Aucun | URLs http pour vérifier si le service est opérationnel (doit être un tableau) |
sb_app_healthcheck_ports | faux | Aucun | Ports TCP pour vérifier si le service est opérationnel (doit être un tableau) |
sb_app_service_java_home | faux | Aucun | Définir le JAVA_HOME à utiliser |
sb_app_stop_wait_time | faux | 60 sec | Le temps en secondes à attendre lors de l'arrêt de l'application avant de forcer un arrêt |
sb_app_env | faux | tableau avec nom et valeur | Variables d'environnement qui seront ajoutées dans le fichier d'environnement |
Dépendances
Ce rôle peut installer JAVA en utilisant geerlingguy.java.
Ce rôle peut créer un utilisateur APP à l'aide de singleplatform-eng.users.
Exemple de Playbook
Utiliser un artefact Maven local
- name: Converger
hosts: all
roles:
- role: 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_dowload: 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:
- name: LOGGING_PATH
value: "{{ sb_applications_root_folder }}/{{ sb_app_name | upper }}/logs"
- name: SERVER_PORT
value: 8080
Utiliser un artefact Maven depuis le dépôt Maven
- name: Converger
hosts: all
roles:
- role: 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_dowload: 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:
- name: LOGGING_PATH
value: "{{ sb_applications_root_folder }}/{{ sb_app_name | upper }}/logs"
- name: SERVER_PORT
value: 8080
Déployer plusieurs microservices sur les mêmes hôtes
- name: Converger
hosts: all
vars:
# ajouter des variables communes pour tous les déploiements ici
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:
- {
role: "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"
]
}
- {
role: "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"
]
}
Licence
BSD
Informations sur l'auteur
Ce rôle a été créé en 2018 par Rachide Ouattara.
À propos du projet
Deploy Spring Boot application as a service (initd or Systemd)
Installer
ansible-galaxy install orachide.springboot_service
Licence
Unknown
Téléchargements
1.3k
Propriétaire
Want to learn and share more and more !!!!