Complete rewrite of the module to deploy a Renovate bot for automated dependency management with Gitea integration. Breaking Changes: - Module purpose changed from Ansible EDA to Renovate bot - All variables restructured for Renovate configuration - State file path updated to home/docker/renovate/renovate.tfstate - Volumes changed from EDA rulebooks/logs to config/cache - Container image now uses renovate/renovate:latest Added: - Gitea platform integration with token authentication - Renovate configuration template (config.js.tpl) - Repository configuration examples - Gitea Actions workflow examples - SonarQube integration examples - Comprehensive documentation (README, QUICKSTART, MIGRATION_GUIDE) - CHANGELOG.md for version tracking - Security best practices Removed: - All Ansible EDA-specific configuration - Traefik labels (not needed for Renovate) - Old EDA documentation files - example-rulebook.yml Updated: - Complete README with Gitea setup instructions - terraform.tfvars with Renovate configuration - All resource names from ansible_eda to renovate - Backend state path This is version 2.0.0 - not backward compatible with previous EDA version. See MIGRATION_GUIDE.md for detailed migration instructions.
301 lines
7.5 KiB
Markdown
301 lines
7.5 KiB
Markdown
# Migration Guide: Ansible EDA to Renovate
|
|
|
|
This document provides guidance for migrating from the previous Ansible EDA module to the new Renovate bot module.
|
|
|
|
## Overview
|
|
|
|
This module has been completely repurposed from deploying Ansible Event-Driven Automation to deploying a Renovate bot for automated dependency updates. This is a **breaking change** and requires careful migration planning.
|
|
|
|
## Key Changes
|
|
|
|
### 1. Module Purpose
|
|
|
|
**Before**: Ansible Event-Driven Automation (EDA) server for webhook-based automation
|
|
**After**: Renovate bot for automated dependency updates
|
|
|
|
### 2. Docker Image
|
|
|
|
**Before**: `quay.io/ansible/ansible-rulebook:latest`
|
|
**After**: `renovate/renovate:latest`
|
|
|
|
### 3. Volumes
|
|
|
|
**Before**:
|
|
- `ansible-eda-rulebooks` - Rulebook storage
|
|
- `ansible-eda-logs` - Log storage
|
|
|
|
**After**:
|
|
- `renovate-config` - Configuration storage
|
|
- `renovate-cache` - Cache for improved performance
|
|
|
|
### 4. State File Path
|
|
|
|
**Before**: `home/docker/ansible-eda/ansible-eda.tfstate`
|
|
**After**: `home/docker/renovate/renovate.tfstate`
|
|
|
|
### 5. Variable Changes
|
|
|
|
#### Removed Variables
|
|
|
|
- `eda_image` → Use `renovate_image` instead
|
|
- `webhook_port` → Not needed for Renovate
|
|
- `rulebook_command` → Replaced by environment variables
|
|
- `upload_example_rulebook` → Use `upload_config_file` instead
|
|
- `cpu_limit` → Removed (can be added back if needed)
|
|
|
|
#### New Required Variables
|
|
|
|
- `renovate_endpoint` - Gitea API endpoint (e.g., `https://gitea.example.com/api/v1/`)
|
|
- `renovate_token` - Gitea personal access token for the bot
|
|
|
|
#### New Optional Variables
|
|
|
|
- `renovate_platform` - Git platform (default: "gitea")
|
|
- `renovate_git_author` - Git commit author
|
|
- `renovate_username` - Bot username
|
|
- `renovate_autodiscover` - Enable auto-discovery
|
|
- `renovate_onboarding_config` - Onboarding configuration
|
|
- `github_com_token` - Optional GitHub.com token
|
|
- `restart_policy` - Container restart policy
|
|
- `upload_config_file` - Upload config.js template
|
|
|
|
### 6. Configuration Files
|
|
|
|
**Before**: `example-rulebook.yml` (YAML-based rulebooks)
|
|
**After**:
|
|
- `config.js.tpl` - Renovate configuration template
|
|
- `example-renovate.json` - Repository-level configuration
|
|
- `example-gitea-workflow.yaml` - CI/CD workflow example
|
|
|
|
## Migration Steps
|
|
|
|
### Option 1: Fresh Deployment (Recommended)
|
|
|
|
This is the safest approach if you don't need to preserve the existing infrastructure.
|
|
|
|
1. **Backup Current State** (if needed):
|
|
```bash
|
|
# Backup current state file
|
|
terraform state pull > ansible-eda-backup.tfstate
|
|
```
|
|
|
|
2. **Destroy Old Infrastructure**:
|
|
```bash
|
|
# Navigate to the module directory
|
|
cd /path/to/terraform-docker-renovate
|
|
|
|
# Destroy existing resources
|
|
terraform destroy
|
|
```
|
|
|
|
3. **Update Configuration**:
|
|
- Update `terraform.tfvars` with new variables
|
|
- Add `renovate_endpoint` and `renovate_token`
|
|
- Remove old EDA-specific variables
|
|
|
|
4. **Initialize and Deploy**:
|
|
```bash
|
|
# Reinitialize (backend path has changed)
|
|
terraform init -reconfigure
|
|
|
|
# Plan and apply
|
|
terraform plan
|
|
terraform apply
|
|
```
|
|
|
|
### Option 2: Side-by-Side Deployment
|
|
|
|
If you want to keep Ansible EDA running while testing Renovate:
|
|
|
|
1. **Copy the Module**:
|
|
```bash
|
|
cp -r terraform-docker-renovate terraform-docker-renovate-backup
|
|
```
|
|
|
|
2. **Deploy in New Location**:
|
|
- Create a new module instance with a different `container_name`
|
|
- Use a different state file path
|
|
- Test Renovate functionality
|
|
|
|
3. **Clean Up Old Deployment**:
|
|
- Once satisfied, destroy the old Ansible EDA deployment
|
|
- Remove the backup module
|
|
|
|
## Configuration Updates
|
|
|
|
### terraform.tfvars
|
|
|
|
**Before**:
|
|
```hcl
|
|
domain = "bsdserver.nl"
|
|
role_id = "xxx"
|
|
secret_id = "xxx"
|
|
```
|
|
|
|
**After**:
|
|
```hcl
|
|
# Renovate Configuration
|
|
domain = "bsdserver.nl"
|
|
role_id = "xxx"
|
|
secret_id = "xxx"
|
|
|
|
# Gitea Configuration
|
|
renovate_endpoint = "https://gitea.bsdserver.nl/api/v1/"
|
|
renovate_token = "your-token-here"
|
|
renovate_git_author = "Renovate Bot <renovate-bot@bsdserver.nl>"
|
|
renovate_username = "renovate-bot"
|
|
```
|
|
|
|
### Module Call
|
|
|
|
**Before**:
|
|
```hcl
|
|
module "ansible_eda" {
|
|
source = "./terraform-docker-eda"
|
|
|
|
domain = "bsdserver.nl"
|
|
container_name = "ansible-eda"
|
|
eda_image = "quay.io/ansible/ansible-rulebook:latest"
|
|
webhook_port = 5000
|
|
role_id = var.vault_role_id
|
|
secret_id = var.vault_secret_id
|
|
}
|
|
```
|
|
|
|
**After**:
|
|
```hcl
|
|
module "renovate" {
|
|
source = "./terraform-docker-renovate"
|
|
|
|
domain = "bsdserver.nl"
|
|
container_name = "renovate"
|
|
renovate_image = "renovate/renovate:latest"
|
|
renovate_endpoint = "https://gitea.bsdserver.nl/api/v1/"
|
|
renovate_token = var.renovate_token
|
|
role_id = var.vault_role_id
|
|
secret_id = var.vault_secret_id
|
|
}
|
|
```
|
|
|
|
## Gitea Setup Requirements
|
|
|
|
Before deploying, ensure you have:
|
|
|
|
1. **Created a Renovate Bot User** in Gitea:
|
|
- Username: `renovate-bot` (or your preference)
|
|
- Full name: "Renovate Bot"
|
|
- Email: `renovate-bot@bsdserver.nl`
|
|
|
|
2. **Generated a Personal Access Token** with scopes:
|
|
- `repo` (Read and Write)
|
|
- `user` (Read)
|
|
- `issue` (Read and Write) - Gitea ≥ 1.20.0
|
|
- `organization` (Read) - Gitea ≥ 1.20.0
|
|
|
|
3. **Added Bot to Repositories**:
|
|
- Add as collaborator to repositories you want to manage
|
|
- Or enable `renovate_autodiscover = true` to find all accessible repos
|
|
|
|
## Post-Migration Tasks
|
|
|
|
After successful deployment:
|
|
|
|
1. **Verify Container Status**:
|
|
```bash
|
|
docker ps | grep renovate
|
|
docker logs renovate -f
|
|
```
|
|
|
|
2. **Test Repository Configuration**:
|
|
- Add `renovate.json` to a test repository
|
|
- Wait for Renovate to create an onboarding PR
|
|
- Review and merge the onboarding PR
|
|
|
|
3. **Monitor Logs**:
|
|
```bash
|
|
docker logs renovate -f
|
|
```
|
|
|
|
4. **Configure Scheduling**:
|
|
- Set up cron job or Gitea Actions workflow
|
|
- See `files/example-gitea-workflow.yaml`
|
|
|
|
## Troubleshooting
|
|
|
|
### State File Issues
|
|
|
|
If you encounter state file conflicts:
|
|
|
|
```bash
|
|
# Reinitialize with new backend configuration
|
|
terraform init -reconfigure
|
|
|
|
# Or migrate state if needed
|
|
terraform init -migrate-state
|
|
```
|
|
|
|
### Container Won't Start
|
|
|
|
Check logs for authentication issues:
|
|
```bash
|
|
docker logs renovate
|
|
```
|
|
|
|
Common issues:
|
|
- Invalid Gitea endpoint (must end with `/api/v1/`)
|
|
- Incorrect or expired token
|
|
- Network connectivity to Gitea instance
|
|
|
|
### Volume Migration
|
|
|
|
If you need to preserve any data (unlikely for this transition):
|
|
|
|
```bash
|
|
# Copy data from old volume to new
|
|
docker run --rm \
|
|
-v ansible-eda-rulebooks:/source:ro \
|
|
-v renovate-config:/dest \
|
|
alpine sh -c "cp -a /source/. /dest/"
|
|
```
|
|
|
|
## Rollback Procedure
|
|
|
|
If you need to rollback to Ansible EDA:
|
|
|
|
1. **Restore from Backup**:
|
|
```bash
|
|
# Restore backup of terraform-docker-renovate module
|
|
rm -rf terraform-docker-renovate
|
|
cp -r terraform-docker-renovate-backup terraform-docker-renovate
|
|
```
|
|
|
|
2. **Destroy Renovate Resources**:
|
|
```bash
|
|
terraform destroy
|
|
```
|
|
|
|
3. **Restore State**:
|
|
```bash
|
|
terraform state push ansible-eda-backup.tfstate
|
|
```
|
|
|
|
4. **Redeploy**:
|
|
```bash
|
|
terraform apply
|
|
```
|
|
|
|
## Additional Resources
|
|
|
|
- [Renovate Documentation](https://docs.renovatebot.com/)
|
|
- [Gitea Platform Configuration](https://docs.renovatebot.com/modules/platform/gitea/)
|
|
- [Self-Hosting Renovate](https://docs.renovatebot.com/examples/self-hosting/)
|
|
- Module README.md for complete documentation
|
|
|
|
## Support
|
|
|
|
For issues or questions:
|
|
1. Review the comprehensive README.md
|
|
2. Check Renovate logs: `docker logs renovate`
|
|
3. Consult the Renovate documentation
|
|
4. Review the CHANGELOG.md for all changes
|