Terraform est une infrastructure populaire en tant qu'outil de code, et lorsqu'il est associé à CloudFlare, facilite grandement 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 CHEMIN
variable environnementale.
(System.Environment) :: SetEnvironmentVariable ("PATH", (($ Env: PATH, "C: \ Tools") -Join ";"), "User")
Cela peut être utilisé pour modifier le système CHEMIN
en changeant Utilisateur
à Machine
. Vous aurez besoin des droits administratifs pour ce faire.
Installation sous Linux
Tout comme Windows, vous télécharger 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 {Libération}
avec la version du code, comme 0,13,0
.
wget
décompressez 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
Nouvel élément -Nom 'CF_Terraform' -Type 'Répertoire'
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.
variable "api_token" {}
fournisseur "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
# Autorisations Zone.DNS
# Exemple de jeton ci-dessous
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 fournisseur
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.
# Autorisations Zone.DNS
api_token = "as3uo7WkxL6asdfasdfaME7IdLofKBG9C_Zi-gf"
# ID de zone de domaine spécifique
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: ressource {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.
ressource "cloudflare_record" "a_mydomain_com" {
zone_id = var.zone_id
name = "mondomaine.com"
valeur = "133.145.220.110"
type = "A"
ttl = 1
proxy = vrai
}
ressource "cloudflare_record" "cname_www" {
zone_id = var.zone_id
nom = "www"
value = "mondomaine.com"
type = "CNAME"
ttl = 1
proxy = vrai
}
Une mise en garde concernant les noms. Si vous souhaitez utiliser importation de terraform
pour importer l'état sur un enregistrement donné, vous devrez faire correspondre le nom avec l'enregistrement d'importation comme ceci:
importation terraform 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 plan terraform
, 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.
plan terraform
Application des modifications Terraform
Une fois que vous êtes sûr de votre configuration, utilisez simplement le appliquer
commander. Cela vous demandera une confirmation, où vous devez taper Oui
. La sortie affichera la configuration à appliquer et l'état.
terraform appliquer
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.