springboot_service
Роль Ansible для приложения Spring Boot
Роль Ansible, которая устанавливает приложение Spring Boot как сервис.
Эта роль скопирует артефакт приложения на сервер и запустит его. По умолчанию также будет создан сервис (SystemV - init.d, Systemd) для управления приложением.
Требования
Ваше приложение Spring Boot должно быть предварительно упаковано как полностью исполняемый jar, как описано здесь:
<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 !!!!