Skip to content

terraspace_plugin_digitalocean #362

@aberios

Description

@aberios

Summary

I'm finding more and more users migrating to DigitalOcean from AWS as a result of competitive pricing and simplified management. It would be great if Terraspace had a DigitalOcean plugin to simplify infrastructure-as-code workflows for DigitalOcean users.

Motivation

With over 650,000 companies utilizing DigitalOcean (based on Enlyft estimates), this would be a great opportunity to drive Terraspace adoption. Many users find DigitalOcean appealing for its competitive pricing, developer-friendly interface, and streamlined product offerings. By supporting DigitalOcean, Terraspace can tap into a growing community of developers and businesses, expanding its relevance across multiple cloud platforms.

Furthermore, providing support for DigitalOcean aligns with Terraspace's mission to make infrastructure management more accessible, no matter which cloud provider a user chooses.

Guide-level explanation

To implement this feature, Terraspace would introduce a new plugin: terraspace_plugin_digitalocean. This plugin would integrate with DigitalOcean's Terraform provider and follow the patterns established by existing plugins like terraspace_plugin_aws and terraspace_plugin_google.

Key Features:

  1. Resource Management:

    • Enable users to manage DigitalOcean resources such as Droplets, Kubernetes clusters, load balancers, databases, and networking resources.
    • Simplify configuration for common workflows, like scaling droplets or managing backups.
  2. Command Support:

    • Provide terraspace commands tailored for DigitalOcean, such as terraspace new project --provider digitalocean.
    • Include generators for standard DigitalOcean resource modules.
  3. Integration with DigitalOcean Provider:

    • Use DigitalOcean's Terraform provider for seamless infrastructure provisioning.
    • Handle authentication via API tokens, similar to existing providers.
  4. Examples and Documentation:

    • Provide clear documentation and sample projects demonstrating common use cases such as setting up a Kubernetes cluster, deploying web apps, or managing DNS with DigitalOcean.

Example Usage:

  1. Initialize a new Terraspace project for DigitalOcean:

    terraspace new project my-digitalocean-project --provider digitalocean
  2. Generate a resource module:

    terraspace new module droplet
  3. Deploy infrastructure:

    terraspace up
  4. Clean up resources:

    terraspace down

Drawbacks

  1. Maintenance Overhead:

    • Adding a new plugin would require ongoing maintenance to stay in sync with DigitalOcean's Terraform provider updates and API changes.
    • Documentation and examples would need to be updated regularly as new DigitalOcean features become available.
  2. Increased Complexity:

    • Supporting another provider adds complexity to the Terraspace codebase and testing suite, potentially diverting resources from other improvements.

Unresolved Questions

  1. Scope of Initial Implementation:

    • Should the plugin cover all DigitalOcean resources at launch, or focus on a subset like Droplets and Kubernetes clusters?
    • How much customization should be provided in Terraspace templates for DigitalOcean-specific workflows?
  2. Provider-Specific Features:

    • Should the plugin support advanced DigitalOcean features, like App Platform integration, in addition to Terraform-supported resources?
    • How to handle potential gaps or limitations in the DigitalOcean Terraform provider?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions