Importation des ressources Datadog dans Terraform
Présentation
Terraform propose une méthode prête à l’emploi pour importer des ressources existantes dans votre état terraform via la commande terraform import
.
Cela peut se faire via terraform import <resource_type>.<resource_name> <existing_id>
.
Cette approche est state only
et nécessite que la ressource HCL soit déjà entièrement définie dans vos fichiers de configuration terraform. Pour importer complètement la configuration, vous pouvez utiliser un outil comme Terraformer.
Le projet terraformer vous permet d’importer une ressource sous forme d’état et de configuration HCL.
Une fois installé, vous pouvez configurer un répertoire terraform avec un simple main.tf
Ceci utilise la syntaxe de terraform 0.13+, mais vous pouvez trouver d’autres configurations sur la documentation officielle du fournisseur Datadog
# main.tf
terraform {
required_providers {
datadog = {
source = "DataDog/datadog"
}
}
}
# Configurer le fournisseur Datadog
provider "datadog" {}
Exécutez ensuite terraform init
à partir de ce répertoire pour obtenir le fournisseur terraform Datadog.
Vous pouvez maintenant utiliser terraformer
pour commencer à importer des ressources. Par exemple, pour importer le dashboard abc-def-ghi
, vous pouvez exécuter la commande suivante
terraformer import datadog --resources=dashboard --filter=dashboard=abc-def-ghi --api-key <YOUR_API_KEY> --app-key <YOUR_APP_KEY> --api-url <YOUR_DATADOG_SITE_URL>
Cela génère un dossier generated
qui contient à la fois un fichier d’état terraform et des fichiers de configuration terraform HCL représentant la ressource importée.
generated
└── datadog
└── dashboard
├── dashboard.tf
├── outputs.tf
├── provider.tf
└── terraform.tfstate
dashboard.tf
: Le fichier de configuration HCL pour le dashboard nouvellement importéoutputs.tf
: Un HCL contenant des sorties à utiliser potentiellement dans d’autres configurationsprovider.tf
: Une initialisation HCL du fournisseur, similaire à ce qui se trouve dans notre fichier main.tf
terraform.tfstate
: L’état terraform représentant le dashboard importé
Tous les exemples de commandes requièrent les drapeaux --api-key
, --app-key
, and --api-url
.
- Importer tous les monitors :
terraformer import datadog --resources=monitor
- Importer un monitor avec l’identifiant 1234 :
terraformer import datadog --resources=monitor --filter=monitor=1234
- Importer des monitors avec l’identifiant 1234 et 12345 :
terraformer import datadog --resources=monitor --filter=monitor=1234:12345
- Importer tous les monitors et dashboards :
terraformer import datadog --resources=monitor,dashboard
- Importer un monitor avec l’identifiant 1234 et un dashboard avec l’identifiant abc-def-ghi :
terraformer import datadog --resources=monitor,dashboard --filter=monitor=1234,dashboard=abc-def-ghi
À partir de la version 0.8.10
, Terraformer génère les fichiers tf
/json
et tfstate
à l’aide de Terraform v0.12.29
. Pour assurer la compatibilité, exécutez la commande de mise à niveau terraform 0.13upgrade .
en utilisant Terraform v0.13.x
. Consultez la documentation officielle de Terraform relative à la mise à niveau.
Importer une ressource à l’aide de terraformer.
En utilisant Terraform v0.13.x
, cd
dans le répertoire de ressources généré et exécutez terraform 0.13upgrade .
.
Exécutez terraform init
pour réexécuter le programme d’installation du fournisseur.
Exécutez terraform apply
pour appliquer les mises à jour aux fichiers d’état Terraform.