Aller au contenu

Providers

·
terraform
Jérémy Norgol
Auteur
Jérémy Norgol
Consultant ingénieur Linux Devops

Définition
#

Les providers sont des plugins utilisés par Terraform pour interagir avec des providers de cloud, des providers SaaS et d’autres API.

Les configurations Terraform doivent déclarer les providers dont elles ont besoin afin que Terraform puisse les installer et les utiliser. De plus, certains providers nécessitent une configuration spécifique (comme des URL de point de terminaison ou des régions cloud) avant de pouvoir être utilisés.

Chaque provider ajoute un ensemble de types de ressources et/ou de sources de données que Terraform peut gérer.

Chaque type de ressource est implémenté par un provider ; sans providers, Terraform ne peut pas gérer d’infrastructure.

Les providers sont distribués séparément de Terraform et ont leur propre calendrier de publication et leurs propres numéros de version.

Le Terraform Registry est le principal répertoire des providers Terraform disponibles publiquement et héberge des providers pour la plupart des principales plateformes d’infrastructure.

Chaque provider dispose de sa propre documentation, décrivant ses types de ressources et leurs arguments.

Le Terraform Registry inclut la documentation pour une large gamme de providers développés par HashiCorp, des providers tiers et notre communauté Terraform. Utilisez le lien “Documentation” dans l’en-tête d’un provider pour parcourir sa documentation.

Les providers sont publiés séparément de Terraform lui-même et ont leurs propres numéros de version. En production, nous recommandons de contraindre les versions acceptables des providers dans le bloc provider requirements de la configuration, afin de vous assurer que terraform init n’installe pas de nouvelles versions du provider incompatibles avec la configuration.

Pour utiliser des ressources d’un provider donné, vous devez inclure des informations à son sujet dans votre configuration. Consultez les pages suivantes pour plus de détails :

  • Provider Requirements explique comment déclarer les providersafin que Terraform puisse les installer.

  • Provider Configuration explique comment configurer les paramètres des provider.

  • Dependency Lock File explique qu’un fichier HCL supplémentaire peut être inclus avec une configuration pour indiquer à Terraform d’utiliser toujours un ensemble spécifique de versions de provider.

Les providers sont installés par Terraform Cloud, Terraform Enterprise et le CLI Terraform. Le CLI Terraform trouve et installe les providers lors de l’initialisation d’un répertoire de travail. Il peut télécharger automatiquement les providers à partir d’un registre Terraform, ou les charger à partir d’un miroir local ou d’un cache. Si vous utilisez un répertoire de travail persistant, vous devez réinitialiser lorsque vous modifiez les providers d’une configuration.

Pour garantir que Terraform installe toujours les mêmes versions de providers pour une configuration donnée, vous pouvez utiliser le CLI Terraform pour créer un fichier de verrouillage de dépendance (dependency lock file) et le committer dans le contrôle de version avec votre configuration. Si un fichier de verrouillage est présent, Terraform Cloud, le CLI et Terraform Enterprise le respecteront tous lors de l’installation des provider.

Pour trouver des providers pour les plateformes d’infrastructure que vous utilisez, parcourez la section providers du Terraform Registry. Le registre contient des providers développés et publiés par HashiCorp, des mainteneurs de plateforme, ainsi que des utilisateurs et des volontaires de la communauté Terraform. Les listes des providers utilisent des badges pour indiquer qui développe et maintient chaque provider (officiel, partenaire ou communautaire).

Tier Description Namespace
Official Official providers are owned and maintained by HashiCorp hashicorp
Partner Partner providers are written, maintained, validated and published by third-party companies against their own APIs. To earn a partner provider badge the partner must participate in the HashiCorp Technology Partner Program. Third-party organization, e.g. mongodb/mongodbatlas
Community Community providers are published to the Terraform Registry by individual maintainers, groups of maintainers, or other members of the Terraform community. Maintainer’s individual or organization account, e.g. DeviaVir/gsuite
Archived Archived Providers are Official or Partner Providers that are no longer maintained by HashiCorp or the community. This may occur if an API is deprecated or interest was low. hashicorp or third-party

Découverte des providers
#

Terraform recherche les fournisseurs dans les dossiers suivants, dans cet ordre :

  1. Dossiers spécifiés dans la variable d’environnement TF_PLUGIN_CACHE_DIR.
  2. Dossiers spécifiés dans la variable d’environnement TF_PLUGIN_DIR.
  3. Le sous-dossier .terraform/plugins du répertoire de travail courant.

Récupération des Fournisseurs
#

Lorsque vous exécutez terraform init, Terraform télécharge automatiquement les fournisseurs requis depuis le registre Terraform s’ils ne sont pas déjà présents dans les dossiers de découverte. Si vous avez spécifié des versions de fournisseurs dans votre configuration, Terraform téléchargera les versions spécifiées.

terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
      version = "3.0.0"
    }
  }
}

Après avoir configuré les fournisseurs requis dans votre fichier de configuration, exécutez terraform init. Terraform téléchargera et installera automatiquement le fournisseur AWS avec la version 3.0.0 depuis le registre Terraform.

Exemple d’usage: AWS Provider
#

Terraform 0.13 and later:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

# Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
}

# Create a VPC
resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"
}

Custom providers
#

Note: Les providers personnalisés peuvent être créés lorsque vous avez besoin de construire une infrastructure qui n’est pas couverte par les fournisseurs standard de Terraform. Consultez le tutoriel sur les fournisseurs personnalisés pour en savoir plus : https://www.terraform.io/docs/extend/writing-custom-providers.html

Il existe deux méthodes pour installer des custom ou community providers.

  • Stockez le fichier binaire compilé avec votre code source dans votre système de contrôle de version.
  • Utilisez l’outil the terraform-bundle

Paramétrer required_providers dans la section terraform:

terraform {
  required_providers {
    dominos = {
      # Placeholders that need to be updated.
      source = "mycompany.com/food/terraform-provider-dominos"
      version = "0.1.0>"
    }
  }

A noter que nous pouvons spécifier les répertories où sont situer les providers. Plus d’info ici: https://developer.hashicorp.com/terraform/cli/config/config-file#provider-installation

Articles connexes

Backend
terraform
Commandes de base
terraform
Déployer un agent Terraform - Docker
docker agent terraform