Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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.