Blog d'Obi Madu
Retour à tous les articles
InfrastructureDevOpsProjects

Déployer un serveur sur Digital Ocean via Terraform (Tutoriel)

Un guide étape par étape pour approvisionner un droplet DigitalOcean à l'aide de Terraform et des pratiques de base de l'Infrastructure as Code.

Déployer un serveur sur Digital Ocean via Terraform (Tutoriel)

Bonjour et bienvenue ! Aujourd'hui, nous allons voir comment créer un serveur (également appelé droplet) sur Digital Ocean via Terraform. C'est l'une des choses les plus simples que l'on puisse réaliser avec Terraform, mais elle illustre la compréhension de concepts de base tels que l'Infrastructure as Code (IaC), Terraform lui-même, les modules Terraform, les serveurs cloud, ainsi que les pratiques de base en matière de réseau et de sécurité.

Vous pouvez trouver le code source de ce tutoriel ici sur Github.

Sans plus tarder, plongeons dans le vif du sujet 🚀

Pour pouvoir faire quoi que ce soit avec Terraform, nous devons d'abord l'installer sur notre système. La documentation de Terraform propose une excellente liste des différentes façons d'installer Terraform sur différents systèmes. Jetez un œil à ce guide ici.

Acquire Digital Ocean Credentials

Pour pouvoir authentifier et autoriser Terraform à créer notre serveur sur Digital Ocean, nous avons besoin des identifiants appropriés. Terraform nécessite différents types d'identifiants en fonction du fournisseur Terraform utilisé. Pour authentifier et autoriser le fournisseur responsable de l'application de nos configurations, nous aurons besoin d'un API Token Digital Ocean, obtenu à partir de l'écran ci-dessous.

Obtain a Digital Ocean API Token

Ceci se trouve à l'adresse web https://cloud.digitalocean.com/account/api/tokens sur un compte Digital Ocean authentifié.

Lors de la création de votre API Token sur Digital Ocean, assurez-vous de le faire avec la portée Write activée pour votre jeton. Terraform ne pourra pas créer de ressources pour vous sans cela. N'oubliez pas de définir également une date d'expiration appropriée.

create new DO API Token

Setup the Digital Ocean Terraform provider

Maintenant que nous avons notre API Token pour authentifier et autoriser Terraform, nous pouvons commencer à créer notre configuration Terraform. Nous allons commencer par créer un fichier providers.tf. À l'intérieur de ce fichier, nous allons fournir la configuration nécessaire pour paramétrer le fournisseur Digital Ocean (digitalocean).

Pour en savoir plus sur les fournisseurs Terraform, visitez https://developer.hashicorp.com/terraform/language/providers

Nous allons commencer notre fichier avec le contenu suivant :

terraform {
  required_providers {
    digitalocean = {
      source  = "digitalocean/digitalocean"
      version = "~> 2.0"
    }
  }
}

Cela configure le terraform block. Dans ce bloc, nous configurons le fournisseur digitalocean comme un fournisseur requis.

Des informations détaillées sur le fournisseur digitalocean peuvent être trouvées sur sa page de documentation ici https://registry.terraform.io/providers/digitalocean/digitalocean/latest/docs

Ensuite, nous allons configurer le fournisseur lui-même en ajoutant le code suivant à notre fichier providers.tf :

# Configure the DigitalOcean Provider
provider "digitalocean" {
  token = var.do_token
}

Ce code configure le fournisseur digitalocean avec le jeton d'accès token. Il s'agit du même jeton que nous avons obtenu à l'étape 1.

En tant que bonne pratique, ne fournissez jamais de secrets de compte comme valeurs à vos fichiers de configuration Terraform car cela les rendrait clairement visibles pour une potentielle utilisation malveillante. Dans notre code ci-dessus, nous avons fourni notre clé API en tant que variable Terraform var.do_token.

Il y a plusieurs façons de fournir la valeur réelle de notre clé API à Terraform.

  • Nous pourrions créer un fichier terraform.tfvars et remplir la valeur de notre variable ainsi :
do_token=real_key_value
  • Nous pourrions créer une variable d'environnement sur notre machine hôte avec le nom TF_VAR_do_token et définir sa valeur sur celle de notre clé, comme suit :
export TF_VAR_do_token=real_key_value

En remplaçant real_key_value par la valeur appropriée de notre clé API dans chaque cas.

Avec ces deux méthodes, Terraform sera capable de trouver la valeur de notre variable lorsqu'il exécutera notre configuration.

Si vous fournissez les valeurs de vos variables via un fichier terraform.tfvars, assurez-vous de ne JAMAIS le soumettre au contrôle de version. Utilisez ce fichier uniquement localement.

Si aucune de ces méthodes n'est utilisée pour passer la valeur à notre variable, Terraform demandera la valeur pour chaque variable dans l'invite de commande à chaque fois qu'il exécutera notre configuration.

Initialize Terraform

Une fois la configuration de notre fournisseur terminée, il est temps d'initialiser notre configuration Terraform.

Nous faisons cela simplement en exécutant la commande suivante dans la ligne de commande :

terraform init

Pendant l'initialisation, Terraform télécharge les fichiers du fournisseur requis pour notre configuration et initialise notre backend.

Pour garder ce tutoriel simple, nous allons utiliser le backend Terraform local par défaut. Pour en savoir plus sur les backends Terraform, visitez https://developer.hashicorp.com/terraform/language/settings/backends/configuration

Setup the server deploy configuration

Avec Terraform initialisé, il est temps de créer réellement la configuration qui déploie notre serveur (également appelé droplet dans le jargon de Digital Ocean).

Nous allons commencer par créer un nouveau fichier, server.tf. Notre configuration se présente ainsi :

resource "digitalocean_vpc" "server_vpc" {
  name     = "server-vpc"
  region   = var.do_region
  ip_range = "10.10.10.0/24"
}

resource "digitalocean_droplet" "server" {
  name     = "server"
  size     = "s-1vcpu-1gb"
  image    = "ubuntu-22-04-x64"
  region   = var.do_region
  vpc_uuid = digitalocean_vpc.server_vpc.id
}

Notre code crée deux blocs de ressources Terraform. Le premier, une ressource digitalocean_vpc, crée le réseau privé virtuel (VPC) dans lequel notre serveur vivra sur Digital Ocean.

  • l'attribut name configure le nom de notre réseau vpc
  • l'attribut region à travers la variable var.do_region, configure dans quelle partie du monde nous voulons que notre vpc soit déployé
  • l'attribut ip_range configure la plage d'adresses IP préférée pour notre réseau
  • l'attribut vpc_uuid indique que notre serveur doit être placé dans le réseau server-vpc que nous avons créé à la première étape

Le deuxième bloc crée une ressource Terraform digitalocean_droplet, et la configure avec les attributs name, size, image et region. Ces attributs sont obligatoires pour que notre serveur soit créé sur Digital Ocean.

Comme leurs noms l'indiquent ;

  • l'attribut name configure le nom de notre serveur sur Digital Ocean
  • l'attribut size configure la combinaison du processeur (cpu) et de la mémoire (RAM) de notre serveur
  • l'attribut image configure l'image du système d'exploitation particulier avec laquelle nous aimerions que notre serveur soit fourni
  • l'attribut region configure l'emplacement dans le monde où nous aimerions que notre serveur soit déployé.

Comme vous pouvez probablement le deviner, ces attributs peuvent avoir de nombreuses autres valeurs que celles que nous avons spécifiées ici. Une visite de la documentation de Digital Ocean vous fournira une liste plus complète de valeurs pour une utilisation ultérieure.

C'est ici que vous créez la variable var.do_region comme requis par nos blocs de ressources. En fonction de la méthode que vous avez choisie pour passer les valeurs des variables à terraform, vous devez en créer une deuxième. Incluez la ligne suivante à votre fichier terraform.tfvars si c'est la voie que vous avez choisie ;

do_region=fra1

Ou créez une variable d'environnement supplémentaire comme suit ;

export TF_VAR_do_region=fra1

NOTE : fra1 fait référence au centre de données de Digital Ocean à Francfort. Visitez la documentation de Digital Ocean pour découvrir les éventuels centres de données alternatifs à utiliser.

Apply the Terraform configuration

Il est temps d'appliquer notre configuration terraform et de créer nos ressources sur Digital Ocean. Pour confirmer que nous allons faire exactement ce que nous avons l'intention de faire, nous allons d'abord exécuter la commande terraform plan. La sortie de cette commande devrait être similaire à ce qui suit ;

Output of Terraform Plan Operation

Un regard sous la sortie montrera la sortie 2 to add, 0 to change, 0 to destroy. Cela signifie que tout est en ordre car nous allons ajouter deux ressources, n'en modifier aucune, et n'en détruire aucune.

Si notre sortie correspond à celle illustrée ci-dessus, alors nous pouvons aller de l'avant et exécuter terraform apply pour appliquer notre configuration.

Un écran de confirmation devrait s'afficher, similaire à celui ci-dessous, auquel nous devrions répondre yes.

Confirm Terraform Apply

En cas de succès, nous devrions obtenir une sortie similaire à celle ci-dessous de la part de Terraform ;

Terraform Apply Success

HOURRA !! 🎉 🎉 Vous avez déployé avec succès un serveur sur Digital Ocean via Terraform.

Félicitations pour la création de votre serveur sur Digital Ocean grâce à l'Infrastructure as Code. Il est important que vous vous souveniez de détruire le serveur lorsqu'il n'est plus utilisé, pour éviter une facturation inattendue sur vos informations de paiement.

Exécutez la commande terraform destroy et confirmez par yes pour détruire votre serveur au moment où vous n'en avez plus besoin.

J'espère que vous avez trouvé cet article utile ! À plus !!