123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- ---
- - name: Deploy Vue3 Frontend Application
- hosts: webservers
- vars:
- app_name: mall-vue3
- app_version: "{{ lookup('env', 'APP_VERSION') | default('latest', true) }}"
- deploy_path: /usr/share/nginx/html/mall
- nginx_config_path: /etc/nginx/sites-available
- nginx_enabled_path: /etc/nginx/sites-enabled
- backup_path: /usr/share/nginx/html/mall/backup
- dist_archive: dist-prod.tar.gz
- frontend_path: /usr/share/nginx/html/mall/backendui
- tasks:
- - name: Compress dist-prod directory locally
- local_action:
- module: archive
- path: ../../dist-prod
- dest: ../../{{ dist_archive }}
- format: gz
- run_once: true
- - name: Create deployment directories
- ansible.builtin.file:
- path: '{{ item }}'
- state: directory
- mode: '0755'
- with_items:
- - '{{ deploy_path }}'
- - '{{ backup_path }}'
- - '{{ frontend_path }}'
- become: true
- - name: Clean target directory
- ansible.builtin.file:
- path: '{{ frontend_path }}'
- state: directory
- mode: '0755'
- become: true
- - name: Upload compressed dist files
- ansible.builtin.copy:
- src: ../../{{ dist_archive }}
- dest: '{{ deploy_path }}/{{ dist_archive }}'
- mode: '0644'
- become: true
- - name: Remove existing frontend directory
- ansible.builtin.file:
- path: '{{ frontend_path }}/dist-prod'
- state: absent
- become: true
- - name: Extract dist files
- ansible.builtin.unarchive:
- src: '{{ deploy_path }}/{{ dist_archive }}'
- dest: '{{ frontend_path }}'
- remote_src: true
- become: true
- - name: Debug - List directory contents
- ansible.builtin.shell: 'ls -la {{ frontend_path }}'
- register: dir_contents
- become: true
- - name: Debug - Show directory contents
- ansible.builtin.debug:
- var: dir_contents.stdout_lines
- - name: Remove archive file
- ansible.builtin.file:
- path: '{{ deploy_path }}/{{ dist_archive }}'
- state: absent
- become: true
- - name: Set correct permissions
- ansible.builtin.file:
- path: '{{ frontend_path }}'
- state: directory
- recurse: yes
- owner: www-data
- group: www-data
- mode: '0755'
- become: true
- - name: Copy nginx configuration
- ansible.builtin.template:
- src: templates/malladmin.conf.j2
- dest: '{{ nginx_config_path }}/malladmin.conf'
- mode: '0644'
- notify: Reload nginx
- become: true
- - name: Create symlink to enable directory
- file:
- src: '{{ nginx_config_path }}/malladmin.conf'
- dest: '{{ nginx_enabled_path }}/malladmin.conf'
- state: link
- force: yes
- become: true
- - name: Ensure nginx is running
- ansible.builtin.service:
- name: nginx
- state: started
- enabled: true
- become: true
- handlers:
- - name: Reload nginx
- ansible.builtin.service:
- name: nginx
- state: reloaded
|