This directory contains Python scripts and utilities organized by service/usecase for Charon infrastructure automation.
create_cloudflare_secret.py- Create Kubernetes secret for Cloudflare API tokenwait_for_cert_manager.py- Wait for cert-manager deployment to be readywait_for_wildcard_cert.py- Wait for wildcard certificate to be issued
find_in_path.py- Utility for finding files in system PATH
delete_a_record.py- Delete DNS A records via Cloudflare APIprune_dns_records.py- Remove stale DNS recordsupdate_service_dns.py- Update service DNS records after Tailscale registration
configure_freeipa.py- Configure FreeIPA server settingscreate_users.py- Create users in FreeIPA from JSON configurationfreeipa_users.json- User configuration datainit_freeipa.py- Initialize FreeIPA server
cleanup_headscale_nodes.py- Clean up stale Headscale nodes and DNS recordscreate_headscale_user_and_key.py- Create Headscale users and pre-auth keysget_headscale_api_key.py- Retrieve Headscale API keyswait_for_headscale.py- Wait for Headscale service to be ready
setup-dev-env.py- Set up Kubernetes development environmentteardown-dev-env.py- Tear down Kubernetes development environment
backup_restore_db.py- Backup and restore Redmine PostgreSQL databaseconfigure_ldap.py- Configure LDAP authentication for Redminemirror_docs.py- Mirror documentation from Git to Redminetest_connection.py- Test connection to Redmine instanceREADME.md- Detailed Redmine scripts documentation
clear_tailscale_state.py- Clear Tailscale node stateget_tailscale_key.py- Generate Tailscale pre-auth keys from Headscaleinit_tailscale.py- Initialize Tailscale nodeslifecycle_cleanup.py- Clean up old Tailscale nodes (init container)lifecycle_dns_create.py- Create DNS records after Tailscale registration (sidecar)tailscale_entrypoint.py- Tailscale container entrypoint
fix_zero_indexing.py- Fix Terraform[0]indexing issuesterraform-mcp-setup.md- Terraform MCP setup documentation
All scripts have corresponding unit tests in the tests/ directory with comprehensive coverage for:
- Error handling and edge cases
- Environment variable validation
- API call mocking
- JSON parsing and validation
- Subprocess execution mocking
Run tests with: pytest tests/
Scripts are designed to be called from Terraform external data sources or as Kubernetes init containers/sidecars. Most scripts:
- Accept environment variables for configuration
- Output JSON for Terraform consumption
- Exit with code 0 on success, 1 on failure
- Include comprehensive error messages
- Handle "already exists" scenarios gracefully
See individual script docstrings and --help output for detailed usage information.