springboot_service

Роль Ansible для приложения Spring Boot

Статус сборки Ansible Galaxy

Роль Ansible, которая устанавливает приложение Spring Boot как сервис.

Эта роль скопирует артефакт приложения на сервер и запустит его. По умолчанию также будет создан сервис (SystemV - init.d, Systemd) для управления приложением.

Требования

Ваше приложение Spring Boot должно быть предварительно упаковано как полностью исполняемый jar, как описано здесь:

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>

Переменные роли

Переменные Обязательно Значение по умолчанию Описание
sb_app_install_java false true установить java перед установкой приложения
sb_app_create_users false true создать пользователей перед установкой приложения
sb_app_name true None название приложения
sb_app_group_id true None идентификатор группы артефакта maven
sb_app_artifact_id true None идентификатор артефакта maven
sb_app_version true None версия артефакта maven
sb_app_user true None владелец файлов приложения на сервере
sb_app_user_group true None группа, владеющая файлами приложения
sb_app_extension true jar расширение файла артефакта (jar, war, ear)
sb_app_state false present Может быть present или absent в зависимости от установки или удаления
sb_app_classifier false None классификатор файла артефакта (SOURCES, DOCS...)
sb_maven_repository_url false Официальный репозиторий Maven URL к репозиторию maven
sb_app_repository_username false None имя пользователя для аутентификации в репозитории maven
sb_app_repository_password false None пароль для аутентификации в репозитории maven
sb_app_artifact_file false None местный путь к артефакту для развертывания. Если указан, роль не будет скачивать артефакт из sb_maven_repository_url, а использует локальный файл артефакта.
sb_local_maven_artifact_download false false Артефакт должен сначала быть скачан локально, а затем скопирован на удаленный хост?
sb_applications_root_folder false /opt/applis корневая папка, в которую будут скопированы файлы приложения
sb_app_java_opts_xms false 256M значение JAVA XMS
sb_app_java_opts_xmx false 1024M значение JAVA XMX
sb_app_java_opts_others false None пользовательские параметры JAVA_OPTS
sb_app_config_file_template_path false None путь к шаблону файла Spring application.yml. Этот файл будет скопирован рядом с артефактом
sb_app_config_file_final_name false application.yml Окончательное имя файла конфигурации, может быть .yml или .properties
sb_app_logback_file_template_path false None путь к шаблону файла Logback. Этот файл будет загружен, установив системное свойство logging.config
sb_app_healthcheck_urls false None HTTP URL для проверки состояния сервиса (должен быть массивом)
sb_app_healthcheck_ports false None TCP порты для проверки состояния сервиса (должен быть массивом)
sb_app_service_java_home false None Установить JAVA_HOME для использования
sb_app_stop_wait_time false 60 сек Время в секундах для ожидания при остановке приложения перед принудительным завершением
sb_app_env false массив с именем и значением Переменные окружения, которые будут добавлены в EnvironmentFile

Зависимости

Эта роль может установить JAVA, используя geerlingguy.java.

Эта роль может создать пользователя APP, используя singleplatform-eng.users.

Пример Playbook

Используя локальный артефакт maven

    - name: Converge
      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

Используя артефакт maven из репозитория maven

    - name: Converge
      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

Развертывание нескольких микросервисов на одних и тех же хостах

    - name: Converge
      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"
          ]
        }

Лицензия

BSD

Информация о авторе

Эта роль была создана в 2018 году Рашидом Уаттара.

О проекте

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

Установить
ansible-galaxy install orachide/ansible-role-springboot
Лицензия
Unknown
Загрузки
1265
Владелец
Want to learn and share more and more !!!!