--- - name: Sync Infrastructure Stacks to Production Server hosts: production become: no gather_facts: yes vars: local_stacks_path: "{{ playbook_dir }}/../../stacks" remote_stacks_path: "{{ stacks_base_path | default('/home/deploy/deployment/stacks') }}" tasks: - name: Ensure deployment directory exists on production file: path: "{{ remote_stacks_path }}" state: directory mode: '0755' owner: "{{ ansible_user }}" group: "{{ ansible_user }}" - name: Sync stacks directory to production server synchronize: src: "{{ local_stacks_path }}/" dest: "{{ remote_stacks_path }}/" delete: no recursive: yes rsync_opts: - "--chmod=D755,F644" - "--exclude=.git" - "--exclude=*.log" - "--exclude=data/" - "--exclude=volumes/" - "--exclude=acme.json" - "--exclude=*.key" - "--exclude=*.pem" - "--exclude=app.ini" - "--exclude=app.ini.minimal" - name: Ensure executable permissions on PostgreSQL backup scripts file: path: "{{ item }}" mode: '0755' loop: - "{{ remote_stacks_path }}/postgresql-production/scripts/backup-entrypoint.sh" - "{{ remote_stacks_path }}/postgresql-production/scripts/backup.sh" - "{{ remote_stacks_path }}/postgresql-production/scripts/restore.sh" - "{{ remote_stacks_path }}/postgresql-staging/scripts/backup-entrypoint.sh" - "{{ remote_stacks_path }}/postgresql-staging/scripts/backup.sh" - "{{ remote_stacks_path }}/postgresql-staging/scripts/restore.sh" ignore_errors: yes - name: Verify stacks directory exists on production stat: path: "{{ remote_stacks_path }}" register: stacks_dir - name: Display sync results debug: msg: - "=== Stacks Synchronization Complete ===" - "Stacks directory exists: {{ stacks_dir.stat.exists }}" - "Path: {{ remote_stacks_path }}/stacks" - "" - "Next: Run infrastructure deployment playbook"