orachide.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 应用程序名称
sb_app_group_id true Maven工件组 ID
sb_app_artifact_id true Maven工件 ID
sb_app_version true Maven工件版本
sb_app_user true 服务器上应用文件的拥有者
sb_app_user_group true 拥有应用文件的组
sb_app_extension true jar 工件文件扩展名(jar, war, ear)
sb_app_state false present 可以为presentabsent,取决于安装或卸载
sb_app_classifier false 工件文件分类器(SOURCES, DOCS...)
sb_maven_repository_url false Maven官方仓库 Maven仓库的URL
sb_app_repository_username false 用于Maven仓库身份验证的用户名
sb_app_repository_password false 用于Maven仓库身份验证的密码
sb_app_artifact_file false 要部署的工件的本地路径。如果定义了,则角色不会从sb_maven_repository_url下载工件,而是使用本地工件文件。
sb_local_maven_artifact_dowload 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 自定义JAVA_OPTS选项
sb_app_config_file_template_path false Spring application.yml文件模板路径。这个文件将复制到工件附近
sb_app_config_file_final_name false application.yml 配置文件最终名称,可以是*.yml或*.properties
sb_app_logback_file_template_path false Logback文件模板路径。这个文件将通过设置logging.config系统属性加载
sb_app_healthcheck_urls false 检查服务是否健康的Http URL(应为数组)
sb_app_healthcheck_ports false 检查服务是否健康的TCP端口(应为数组)
sb_app_service_java_home false 设置使用的__JAVA_HOME__
sb_app_stop_wait_time false 60秒 停止应用程序时在强制关机前等待的时间(秒)
sb_app_env false 带名称和值的数组 将添加到环境文件的环境变量

依赖关系

该角色可以使用geerlingguy.java安装JAVA

该角色可以使用singleplatform-eng.users创建应用用户

示例剧本

使用本地Maven工件

- name: 合并
  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

使用Maven仓库中的Maven工件

- name: 合并
  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

将多个微服务部署到相同的主机

- name: 合并
  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

作者信息

此角色由Rachide Ouattara于2018年创建。

关于项目

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

安装
ansible-galaxy install orachide.springboot_service
许可证
Unknown
下载
1.3k
拥有者
Want to learn and share more and more !!!!