すべてのプロダクト
Search
ドキュメントセンター

:Terraform 初期化の高速化ソリューションを構成する

最終更新日:Mar 19, 2025

ネットワーク遅延などの理由で terraform init コマンドがタイムアウトした場合、プロバイダーをダウンロードできないなどの問題が発生する可能性があります。これらの問題を解決するために、Alibaba Cloud オープンソースイメージ Web サイトを指定できます。

問題

Alibaba Cloud プロバイダーは、source = hashicorp/alicloud および source = aliyun/alicloud のソースからダウンロードできます。中国でプロバイダーをダウンロードすると、ダウンロード速度が遅くなったり、ダウンロードが失敗したりすることがあります。

- Finding aliyun/alicloud versions matching "1.191.0"...
╷
│ Error: Failed to query available provider packages
│
│ Could not retrieve the list of available versions for provider aliyun/alicloud: could not query provider registry for registry.terraform.io/aliyun/alicloud: the request
│ failed after 2 attempts, please try again later: Get "https://registry.terraform.io/v1/providers/aliyun/alicloud/versions": net/http: request canceled (Client.Timeout
│ exceeded while awaiting headers)
╵

- Finding hashicorp/alicloud versions matching "1.191.0"...
╷
│ Error: Failed to query available provider packages
│
│ Could not retrieve the list of available versions for provider hashicorp/alicloud: could not query provider registry for registry.terraform.io/hashicorp/alicloud: the
│ request failed after 2 attempts, please try again later: Get "https://registry.terraform.io/v1/providers/hashicorp/alicloud/versions": context deadline exceeded
│ (Client.Timeout exceeded while awaiting headers)
╵

ソリューション

Terraform CLI V0.13.2 以降のバージョンでは、ネットワークイメージを構成できます。前述の問題を解決するために、Alibaba Cloud プロバイダーは、中国のユーザーがイメージを高速にダウンロードできるようにイメージサービスを提供しています。

構成方法

.terraformrc または terraform.rc という名前の構成ファイルを作成します。ファイルの場所は、ホストのオペレーティングシステムによって異なります。

  • Windows オペレーティングシステムの場合、ファイル名は terraform.rc で、ユーザーの %APPDATA% ディレクトリに保存する必要があります。具体的なディレクトリは、Windows のバージョンとシステム構成によって異なります。PowerShell で $env:APPDATA コマンドを実行すると、オペレーティングシステム内のファイルディレクトリを確認できます。

  • その他のすべてのオペレーティングシステムの場合、ファイル名は .terraformrc で、関連ユーザーのホームディレクトリに保存する必要があります。

TF_CLI_CONFIG_FILE 環境変数を使用して、Terraform CLI の構成ファイルのディレクトリを指定することもできます。構成ファイルは、*.tfrc という命名形式に従う必要があります。

macOS を使用する場合は、ホームディレクトリに .terraformrc という名前のファイルを作成します。ファイルには、次の内容が含まれています。

provider_installation {
  network_mirror {
    url = "https://mirrors.aliyun.com/terraform/"
    // 中国本土のイメージソースからダウンロードできるのは、Alibaba Cloud 関連のプロバイダーのみです。
    include = ["registry.terraform.io/aliyun/alicloud", 
               "registry.terraform.io/hashicorp/alicloud",
              ]   
  }
  direct {
    // Alibaba Cloud 関連のプロバイダーを除くすべてのプロバイダーは、元のダウンロードリンクを維持します。
    exclude = ["registry.terraform.io/aliyun/alicloud", 
               "registry.terraform.io/hashicorp/alicloud",
              ]  
  }
}