Introduce a pluggable "backend" interface. Each instance of this interface contains logic specific for spinning up Cassandra instances in various environments. The existing logic would be moved to a "local" or "local install" backend. Additional backends might include a "docker" backend (for spinning up an instance using one of the defined Docker images) as well as vendor-maintained backends for the various hosted services (Astra, Amazon Keyspaces, etc.)
Main goal here is to make ccm a common interface for creating, managing and destroying instances across a wide range of environments.