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

v0.12: no available version is compatible with this version of Terraform #21235

Closed
apparentlymart opened this issue May 7, 2019 · 22 comments
Closed

Comments

@apparentlymart
Copy link
Member

At the time of opening this issue, several HashiCorp-hosted Terraform providers do not have Terraform v0.12-compatible releases. This issue is intended to serve as a central proxy for the work happening across various provider teams, mainly so that searches for the relevant error message (in the summary of this issue) are likely to turn up this issue as a search result.

The full text of the relevant error message is:

No available provider "example" plugins are compatible with this Terraform version.

From time to time, new Terraform major releases can change the requirements for
plugins such that older plugins become incompatible.

Terraform checked all of the plugin versions matching the given constraint:
    (any version)

Unfortunately, none of the suitable versions are compatible with this version
of Terraform. If you have recently upgraded Terraform, it may be necessary to
move to a newer major release of this provider. Alternatively, if you are
attempting to upgrade the provider to a new major version you may need to
also upgrade Terraform to support the new version.

Consult the documentation for this provider for more information on
compatibility between provider versions and Terraform versions.


Error: no available version is compatible with this version of Terraform

0.12-compatible provider releases will be released gradually as each provider team completes testing and any necessary changes to work with the v0.12-compatible SDK version. For the moment, we recommend that those using providers that have not yet been updated should stay on Terraform v0.11.

@apparentlymart
Copy link
Member Author

As of this comment, the following provider releases are compatible:

name version
archive 1.2.2
arukas 1.1.0
aws 2.9.0
azuread 0.3.1
azurerm 1.27.0
azurestack 0.6.0
ciscoasa 1.1.0
digitalocean 1.2.0
dns 2.1.1
external 1.1.2
github 2.0.0
google 2.6.0
google-beta 2.5.1
helm 0.9.1
http 1.1.1
kubernetes 1.6.2
local 1.2.2
newrelic 1.5.0
null 2.1.2
opc 1.3.6
oraclepaas 1.5.2
packet 2.1.0
random 2.1.0
selectel 2.1.0
spotinst 1.13.2
template 2.1.2
tls 2.0.1

We recommend upgrading to the latest available compatible version of each provider (not necessarily the version shown in the above table, which will grow stale over time) because subsequent releases may include fixes to improve v0.12 compatibility.

To avoid changing too many things in a single step, we recommend upgrading the provider to a suitable version first while remaining on Terraform 0.11, and then (once you've updated your configuration for any changes required by the provider upgrade and completed a terraform apply) upgrade to Terraform 0.12. For the moment, these new provider releases are compatible with both 0.11 and 0.12, though over time Terraform 0.11 support will be phased out.

The list of updated providers is growing all the time, so the above is likely to grow stale quickly. To get the latest status for providers not listed above, make a simple Terraform configuration containing only a provider block for each provider you are interested in and run terraform init in that directory to see whether it succeeds.

@nbering
Copy link

nbering commented May 7, 2019

For plugin authors... is that detailed message special-cased to Hashicorp-supported providers? Is there a similar detailed message now for plugins with a mismatched plugin protocol version field?

@apparentlymart
Copy link
Member Author

The error message I quoted here is from the plugin installer, which currrently works only with the HashiCorp-hosted providers. I think you may be referring instead to the message generated when a provider is installed manually by the user and has a mismatched protocol version, which is indeed a different message. The information in this issue doesn't apply to third-party-distributed providers.

@nbering
Copy link

nbering commented May 7, 2019

@apparentlymart Thanks. That's the piece of context I was looking for.

@paultyng paultyng pinned this issue May 22, 2019
@vancluever vancluever unpinned this issue May 22, 2019
@paultyng paultyng pinned this issue May 22, 2019
@balupton
Copy link

balupton commented May 22, 2019

Is there a list of the providers that are still not compatible with 0.12?

I'm particularly interested in the status of cloudflare, scaleway, consul, vault, nomad

@apparentlymart
Copy link
Member Author

Terraform 0.11.14's terraform 0.12checklist command can tell you before you upgrade if all of the providers you are using in your current configuration have 0.12.0-compatible versions available. It does that using the Terraform Registry API, so if you'd rather ask the registry directly you can do so with a command line like the following:

curl https://registry.terraform.io/v1/providers/-/aws/versions | jq '.versions | .[] | select(.protocols[] | contains("5.0")) | .version'

@cregkly
Copy link

cregkly commented May 23, 2019

What about the terraform provider?

I get this when running terraform 0.12checklist

[ ] Upgrade provider "terraform" to a version that is compatible with Terraform 0.12.

@apparentlymart
Copy link
Member Author

Thanks for reporting that, @Quaeritate. It looks like we missed an exception for that provider in 0.12checklist, since that provider is embedded into Terraform Core itself and thus doesn't need to be installed or upgraded separately. You can ignore that checklist item.

It's too late now for us to change the checklist rules, but we'll see where is a good place to document this to minimize the confusion for others.

@hstanda
Copy link

hstanda commented May 25, 2019

@balupton

Initializing the backend...
Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.

Initializing provider plugins...

  • Checking for available provider plugins...

No available provider "mysql" plugins are compatible with this Terraform version.

From time to time, new Terraform major releases can change the requirements for
plugins such that older plugins become incompatible.

Terraform checked all of the plugin versions matching the given constraint:
(any version)

Unfortunately, none of the suitable versions are compatible with this version
of Terraform. If you have recently upgraded Terraform, it may be necessary to
move to a newer major release of this provider. Alternatively, if you are
attempting to upgrade the provider to a new major version you may need to
also upgrade Terraform to support the new version.

Consult the documentation for this provider for more information on
compatibility between provider versions and Terraform versions.

  • Downloading plugin for provider "aws" (terraform-providers/aws) 2.12.0...
  • Downloading plugin for provider "template" (terraform-providers/template) 2.1.2...

Error: no available version is compatible with this version of Terraform

@noadmin
Copy link

noadmin commented May 27, 2019

The most ridiculous thing for me, that hashicorp vault plugin is incompatible with actual hashicorp terraform, regardless that they from one company:
No available provider "vault" plugins are compatible with this Terraform version.
What can I say? Great upgrade, kudos.

@cregkly
Copy link

cregkly commented May 27, 2019

Thanks for reporting that, @Quaeritate. It looks like we missed an exception for that provider in 0.12checklist, since that provider is embedded into Terraform Core itself and thus doesn't need to be installed or upgraded separately. You can ignore that checklist item.

It's too late now for us to change the checklist rules, but we'll see where is a good place to document this to minimize the confusion for others.

Actually the since the provider is in core now, clearing out the .terraform folder and re-initializing mitigates the problem.

@ohmer
Copy link

ohmer commented May 28, 2019

Note that 0.12checklist works only if stack has been inititialized:

➜  pagerduty git:(master) ✗ terraform 0.12checklist
Looks good! We did not detect any problems that ought to be
addressed before upgrading to Terraform v0.12.

This tool is not perfect though, so please check the v0.12 upgrade
guide for additional guidance, and for next steps:
    https://www.terraform.io/upgrade-guides/0-12.html
➜  pagerduty git:(master) ✗ ls -la
total 80
drwxr-xr-x  11 mamichaud  329246127   352 28 May 14:36 .
drwx------  69 mamichaud  329246127  2208 27 May 14:35 ..
-rw-r--r--   1 mamichaud  329246127    63 20 May 11:38 d_vendor.tf
-rw-r--r--   1 mamichaud  329246127   152 17 May 15:15 main.tf
-rw-r--r--   1 mamichaud  329246127   532 27 May 16:29 r_escalation_policy.tf
-rw-r--r--   1 mamichaud  329246127   360 20 May 13:57 r_service.tf
-rw-r--r--   1 mamichaud  329246127   232 20 May 13:17 r_service_integration.tf
-rw-r--r--   1 mamichaud  329246127   251 27 May 16:22 r_team.tf
-rw-r--r--   1 mamichaud  329246127   891 17 May 12:10 r_team_membership.tf
-rw-r--r--   1 mamichaud  329246127  1030 17 May 12:09 r_user.tf
-rw-r--r--   1 mamichaud  329246127  5336 17 May 12:44 r_user_contact_method.tf
➜  pagerduty git:(master) ✗ terraform init

Initializing the backend...

Successfully configured the backend "remote"! Terraform will automatically
use this backend unless the backend configuration changes.

Initializing provider plugins...
- Checking for available provider plugins on https://releases.hashicorp.com...
- Downloading plugin for provider "pagerduty" (1.2.1)...

The following providers do not have any version constraints in configuration,
so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.

* provider.pagerduty: version = "~> 1.2"

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
➜  pagerduty git:(master) ✗ terraform 0.12checklist
After analyzing this configuration and working directory, we have identified some necessary steps that we recommend you take before upgrading to Terraform v0.12:

- [ ] Upgrade provider "pagerduty" to a version that is compatible with Terraform 0.12.

  No compatible version is available for automatic installation at this time. If this provider is still supported (not archived) then a compatible release should be available soon. For more information, check for 0.12 compatibility tasks in the provider's issue tracker.

Taking these steps before upgrading to Terraform v0.12 will simplify the upgrade process by avoiding syntax errors and other compatibility problems.
➜  pagerduty git:(master) ✗ terraform --version
Terraform v0.11.14
+ provider.pagerduty v1.2.1

Your version of Terraform is out of date! The latest version
is 0.12.0. You can update by downloading from www.terraform.io/downloads.html

@limitusus
Copy link

terraform-provider-pagerduty is now compat with v0.12 ✌️

@ghost
Copy link

ghost commented Jun 3, 2019

is there a place that we can check the expected release date for a terraform 0.12 compatible version of vault/consul/nomad provider?

@apparentlymart
Copy link
Member Author

Providers are developed in their own separate repositories, so if you are interested in tracking the progress for a particular provider I'd suggest looking for issues in each provider's own repository. Some of them may not yet have tracking issues open, but I'm sure if you open one the maintainers will be happy to share some details on current status.

@adriansirbe
Copy link

adriansirbe commented Jun 4, 2019

When can we see it working for statuscake provider?
Initializing provider plugins...

  • Checking for available provider plugins...
  • Downloading plugin for provider "template" (terraform-providers/template) 2.1.2...
  • Downloading plugin for provider "aws" (terraform-providers/aws) 2.13.0...
  • Downloading plugin for provider "random" (terraform-providers/random) 2.1.2...

No available provider "statuscake" plugins are compatible with this Terraform version.

From time to time, new Terraform major releases can change the requirements for
plugins such that older plugins become incompatible.

Terraform checked all of the plugin versions matching the given constraint:
(any version)

Unfortunately, none of the suitable versions are compatible with this version
of Terraform. If you have recently upgraded Terraform, it may be necessary to
move to a newer major release of this provider. Alternatively, if you are
attempting to upgrade the provider to a new major version you may need to
also upgrade Terraform to support the new version.

Consult the documentation for this provider for more information on
compatibility between provider versions and Terraform versions.

  • Downloading plugin for provider "null" (terraform-providers/null) 2.1.2...

Warning: Skipping backend initialization pending configuration upgrade

The root module configuration contains errors that may be fixed by running the
configuration upgrade tool, so Terraform is skipping backend initialization.
See below for more information.

Error: no available version is compatible with this version of Terraform

@apparentlymart
Copy link
Member Author

As I mentioned in my previous comment yesterday: the best place to follow the status of individual providers is in their own repositories. Providers are not developed in this repository, and the maintainers of the individual providers have the best sense of what work remains to get them updated.

For StatusCake, it looks like the relevant tracking issue is terraform-providers/terraform-provider-statuscake#31. If you are interested in a different provider and don't see an issue in its repository already opened for 0.12 compatibility, feel free to open one.

No ongoing status of individual providers will be shared in this issue. This issue is here to explain the general problem for those seeing the error during upgrade, but the Terraform Core team does not have detailed visibility into the work of all of the individual provider codebases.

@nyurik
Copy link
Contributor

nyurik commented Jun 21, 2019

Vault provider 2.0 has been released on June 19th with 0.12 support. https://www.terraform.io/docs/providers/vault/version_2_upgrade.html

@teamterraform
Copy link
Contributor

Hi all!

We left this issue open during the initial rush of Terraform 0.12 upgrades as a central place to represent this error case, but the need for it has cooled off in the time since the initial 0.12 release, and so we're going to close it.

If there is a provider you depend on that is still lacking Terraform 0.12 support, please open an issue in that provider's own repository to represent that (if there isn't one already).

@justinian-tomegea
Copy link

Initializing provider plugins...

  • Checking for available provider plugins...

Provider "aws" v1.60.0 is not compatible with Terraform 0.12.5.

"aws" v1.60.0" is actually the version of the awscli package installed via easy_install or pip.

terraform init than exits

@DevallaSubbu
Copy link

Can any one help me on this error?

D:\Office\terraform_0.12.6_windows_amd64>upgrade terraform 0.12
'upgrade' is not recognized as an internal or external command,
operable program or batch file.

D:\Office\terraform_0.12.6_windows_amd64>terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.


Error: error validating provider credentials: error calling sts:GetCallerIdentity: InvalidClientTokenId: The security token included in the request is invalid.
status code: 403, request id: e3e02c4d-d329-11e9-a765-a95c54922013

on AWS-EC2-Instance_V2.tf line 1, in provider "aws":
1: provider "aws" {

@github-actions
Copy link

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.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests