Si la commande terraform init expire en raison de latences réseau ou d'autres problèmes, le téléchargement des providers peut échouer. Pour résoudre ce problème, spécifiez le miroir open source d'Alibaba Cloud.
Problème
Le provider Alibaba Cloud est disponible via les sources suivantes : source = hashicorp/alicloud et source = aliyun/alicloud. En Chine, le téléchargement du provider peut être lent ou échouer :
- 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)
╵
Solution
À partir de la version 0.13.2 de l'interface CLI Terraform, vous pouvez configurer des miroirs réseau. Pour résoudre les problèmes susmentionnés, le provider Alibaba Cloud propose un service de miroir qui permet aux utilisateurs en Chine de télécharger les providers rapidement.
Méthode de configuration
Créez un fichier de configuration nommé .terraformrc ou terraform.rc. Son emplacement dépend du système d'exploitation de votre hôte.
Sous Windows, nommez le fichier
terraform.rcet placez-le dans le répertoire%APPDATA%de l'utilisateur. Le chemin exact varie selon la version de Windows et la configuration du système. Exécutez la commande$env:APPDATAdans PowerShell pour identifier le répertoire sur votre système.Sur les autres systèmes d'exploitation, nommez le fichier
.terraformrcet placez-le dans le répertoire personnel de l'utilisateur concerné.
Vous pouvez également utiliser la variable d'environnement TF_CLI_CONFIG_FILE pour spécifier le chemin du fichier de configuration de l'interface CLI Terraform. Le fichier doit respecter le format de nommage *.tfrc.
Sous macOS, créez un fichier nommé .terraformrc dans votre répertoire personnel avec le contenu suivant :
provider_installation {
network_mirror {
url = "https://mirrors.aliyun.com/terraform/"
// Only Alibaba Cloud-related providers can be downloaded from image sources in the Chinese mainland.
include = ["registry.terraform.io/aliyun/alicloud",
"registry.terraform.io/hashicorp/alicloud",
]
}
direct {
// All providers except Alibaba Cloud-related providers maintain the original download links.
exclude = ["registry.terraform.io/aliyun/alicloud",
"registry.terraform.io/hashicorp/alicloud",
]
}
}