orachide.springboot_service

Ansible Rolle für Spring Boot App

Build-Status Ansible Galaxy

Ansible-Rolle, die eine Spring Boot-Anwendung als Dienst installiert.

Diese Rolle kopiert das Anwendungsartefakt auf den Server und startet es. Standardmäßig erstellt die Rolle auch einen Dienst (SystemV - init.d, Systemd), um die Anwendung zu verwalten.

Anforderungen

Ihre Spring Boot-Anwendung sollte zuvor als vollständig ausführbare JAR verpackt werden, wie hier erklärt:

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>

Rollenvariablen

Variablen Erforderlich Standardwert Beschreibung
sb_app_install_java falsch true Soll Java vor der Installation der App installiert werden?
sb_app_create_users falsch true Soll Benutzer vor der Installation der App erstellt werden?
sb_app_name wahr Keine Der Anwendungsname
sb_app_group_id wahr Keine Die Maven-Artefaktgruppen-ID
sb_app_artifact_id wahr Keine Die Maven-Artefakt-ID
sb_app_version wahr Keine Die Maven-Artefaktversion
sb_app_user wahr Keine Der Besitzer der Anwendungsdateien auf dem Server
sb_app_user_group wahr Keine Die Gruppe, die die Anwendungsdateien besitzt
sb_app_extension wahr jar Die Dateierweiterung des Artefakts. (jar, war, ear)
sb_app_state falsch present Kann entweder present oder absent sein, je nachdem, ob installiert oder deinstalliert werden soll
sb_app_classifier falsch Keine Der Klassifizierer der Artefaktdatei (SOURCES, DOCS...)
sb_maven_repository_url falsch Maven offizielles Repository Die URL zum Maven-Repository
sb_app_repository_username falsch Keine Benutzername für die Authentifizierung im Maven-Repository
sb_app_repository_password falsch Keine Passwort für die Authentifizierung im Maven-Repository
sb_app_artifact_file falsch Keine Der lokale Pfad zum Artefakt, das bereitgestellt werden soll. Wenn angegeben, lädt die Rolle das Artefakt nicht von sb_maven_repository_url herunter, sondern verwendet die lokale Artefaktdatei.
sb_local_maven_artifact_dowload falsch falsch Soll das Artefakt zunächst lokal heruntergeladen und dann auf den Remote-Host kopiert werden?
sb_applications_root_folder falsch /opt/applis Der Stammordner, in den die Anwendungsdateien kopiert werden
sb_app_java_opts_xms falsch 256M JAVA XMS-Wert
sb_app_java_opts_xmx falsch 1024M JAVA XMX-Wert
sb_app_java_opts_others falsch Keine Benutzerdefinierte JAVA_OPTS-Optionen
sb_app_config_file_template_path falsch Keine Pfad zur Vorlage der Spring application.yml-Datei. Diese Datei wird in die Nähe des Artefakts kopiert
sb_app_config_file_final_name falsch application.yml Endgültiger Name der Konfigurationsdatei, kann *.yml oder .properties sein
sb_app_logback_file_template_path falsch Keine Pfad zur Vorlage der Logback-Datei. Diese Datei wird geladen, indem die System-Eigenschaft logging.config festgelegt wird
sb_app_healthcheck_urls falsch Keine Http-URLs zur Überprüfung, ob der Dienst gesund ist (sollte ein Array sein)
sb_app_healthcheck_ports falsch Keine TCP-Ports zur Überprüfung, ob der Dienst gesund ist (sollte ein Array sein)
sb_app_service_java_home falsch Keine Setzt das JAVA_HOME, das verwendet werden soll
sb_app_stop_wait_time falsch 60 Sekunden Die Zeit in Sekunden, die beim Stoppen der Anwendung gewartet werden soll, bevor ein erzwungenes Herunterfahren erfolgt
sb_app_env falsch Array mit Namen und Wert Umgebungsvariablen, die in die EnvironmentFile hinzugefügt werden

Abhängigkeiten

Diese Rolle kann JAVA mit geerlingguy.java installieren.

Diese Rolle kann APP-Benutzer mit singleplatform-eng.users erstellen.

Beispiel-Playbook

Verwendung eines lokalen Maven-Artefakts

- name: Zusammenführen
  hosts: alle
  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: falsch
      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

Verwendung eines Maven-Artefakts aus einem Maven-Repository

- name: Zusammenführen
  hosts: alle
  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: mein-benutzer
      sb_app_repository_password: mein-sehr-sicheres-passwort
      sb_local_maven_artifact_dowload: falsch
      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

Mehrere Microservices auf denselben Hosts bereitstellen

- name: Zusammenführen
  hosts: alle
  vars:
    # Gemeinsame Variablen für alle Bereitstellungen hier hinzufügen
    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"
      ]
    }

Lizenz

BSD

Autoreninformation

Diese Rolle wurde 2018 von Rachide Ouattara erstellt.

Über das Projekt

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

Installieren
ansible-galaxy install orachide.springboot_service
Lizenz
Unknown
Downloads
1.3k
Besitzer
Want to learn and share more and more !!!!