Utiliser des ressources existantes

Il arrive qu’une configuration doive manipuler une ressource Azure existante. Par exemple déployer une machine virtuelle dans réseau virtuel existant. Deux options permettent d’utiliser ces ressources externes : Import et Data source.

Import

La commande terraform import permet d’importer des ressources dans une configuration en les ajoutant au state. Pour retrouver cette ressource, on utilise son identifiant Azure :

Récupération de l’identifiant de la resource à importer
$ az group show --name to-import-rg --query id --output tsv

Avant d’importer la ressource, on crée son bloc dans la configuration :

resource-group.tf
resource "azurerm_resource_group" "t-to-import-rg" {
  name     = "to-import-rg" (1)
  location = "westeurope"
}
1 Nom associé de la ressource dans Azure
Import de la ressource
$ terraform import azurerm_resource_group.t-to-import-rg /subscriptions/xxx/resourceGroups/to-import-rg

Data source

Les Data sources sont un moyen d’extraire de l’information provenant de l’extérieur de la configuration déployée par Terraform, ou provenant d’une autre configuration, et d’utiliser ses propriétés. Ces ressources externes ne sont pas importées dans le state et seront donc pas impactées en cas de destroy ou de modifications externes. Les data sources sont associées à des providers en se basant sur leur préfixe, par exemple azurerm_.

main.tf
data "azurerm_subscription" "current" {
}

output "current_subscription_display_name" {
  value = data.azurerm_subscription.current.display_name (1)
}
1 Affichage du nom de la subscription courante

Un exemple d’utilisation de data source consisterait à récupérer les informations sensibles, contenues dans un Key Vault.