Skip to content

Latest commit

 

History

History
86 lines (58 loc) · 3.25 KB

File metadata and controls

86 lines (58 loc) · 3.25 KB

Scripts Organization

This directory contains Python scripts and utilities organized by service/usecase for Charon infrastructure automation.

Directory Structure

cert-manager/ - Certificate management scripts

  • create_cloudflare_secret.py - Create Kubernetes secret for Cloudflare API token
  • wait_for_cert_manager.py - Wait for cert-manager deployment to be ready
  • wait_for_wildcard_cert.py - Wait for wildcard certificate to be issued

core/ - Core utility scripts

  • find_in_path.py - Utility for finding files in system PATH

dns/ - DNS management scripts

  • delete_a_record.py - Delete DNS A records via Cloudflare API
  • prune_dns_records.py - Remove stale DNS records
  • update_service_dns.py - Update service DNS records after Tailscale registration

freeipa/ - FreeIPA identity management scripts

  • configure_freeipa.py - Configure FreeIPA server settings
  • create_users.py - Create users in FreeIPA from JSON configuration
  • freeipa_users.json - User configuration data
  • init_freeipa.py - Initialize FreeIPA server

headscale/ - Headscale VPN management scripts

  • cleanup_headscale_nodes.py - Clean up stale Headscale nodes and DNS records
  • create_headscale_user_and_key.py - Create Headscale users and pre-auth keys
  • get_headscale_api_key.py - Retrieve Headscale API keys
  • wait_for_headscale.py - Wait for Headscale service to be ready

k8s/ - Kubernetes utility scripts

  • setup-dev-env.py - Set up Kubernetes development environment
  • teardown-dev-env.py - Tear down Kubernetes development environment

redmine/ - Redmine project management scripts

  • backup_restore_db.py - Backup and restore Redmine PostgreSQL database
  • configure_ldap.py - Configure LDAP authentication for Redmine
  • mirror_docs.py - Mirror documentation from Git to Redmine
  • test_connection.py - Test connection to Redmine instance
  • README.md - Detailed Redmine scripts documentation

tailscale/ - Tailscale VPN scripts

  • clear_tailscale_state.py - Clear Tailscale node state
  • get_tailscale_key.py - Generate Tailscale pre-auth keys from Headscale
  • init_tailscale.py - Initialize Tailscale nodes
  • lifecycle_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

terraform/ - Terraform utility scripts

  • fix_zero_indexing.py - Fix Terraform [0] indexing issues
  • terraform-mcp-setup.md - Terraform MCP setup documentation

Testing

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/

Usage

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.