orachide.springboot_service

Rol Ansible dla aplikacji Spring Boot

Status budowy Ansible Galaxy

Rola Ansible, która instaluje aplikację Spring Boot jako usługę.

Ta rola skopiuje artefakt aplikacji na serwer i uruchomi go. Domyślnie rola również utworzy usługę (SystemV - init.d, Systemd) do zarządzania aplikacją.

Wymagania

Twoja aplikacja Spring Boot powinna być wcześniej spakowana jako w pełni wykonywalny plik jar, jak opisano tutaj:

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>

Zmienne roli

Zmienne Wymagane Wartość domyślna Opis
sb_app_install_java fałsz prawda powinno zainstalować Jave przed instalacją aplikacji
sb_app_create_users fałsz prawda powinno utworzyć użytkowników przed instalacją aplikacji
sb_app_name prawda Brak nazwa aplikacji
sb_app_group_id prawda Brak identyfikator grupy artefaktu maven
sb_app_artifact_id prawda Brak identyfikator artefaktu maven
sb_app_version prawda Brak wersja artefaktu maven
sb_app_user prawda Brak właściciel plików aplikacji na serwerze
sb_app_user_group prawda Brak grupa właściciela plików aplikacji
sb_app_extension prawda jar rozszerzenie pliku artefaktu (jar, war, ear)
sb_app_state fałsz obecny Może być obecny lub nieobecny, w zależności od instalacji lub odinstalowania
sb_app_classifier fałsz Brak klasyfikator pliku artefaktu (SOURCES, DOCS...)
sb_maven_repository_url fałsz oficjalne repo Maven adres URL do repozytorium maven
sb_app_repository_username fałsz Brak nazwa użytkownika do autoryzacji w repozytorium maven
sb_app_repository_password fałsz Brak hasło do autoryzacji w repozytorium maven
sb_app_artifact_file fałsz Brak lokalna ścieżka do artefaktu do wdrożenia. Jeśli zdefiniowane, rola nie pobierze artefaktu z sb_maven_repository_url, ale użyje lokalnego pliku artefaktu.
sb_local_maven_artifact_download fałsz fałsz Artefakt powinien być pobrany lokalnie najpierw, a następnie skopiowany na zdalny host?
sb_applications_root_folder fałsz /opt/applis główny folder, do którego będą kopiowane pliki aplikacji
sb_app_java_opts_xms fałsz 256M wartość JAVA XMS
sb_app_java_opts_xmx fałsz 1024M wartość JAVA XMX
sb_app_java_opts_others fałsz Brak dodatkowe opcje JAVA_OPTS
sb_app_config_file_template_path fałsz Brak ścieżka do szablonu pliku application.yml. Ten plik zostanie skopiowany w pobliżu artefaktu
sb_app_config_file_final_name fałsz application.yml ostateczna nazwa pliku konfiguracyjnego, może być *.yml lub *.properties
sb_app_logback_file_template_path fałsz Brak ścieżka do szablonu pliku Logback. Ten plik będzie załadowany ustawiając właściwość systemową logging.config
sb_app_healthcheck_urls fałsz Brak Url do sprawdzenia stanu usługi (powinno być tablicą)
sb_app_healthcheck_ports fałsz Brak Porty TCP do sprawdzenia stanu usługi (powinno być tablicą)
sb_app_service_java_home fałsz Brak Ustaw JAVA_HOME do użycia
sb_app_stop_wait_time fałsz 60 sek Czas w sekundach, aby czekać podczas zatrzymywania aplikacji przed wymuszeniem zamknięcia
sb_app_env fałsz tablica z nazwą i wartością Zmienne środowiskowe, które zostaną dodane do EnvironmentFile

Zależności

Ta rola może zainstalować JAVĘ używając geerlingguy.java

Ta rola może utworzyć użytkownika APP używając singleplatform-eng.users

Przykład Playbooka

Używając lokalnego artefaktu maven

    - name: Konwergencja
      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_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:
            - name: LOGGING_PATH
              value: "{{ sb_applications_root_folder }}/{{ sb_app_name | upper }}/logs"
            - name: SERVER_PORT
              value: 8080

Używając artefaktu maven z repozytorium maven

    - name: Konwergencja
      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_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:
            - name: LOGGING_PATH
              value: "{{ sb_applications_root_folder }}/{{ sb_app_name | upper }}/logs"
            - name: SERVER_PORT
              value: 8080

Wdrażanie wielu mikroserwisów na tych samych hostach

    - name: Konwergencja
      hosts: all
      vars:
        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"
          ]
        }

Licencja

BSD

Informacje o autorze

Ta rola została stworzona w 2018 roku przez Rachide Ouattara.

O projekcie

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

Zainstaluj
ansible-galaxy install orachide.springboot_service
Licencja
Unknown
Pobrania
1.3k
Właściciel
Want to learn and share more and more !!!!