feat: CI/CD pipeline setup complete - Ansible playbooks updated, secrets configured, workflow ready
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
---
|
||||
# Ansible Playbook: Emergency Rollback
|
||||
# Purpose: Fast rollback without health checks for emergency situations
|
||||
# Usage: ansible-playbook -i inventory/production.yml playbooks/emergency-rollback.yml -e "rollback_tag=<tag>"
|
||||
|
||||
- name: Emergency Rollback (Fast Mode)
|
||||
hosts: production_server
|
||||
become: no
|
||||
vars:
|
||||
registry_url: "git.michaelschiemer.de:5000"
|
||||
image_name: "framework"
|
||||
stack_name: "framework"
|
||||
rollback_tag: "{{ rollback_tag | default('latest') }}"
|
||||
skip_health_check: true
|
||||
|
||||
pre_tasks:
|
||||
- name: Emergency rollback warning
|
||||
debug:
|
||||
msg: |
|
||||
🚨 EMERGENCY ROLLBACK IN PROGRESS 🚨
|
||||
|
||||
This will immediately revert to: {{ rollback_tag }}
|
||||
Health checks will be SKIPPED for speed.
|
||||
|
||||
Press Ctrl+C now if you want to abort.
|
||||
|
||||
- name: Record rollback initiation
|
||||
shell: |
|
||||
echo "[$(date)] Emergency rollback initiated to {{ rollback_tag }}" >> /home/deploy/deployments/emergency-rollback.log
|
||||
|
||||
tasks:
|
||||
- name: Get current running image tag
|
||||
shell: |
|
||||
docker service inspect {{ stack_name }}_web --format '{{`{{.Spec.TaskTemplate.ContainerSpec.Image}}`}}'
|
||||
register: current_image
|
||||
changed_when: false
|
||||
|
||||
- name: Display current vs target
|
||||
debug:
|
||||
msg: |
|
||||
Current: {{ current_image.stdout }}
|
||||
Target: {{ registry_url }}/{{ image_name }}:{{ rollback_tag }}
|
||||
|
||||
- name: Pull rollback image (skip verification)
|
||||
docker_image:
|
||||
name: "{{ registry_url }}/{{ image_name }}"
|
||||
tag: "{{ rollback_tag }}"
|
||||
source: pull
|
||||
register: rollback_image
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Force rollback even if image pull failed
|
||||
debug:
|
||||
msg: "⚠️ Image pull failed, attempting rollback with cached image"
|
||||
when: rollback_image is failed
|
||||
|
||||
- name: Immediate rollback - web service
|
||||
shell: |
|
||||
docker service update \
|
||||
--image {{ registry_url }}/{{ image_name }}:{{ rollback_tag }} \
|
||||
--force \
|
||||
--update-parallelism 999 \
|
||||
--update-delay 0s \
|
||||
{{ stack_name }}_web
|
||||
register: web_rollback
|
||||
|
||||
- name: Immediate rollback - queue-worker service
|
||||
shell: |
|
||||
docker service update \
|
||||
--image {{ registry_url }}/{{ image_name }}:{{ rollback_tag }} \
|
||||
--force \
|
||||
--update-parallelism 999 \
|
||||
--update-delay 0s \
|
||||
{{ stack_name }}_queue-worker
|
||||
register: worker_rollback
|
||||
|
||||
- name: Wait for rollback to propagate (minimal wait)
|
||||
pause:
|
||||
seconds: 15
|
||||
|
||||
- name: Quick service status check
|
||||
shell: |
|
||||
docker service ps {{ stack_name }}_web --filter "desired-state=running" --format "{{`{{.CurrentState}}`}}" | head -1
|
||||
register: rollback_state
|
||||
changed_when: false
|
||||
|
||||
- name: Display rollback status
|
||||
debug:
|
||||
msg: |
|
||||
🚨 Emergency rollback completed (fast mode)
|
||||
|
||||
Web Service: {{ web_rollback.changed | ternary('ROLLED BACK', 'NO CHANGE') }}
|
||||
Worker Service: {{ worker_rollback.changed | ternary('ROLLED BACK', 'NO CHANGE') }}
|
||||
Service State: {{ rollback_state.stdout }}
|
||||
|
||||
⚠️ MANUAL VERIFICATION REQUIRED:
|
||||
1. Check application: https://michaelschiemer.de
|
||||
2. Check service logs: docker service logs {{ stack_name }}_web
|
||||
3. Verify database connectivity
|
||||
4. Run full health check: ansible-playbook playbooks/health-check.yml
|
||||
|
||||
- name: Record rollback completion
|
||||
shell: |
|
||||
echo "[$(date)] Emergency rollback completed: {{ rollback_tag }}, Status: {{ rollback_state.stdout }}" >> /home/deploy/deployments/emergency-rollback.log
|
||||
|
||||
- name: Alert - manual verification required
|
||||
debug:
|
||||
msg: |
|
||||
⚠️ IMPORTANT: This was an emergency rollback without health checks.
|
||||
You MUST manually verify application functionality before considering this successful.
|
||||
Reference in New Issue
Block a user