Post-Tyranny-Tech-Infrastru.../ansible/roles/zitadel/tasks/bootstrap.yml
Pieter 48ef4da920 Fix Zitadel deployment by removing FirstInstance variables
- Remove all ZITADEL_FIRSTINSTANCE_* environment variables
- Fixes migration error: duplicate key constraint violation
- Root cause: Bug in Zitadel v2.63.7 FirstInstance migration
- Workaround: Complete initial setup via web UI
- Upstream issue: https://github.com/zitadel/zitadel/issues/8791

Changes:
- Clean up obsolete documentation (OIDC_AUTOMATION.md, SETUP_GUIDE.md, COLLABORA_SETUP.md)
- Add PROJECT_REFERENCE.md for essential configuration info
- Add force recreate functionality with clean database volumes
- Update bootstrap instructions for web UI setup
- Document one-time manual setup requirement for OIDC automation

Zitadel now deploys successfully and is accessible at:
https://zitadel.test.vrije.cloud

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-06 16:43:57 +01:00

55 lines
1.6 KiB
YAML

---
# Bootstrap tasks for initial Zitadel configuration
- name: Check if bootstrap already completed
stat:
path: "{{ zitadel_config_dir }}/.bootstrap_complete"
register: bootstrap_flag
- name: Bootstrap Zitadel instance
when: not bootstrap_flag.stat.exists
block:
- name: Wait for Zitadel to be fully ready
uri:
url: "https://{{ zitadel_domain }}/debug/ready"
validate_certs: yes
status_code: 200
register: zitadel_ready
until: zitadel_ready.status == 200
retries: 30
delay: 10
- name: Display bootstrap instructions
debug:
msg: |
========================================
Zitadel is running!
========================================
URL: https://{{ zitadel_domain }}
⚠️ FIRST-TIME SETUP REQUIRED
Due to migration bugs in Zitadel v2.63.7, FirstInstance environment
variables cannot be used. You must complete initial setup via web UI.
Visit: https://{{ zitadel_domain }}
Next steps:
1. Complete web UI setup wizard (create admin account)
2. Create a service user for API automation
3. Generate JWT key for the service user
4. Store JWT key for automated OIDC app provisioning
See: https://github.com/zitadel/zitadel/issues/8791
- name: Mark bootstrap as complete
file:
path: "{{ zitadel_config_dir }}/.bootstrap_complete"
state: touch
mode: '0600'
- name: Bootstrap already completed
debug:
msg: "Zitadel bootstrap already completed, skipping initialization"
when: bootstrap_flag.stat.exists