deploy_playbook.yml 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. ---
  2. - name: Deploy Java Application
  3. hosts: webservers
  4. vars:
  5. app_name: yudao-server
  6. app_version: "{{ lookup('env', 'APP_VERSION') | default('latest', true) }}"
  7. app_home: /root/mall
  8. app_user: root
  9. app_group: root
  10. java_opts: "-XX:HeapDumpPath={{ app_home }}/logs/heapError"
  11. health_check_url: "http://192.168.110.86:48080/actuator/health/"
  12. tasks:
  13. - name: Create application directories
  14. ansible.builtin.file:
  15. path: "{{ item }}"
  16. state: directory
  17. mode: "0755"
  18. owner: "{{ app_user }}"
  19. group: "{{ app_group }}"
  20. with_items:
  21. - "{{ app_home }}"
  22. - "{{ app_home }}/backup"
  23. - "{{ app_home }}/logs"
  24. - "{{ app_home }}/config"
  25. - name: Stop service if running
  26. ansible.builtin.systemd:
  27. name: yudao
  28. state: stopped
  29. ignore_errors: true
  30. - name: Backup existing jar
  31. ansible.builtin.copy:
  32. src: "{{ app_home }}/{{ app_name }}.jar"
  33. dest: "{{ app_home }}/backup/{{ app_name }}-{{ ansible_date_time.iso8601 }}.jar"
  34. remote_src: true
  35. ignore_errors: true
  36. when: ansible_date_time is defined
  37. - name: Copy application jar
  38. ansible.builtin.copy:
  39. src: "../../yudao-server/target/{{ app_name }}.jar"
  40. dest: "{{ app_home }}/{{ app_name }}.jar"
  41. owner: "{{ app_user }}"
  42. group: "{{ app_group }}"
  43. mode: "0644"
  44. notify: Restart application
  45. - name: Create service file
  46. ansible.builtin.template:
  47. src: templates/yudao.service.j2
  48. dest: /etc/systemd/system/yudao.service
  49. mode: "0644"
  50. notify: Reload systemd
  51. - name: Start and enable service
  52. ansible.builtin.systemd:
  53. name: yudao
  54. state: started
  55. enabled: true
  56. daemon_reload: false
  57. handlers:
  58. - name: Restart application
  59. ansible.builtin.systemd:
  60. name: yudao
  61. state: restarted
  62. - name: Reload systemd
  63. ansible.builtin.systemd:
  64. daemon_reload: true