1 min read

How to migrate from plugins to Terraform 0.13 registry providers

How to migrate from plugins to Terraform 0.13 registry providers

If you are using external community Terraform 0.12 plugin/provider, you should migrate to Terraform 0.13 and use required_providers instead of downloading provider from Github and extracting to ~/.terraform.d/plugins/ folder.

But there will be some circumstances

In Terraform 0.13 you have to define required_providers and use new Hashicorp Registry - in my case "timohirt/hetznerdns" https://registry.terraform.io/providers/timohirt/hetznerdns/latest/docs

terraform {
  required_providers {
    hetznerdns = {
      source = "timohirt/hetznerdns"
      version = "1.0.7"
    }
  }
}

But after terraform init you will end up with error

Initializing provider plugins...
- Using previously-installed timohirt/hetznerdns v1.0.7
- Finding latest version of -/hetznerdns...

Error: Failed to query available provider packages

Could not retrieve the list of available versions for provider -/hetznerdns:
provider registry registry.terraform.io does not have a provider named
registry.terraform.io/-/hetznerdns

You have to replace your old plugin with new provider with this command (replace your provider name with yours)

terraform state replace-provider "registry.terraform.io/-/hetznerdns" timohirt/hetznerdns

Result


Terraform will perform the following actions:

  ~ Updating provider:
    - registry.terraform.io/-/hetznerdns
    + registry.terraform.io/timohirt/hetznerdns

Changing 20 resources:

  module.recepty_eu_records.hetznerdns_record.gsuite_docs
  module.recepty_eu_records.hetznerdns_record.mxalt4
  module.recepty_eu_records.hetznerdns_record.root6
  module.recepty_eu_records.hetznerdns_record.mx
  module.recepty_eu_records.hetznerdns_record.mxalt2
  module.recepty_eu_records.hetznerdns_record.txtbrave
  module.recepty_eu_records.hetznerdns_record.acmechallenge
  module.recepty_eu_records.hetznerdns_record.txtgoogle
  module.recepty_eu_records.hetznerdns_record.txtspf
  module.recepty_eu_records.hetznerdns_record.all
  module.recepty_eu_records.hetznerdns_record.txtdkim
  module.recepty_eu_records.hetznerdns_record.gsuite_calendar
  module.recepty_eu_records.hetznerdns_record.bingsiteverification
  module.recepty_eu_records.hetznerdns_record.root
  module.recepty_eu_records.hetznerdns_zone.zone1
  module.recepty_eu_records.hetznerdns_record.www
  module.recepty_eu_records.hetznerdns_record.gsuite_mail
  module.recepty_eu_records.hetznerdns_record.mxalt3
  module.recepty_eu_records.hetznerdns_record.txtdmarc
  module.recepty_eu_records.hetznerdns_record.mxalt1


Do you want to make these changes?
Only 'yes' will be accepted to continue.

Enter a value: yes

Successfully replaced provider for 20 resources.