12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- ---
- - hosts: webservers
- vars:
- deploy_path: /www/wwwroot/xiaoding
- timestamp: "{{ ansible_date_time.year }}-{{ ansible_date_time.month }}-{{ ansible_date_time.day }}-{{ ansible_date_time.hour }}:{{ ansible_date_time.minute }}:{{ ansible_date_time.second }}"
- backup_file: "xiaoding_backup_{{ timestamp }}.tar.gz"
- project_archive: "owl-admin.tar.gz"
- tasks:
- - name: Create backup of existing deployment
- archive:
- path: "{{ deploy_path }}"
- dest: "/tmp/{{ backup_file }}"
- format: gz
- ignore_errors: yes
- - name: Create local project archive
- local_action:
- module: archive
- path: "{{ playbook_dir }}/../../*"
- dest: "/tmp/{{ project_archive }}"
- format: gz
- exclude_path:
- - "*.git"
- - "node_modules"
- - "vendor"
- run_once: true
- - name: Ensure deploy directory exists
- file:
- path: "{{ deploy_path }}"
- state: directory
- mode: "0755"
- - name: Copy project archive to remote
- copy:
- src: "/tmp/{{ project_archive }}"
- dest: "/tmp/{{ project_archive }}"
- - name: Clean deploy directory
- file:
- path: "{{ deploy_path }}"
- state: absent
- - name: Create deploy directory
- file:
- path: "{{ deploy_path }}"
- state: directory
- mode: "0755"
- - name: Extract project archive
- unarchive:
- src: "/tmp/{{ project_archive }}"
- dest: "{{ deploy_path }}"
- remote_src: yes
- - name: Copy .env file from root
- copy:
- src: /root/.env
- dest: "{{ deploy_path }}/.env"
- remote_src: yes
- ignore_errors: yes
- - name: Set proper permissions
- file:
- path: "{{ deploy_path }}"
- owner: www
- group: www
- recurse: yes
- mode: "0777"
- - name: Clean up remote archive
- file:
- path: "/tmp/{{ project_archive }}"
- state: absent
- - name: Clean up local archive
- local_action:
- module: file
- path: "/tmp/{{ project_archive }}"
- state: absent
- run_once: true
|