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

Proposal: plugin manager #8347

Closed
StyleT opened this issue Aug 20, 2016 · 11 comments
Closed

Proposal: plugin manager #8347

StyleT opened this issue Aug 20, 2016 · 11 comments

Comments

@StyleT
Copy link

StyleT commented Aug 20, 2016

Hi there,

I see that terraform provides easy way to extend it's functionality via plugins. But currently if I want to use this feature I'm facing with the following issues:

  • I have no place where I can search for available modules. Like we have in nodejs & php
  • For plugin installation I should be aware about Go build process and have appropriate build tools installed. See example here & here for example.
  • I can't specify list of required plugins for my TF config & install them in 1 click. Like I can do for nodejs with package.json & php with composer.json

Looks likes that this causes small ecosystem of TF plugins. Especially comparing to huge amount of work around TF itself.

Please correct me if I missed something 😉

Terraform Version

0.7.1

@jen20
Copy link
Contributor

jen20 commented Aug 21, 2016

Hi @StyleT! I have discussed this in the past with @phinze and @mitchellh, and we came to the conclusion that this was something we will look into at some point in the future, but in terms of major feature work will probably be a while off. I've tagged this as thinking for now, we'll circle back to this when it gets scheduled on the roadmap. Thanks for opening an issue!

@cemo
Copy link

cemo commented May 22, 2017

Is there something news on this @mitchellh, @jen20, @phinze ?

@StyleT
Copy link
Author

StyleT commented May 22, 2017

Also I'm pretty sure that current way of TF development when we have a LOT of providers bundled inside TF & each change inside those providers requires approval of core TF team leads to nowhere.

@StyleT
Copy link
Author

StyleT commented May 22, 2017

In perfect case TF can be shipped without any providers at all (except template, remote state, etc..) & all necessary ones can be installed via package manager.

@apparentlymart
Copy link
Contributor

Hi @StyleT, @cemo,

We are currently working on some foundational parts of this, allowing plugins to be installed automatically.

The immediate-term goal is to make it easier to release changes to individual "builtin" providers (which will no longer be "built in" in), rather than having everything wrapped up in a single big-bang release that makes upgrading risky. In the first phase third-party plugins won't be supported for automatic installation, since we want to make sure we've got the model right before creating compatibility constraints, but that is the longer-term goal.

More news on this when we have it!

@pbar1
Copy link

pbar1 commented Oct 4, 2018

Any movement on this in the past year? I've been contemplating making something like this.

@mildwonkey
Copy link
Contributor

@pbar1 I believe this issue can be closed, since provider plugins were removed from core last summer: https://www.hashicorp.com/blog/upcoming-provider-changes-in-terraform-0-10

Here's the updated provider documentation which included information on building and using custom providers.

Is there a more specific feature you were looking for that isn't covered here?

@pbar1
Copy link

pbar1 commented Oct 7, 2018

I'm thinking of something like a plugin manager for third-party plugins, kind of like zplug for ZSH and vim-plug for Vim. Or maybe even better than that, if it'd be possible to specify the location (similar to remote modules) of a third-party provider plugin. Maybe something like this:

provider "example-third-party" {
  source  = "terraform-example-providers/foo/bar"
  version = "1.0.0"
  
  # configure the provider here
}

This way, if your project depends on a custom provider like this, it could be more easily vendored. I could see differing operating systems being a problem, but it seems you could solve that by leveraging go get.

@ringods
Copy link
Contributor

ringods commented Oct 9, 2018

@mildwonkey what is not covered yet for third-party providers is the automatic download. This is currently only supported for the providers officially supported by Hashicorp.

@apparentlymart
Copy link
Contributor

Hi all! Sorry for the silence here.

There is a more recent issue #15252 that we've been posting updates to; we honestly lost track of this one because it dates back to before the providers were split out of Terraform Core at all.

As you can see from my comments over in #15252, this is still a goal and the plan of action for it is to work with the team that maintains Terraform Registry to incorporate provider indexing into it along with its current mission of module indexing. That will also include the definition of another registry protocol that can be implemented by others who want to run their own registry, and it will be available also as part of the integrated private registry offered by Terraform Enterprise.

Some groundwork for that is being laid by the registry team right now. We'll share more about this over in #15252 as the plans solidify. I'm going to close this issue just to consolidate the discussion over in the other issue, so we won't lose track of this one again.

@ghost
Copy link

ghost commented Apr 1, 2020

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@ghost ghost locked and limited conversation to collaborators Apr 1, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

7 participants