Logo

Que recherchez-vous ?

Automatiser la gestion de ses sites avec Terraform

Configuration d'un site

Automatiser la gestion de ses sites avec Terraform

Cet article présente quelques exemples de cas d'utilisation de Terraform permettant d'automatiser la gestion de ses sites sur Ogo.

Dernière mise à jour : 13 Jan, 2026

Terraform est aujourd’hui un outil incontournable pour la gestion d’infrastructure "as code".

Dans cet article, il sera abordé les sujets suivants :

  1. Initialisation d'un projet Terraform

  2. Déclaration du provider Ogo

  3. Ajout des principales datasources Ogo pouvant être nécessaires à la création d'un site

  4. Création d'un site à partir d'une ressource ogo_shield_site

  5. Importation d'un site existant du dashboard dans la configuration Terraform

Initialisation d'un projet Terraform

Créer un dossier qui contient la configuration Terraform permettant de gérer la configuration des sites :

$ mkdir ogo

Créer le fichier de configuration Terraform main.tf avec le contenu suivant :

# Provider
terraform {
  required_providers {
    ogo = {
      source  = "ogosecurity/ogo"
      version = "~> 0.2"
    }
  }
}

# Provider configuration
provider "ogo" {
  endpoint     = "https://api.ogosecurity.com"
  email        = "your-mail@example.com"
  apikey       = "your-api-key"
  organization = "your-organization-id"
}

Cette configuration indique à Terraform d'utiliser le provider Ogo et permet également de déclarer les informations nécessaire pour s'authentifier sur le dashboard Ogo.

Dans la configuration du provider Ogo, il est donc nécessaire d'adapter les informations suivantes :

  • email : adresse mail utilisé pour s'authentifier sur le dashboard

  • apikey : clé d'API disponible depuis le menu du dashboard Mon compteMon profil > Authentification > API Key

  • organization : code de l'organisation disponible depuis le menu du dashboard Mon compteMon organisation > Paramètres > Code de l'organisation

Initialiser le projet permettant à Terraform de télécharger le provider Ogo et de préparer l'environnement :

$ terraform init

Utilisation des datasources

Maintenant que l'environnement a été initialisé, il peut être utile de déclarer les datasources qui contiennent certains informations qui seront nécessaire pour déclarer un nouveau site, notamment l'UID du cluster sur lequel le nouveau site sera déclaré.

Pour cela, créer un fichier datasources.tf avec le contenu suivant :

data "ogo_shield_clusters" "shield" {}
data "ogo_shield_tlsoptions" "tlsoptions" {}

Ce fichier permet maintenant à Terraform de pouvoir accéder aux informations issues du dashboard concernant les clusters et les options TLS.

Exécuter la commande plan de Terraform qui va permettre de valider que l'authentification au près du dashboard fonctionne :

$ terraform plan

Ensuite, si aucune erreur n'est renvoyée appliquer la configuration avec la commande apply de Terraform pour récupérer les informations relatives aux datasources précédemment déclarées :

$ terraform apply

Lister les nouvelles datasources à l'aide de la commande :

$ terraform state list

Par exemple, pour afficher les informations relatives à vos clusters, utiliser la commande suivante en lui passant en paramètre le nom de la datasource data.ogo_shield_clusters.shield listée dans la commande précédente  :

$ terraform state show data.ogo_shield_clusters.shield

Dans la sortie de la commande, il est alors possible de récupérer, entre autre, la valeur de l'UID d'un cluster disponible dans l'attribut uid de la data source, qui sera nécessaire pour la création d'un site dans la section suivante.

D'autres datasources existent et peuvent être consultées depuis la documentation officiel du provider Ogo : https://registry.terraform.io/providers/OGOSecurity/ogo/latest/docs

Création d'un site

L'étape suivante permet de provisionner un nouveau site sur le cluster dont l'UID a été récupérer à travers la data source ogo_shield_clusters à l'étape précédente.

Créer le fichier sites.tf avec le contenu suivant :

# Simple example with only required attributes
resource "ogo_shield_site" "foo_example_com" {
  domain_name   = "foo.example.com"
  cluster_uid   = "cluster-uid"
  origin_server = "195.154.168.43"
}

Il est nécessaire d'adapter les éléments suivants dans votre configuration :

  • Nom de la ressource Terraform ogo_shield_site nommé foo_example_com dans l'exemple ci-dessus

  • domain_name : nom DNS du site à provisionner sur le cluster Ogo

  • cluster_uid : UID du cluster Ogo récupéré à l'étape précédente

  • origin_server : Adresse IP ou nom de domaine DNS du serveur origine qui sera utilisé par le Shield Ogo pour joindre votre site.

Vérifier les actions qui seront menées par Terraform suite à la déclaration de notre nouvelle configuration :

$ terraform plan

Si le plan d'action proposé par Terraform est bien celui attendu, appliquer la nouvelle configuration qui va permettre de provisionner le nouveau site sur le cluster Shield :

$ terraform apply

Le nouveau site doit maintenant être provisionné sur le cluster Shield et visible depuis le Dashboard Ogo dans la liste de vos sites consultable depuis le menu Mes sites.

Dans cet exemple, nous avons utilisé une configuration minimale qui contient uniquement les attributs d'un site qui sont strictement nécessaires pour sa création, mais n'importe quel configuration du site peut-être modifiée. Pour cela, se référer à la documentation de la ressource ogo_shield_site officiel du provider Ogo : https://registry.terraform.io/providers/OGOSecurity/ogo/latest/docs/resources/shield_site

Import d'un site dans la configuration Terraform

Cette section détaille la procédure à suivre pour importer dans la configuration de Terraform un site qui aurait créé au préalable dans le Dashboard Ogo. Le but étant de pouvoir ensuite gérer sa configuration directement depuis Terraform sans avoir besoin de se connecter au Dashboard Ogo.

Dans l'exemple suivant, nous allons importé un site bar.exemple.com, déjà existant dans la configuration du Dashboard Ogo. Pour cela, il est nécessaire de déclarer d’abord le prototype vide de la ressource ogo_shield_site dans le fichier de configuration sites.tf de Terraform à la suite des déclarations de sites existantes :

# Simple example with only required attributes
resource "ogo_shield_site" "foo_example_com" {
  domain_name = "foo.example.com"
  cluster_uid = "cluster-uid"
  origin_server = "195.154.168.43"
}

resource "ogo_shield_site" "bar_example_com" {}

Exécuter ensuite la commande suivante pour importer le site dans le fichier d'état de Terraform :

$ terraform import "ogo_shield_site.bar_example_com" bar.example.com

Afficher la configuration du site qui a été importé par Terraform dans son fichier d'état :

$ terraform state show ogo_shield_site.bar_example_com

Vous pouvez maintenant mettre à jour le fichier de configuration sites.tf de Terraform en remplaçant le prototype précédemment déclaré par le contenu de la ressourceogo_shield_site.bar_example_com renvoyée par la commande précédente terraform state show et exécuter la commande plan de Terraform pour vérifier que la configuration est bien à jour : 

$ terraform plan

Certains attributs (comme cluster_entrypoint_4, cluster_entrypoint_6, cluster_entrypoint_cdn et status) sont en lecture seule, la commande plan de Terraform les remontera en erreur s'ils sont présents dans votre configuration. Il faudra simplement les retirer de la configuration de la ressource Terraform.

Cet article vous a-t-il aidé ?