--- - name: Deploy Java Application hosts: webservers vars: app_name: yudao-server app_version: "{{ lookup('env', 'APP_VERSION') | default('latest', true) }}" app_home: /root/mall app_user: root app_group: root java_opts: "-XX:HeapDumpPath={{ app_home }}/logs/heapError" health_check_url: "http://192.168.110.86:48080/actuator/health/" tasks: - name: Create application directories ansible.builtin.file: path: "{{ item }}" state: directory mode: "0755" owner: "{{ app_user }}" group: "{{ app_group }}" with_items: - "{{ app_home }}" - "{{ app_home }}/backup" - "{{ app_home }}/logs" - "{{ app_home }}/config" - name: Stop service if running ansible.builtin.systemd: name: yudao state: stopped ignore_errors: true - name: Backup existing jar ansible.builtin.copy: src: "{{ app_home }}/{{ app_name }}.jar" dest: "{{ app_home }}/backup/{{ app_name }}-{{ ansible_date_time.iso8601 }}.jar" remote_src: true ignore_errors: true when: ansible_date_time is defined - name: Copy application jar ansible.builtin.copy: src: "../../yudao-server/target/{{ app_name }}.jar" dest: "{{ app_home }}/{{ app_name }}.jar" owner: "{{ app_user }}" group: "{{ app_group }}" mode: "0644" notify: Restart application - name: Create service file ansible.builtin.template: src: templates/yudao.service.j2 dest: /etc/systemd/system/yudao.service mode: "0644" notify: Reload systemd - name: Start and enable service ansible.builtin.systemd: name: yudao state: started enabled: true daemon_reload: false handlers: - name: Restart application ansible.builtin.systemd: name: yudao state: restarted - name: Reload systemd ansible.builtin.systemd: daemon_reload: true