0

説明: Terraform に Elasticsearch プロバイダーを使用しようとしています。Elastic または Hashicorp からの公式のものがないため、コミュニティの「https://registry.terraform.io/providers/phillbaker/elasticsearch/latest」を使用しようとしています。

Terraform バージョン: Terraform v0.14.4

コード:

すべてを1つの.tfファイルに入れようとしました。また、Hashicorp が推奨するようなリソース用に別のモジュールを作成しようとしました。どちらの方法でも、同じエラー メッセージが生成されます。

terraform {
  required_providers {
    elk = {
      source  = "phillbaker/elasticsearch"
      version = "1.5.1"
    }
  }
}

provider "elk" {
  url = "https://<my_elk_server>"
}

resource "elasticsearch_index" "index" {
  name = var.elasticsearch_index_name
}

問題:

terraform init何らかの理由で、Terraform レジストリで適切なプロバイダーを見つけることができません。

Initializing the backend...

Initializing provider plugins...
- Finding latest version of hashicorp/elasticsearch...
- Finding phillbaker/elasticsearch versions matching "1.5.1"...
- Installing phillbaker/elasticsearch v1.5.1...
- Installed phillbaker/elasticsearch v1.5.1 (self-signed, key ID 02AD42CD82B6A957)

Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:

Error: Failed to query available provider packages
https://www.terraform.io/docs/plugins/signing.html

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

If you have just upgraded directly from Terraform v0.12 to Terraform v0.14
then please upgrade to Terraform v0.13 first and follow the upgrade guide for
that release, which might help you address this problem.

tfstate ファイルは生成されていません。

Terraform Registry からサード パーティ プロバイダーを使用するにはどうすればよいですか?

4

2 に答える 2

0

したがって、テストした後、コード全体を同じ .tf ファイルに入れるとうまくいくようです。

terraform {
  required_providers {
    elasticsearch = {
      source  = "phillbaker/elasticsearch"
      version = "1.5.1"
    }
  }
}

provider "elasticsearch" {
  url = "http://127.0.0.1:9200"
}

resource "elasticsearch_index" "index" {
  name     = var.index_name
}

別のモジュールを作成したい場合は、別のモジュールから入手できます。

module "elastic" {
  index_name    = var.index_name

  source        = "./modules/elastic"
}

詳細については、マーティンの回答を確認してください。

于 2021-01-18T10:27:50.637 に答える