orachide.springboot_service

Rôle Ansible pour une application Spring Boot

Statut de la compilation
Ansible Galaxy

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 :

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 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 !!!!