Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

terraspace_plugin_digitalocean #362

Open
aberios opened this issue Nov 28, 2024 · 0 comments
Open

terraspace_plugin_digitalocean #362

aberios opened this issue Nov 28, 2024 · 0 comments

Comments

@aberios
Copy link

aberios commented Nov 28, 2024

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?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant