Agence web » Actualités du digital » Comment utiliser Terraform avec CloudFlare

Comment utiliser Terraform avec CloudFlare

Terraform est une infrastructure populaire en tant qu'outil de code et, lorsqu'il est associé à CloudFlare, facilite la gestion de configurations complexes dans CloudFlare. Pour ceux qui ne sont pas familiers, Terraform utilise le langage de configuration HCL pour définir une configuration d'infrastructure qui peut ensuite être utilisée pour appliquer les paramètres demandés au fournisseur. CloudFlare propose des services DNS, des services de sécurité et d'informatique de périphérie qui se marient parfaitement avec l'outil Terraform.

Installation de Terraform

Terraform peut être utilisé sous Windows ou sous Linux. Le binaire Terraform lui-même est un exécutable unique et doit simplement être téléchargé et placé dans le chemin du système.

Installation de Windows

Tout d'abord, vous devrez télécharger l'exécutable Terraform pour Windows. Une fois téléchargé, placez l'exécutable dans un emplacement de chemin Windows. Si vous avez besoin de placer l'exécutable dans un emplacement différent, mais que vous souhaitez qu'il soit accessible à tout moment, vous pouvez utiliser le code PowerShell suivant pour modifier les PATH variable environnementale.

(System.Environment)::SetEnvironmentVariable("PATH",(($Env:PATH, "C:\Tools") -Join ";"),"User")

Cela peut être utilisé pour modifier le système PATH en changeant User à Machine. Vous aurez besoin des droits administratifs pour ce faire.

Installation sous Linux

Tout comme Windows, vous téléchargerez la dernière version de Terraform. Comme vous n'utilisez peut-être pas toujours une interface graphique, vous pouvez le faire via le code shell suivant. Remplacer {release} avec la version du code, comme 0.13.0.

wget 
unzip terraform_{release}_linux_amd64.zip
mv terraform /usr/bin/

Configuration de Terraform pour CloudFlare

Pour contenir notre configuration Terraform, nous allons créer un répertoire contenant le .tf fichiers, qui sont l'extension des fichiers de configuration Terraform. Créez un nouveau répertoire pour contenir la configuration.

PowerShell 7 sur Windows

New-Item -Name 'CF_Terraform' -Type 'Directory'
Set-Location -Path 'CF_Terraform'

Bash Shell sur Linux

mkdir cf_terraform
cd cf_terraform

Une fois que vous avez créé et navigué vers le répertoire, nous devrons initialiser la configuration Terraform. Nous devons d'abord créer notre fichier de configuration. Nous choisissons de ne pas coder en dur nos informations d'identification dans le fichier de configuration. Au lieu de cela, un fichier transmettra les informations d'identification qui sont exclues du contrôle de version. En parlant de cela, Git est fortement recommandé pour suivre les changements.

cloudflare.tf

variable "api_token" {}

provider "cloudflare" {
  version   = "~> 2.9"
  api_token = var.api_token
}

Le suivant .auto.tfvars Le fichier contiendra les secrets que nous transmettons à Terraform mais que nous ne voulons pas valider dans l'historique du contrôle de version.

cloudflare.auto.tfvars

# Zone.DNS Permissions
# Example token below
api_token = "as3uo7WkxL6asdfasdfaME7IdLofKBG9C_Zi-gf"

La raison de la .auto section de la .tfvars filename est que ce dossier de variables sera automatiquement lu par Terraform lors des opérations au lieu de le transmettre explicitement via -var-file="cloudflare.tfvars".

Maintenant que nos deux fichiers sont configurés, il est temps d'initialiser notre configuration. Cela installera tous les fournisseurs qui ont été spécifiés dans le provider section de notre fichier de configuration Terraform.

terraform init

Définition de la configuration Terraform CloudFlare

Maintenant que nous nous sommes connectés avec succès à notre domaine, nous devons créer notre configuration. La première chose que nous devons faire est de modifier notre cloudflare.auto.tfvars fichier pour inclure le zone_id sur lesquels nous allons cibler les modifications des enregistrements DNS. Ajoutez la ligne suivante dans le cloudflare.auto.tfvars fichier.

# Zone.DNS Permissions
api_token = "as3uo7WkxL6asdfasdfaME7IdLofKBG9C_Zi-gf"
# Specific Domain Zone ID
zone_id   = "fddd89b6e1d52ebdfdasdc8bc02186333"

Ensuite, nous devons définir les enregistrements que nous allons ajouter à CloudFlare. Pour ce faire, nous allons utiliser le cloudflare_record ressource pour créer les enregistrements. Le format de ceci est le suivant: resource {type} {name}. Le type sera cloudflare_record, et pour le nom que nous utiliserons a_mydomain_com et cname_www. Ces noms sont cependant arbitraires et peuvent être ce que vous voulez.

resource "cloudflare_record" "a_mydomain_com" {
  zone_id = var.zone_id
  name    = "mydomain.com"
  value   = "133.145.220.110"
  type    = "A"
  ttl     = 1
  proxied = true
}

resource "cloudflare_record" "cname_www" {
  zone_id = var.zone_id
  name    = "www"
  value   = "mydomain.com"
  type    = "CNAME"
  ttl     = 1
  proxied = true
}

Une mise en garde concernant les noms. Si vous souhaitez utiliser terraform import pour importer l'état sur un enregistrement donné, vous devrez faire correspondre le nom avec l'enregistrement d'importation comme ceci:

terraform import cloudflare_record.a_mydomain_com {zone_id}/{record_id}

Planification des modifications Terraform

Maintenant que notre configuration est définie, nous pouvons exécuter le terraform plan , qui générera les changements entre ce qui est connu par Terraform via le .tfstate fichier et l'environnement CloudFlare. Si les ressources n'ont pas été importées ou si c'est la première fois que vous exécutez la commande, Terraform n'aura aucune connaissance de l'environnement et toutes les modifications seront nouvelles.

terraform plan

Application des modifications Terraform

Une fois que vous êtes sûr de votre configuration, utilisez simplement le apply commander. Cela vous demandera une confirmation, où vous devez taper yes. La sortie affichera la configuration à appliquer et l'état.

terraform apply
Utilisez la commande apply. Cela vous demandera une confirmation, où vous devrez taper oui. La sortie affichera la configuration à appliquer et l'état.

Conclusion

La combinaison de CloudFlare et de Terraform est une combinaison puissante. Lorsque vous êtes en mesure d'architecturer votre environnement dans le code et de suivre les changements au fil du temps (à l'aide du contrôle de version), vous libérez de nouvelles efficiences et de nouveaux contrôles. Dans le cas où une configuration est incorrecte, il est trivial de revenir à une configuration précédente, ce qui rend la récupération des erreurs très rapide et sans douleur.

★★★★★