---
type: how-to
title: Utiliser Terraform ou OpenTofu
summary: Gère Caputchin en infrastructure-as-code avec le provider officiel, qui fonctionne à l'identique sur Terraform et OpenTofu, avec un exemple concret et un lien vers la référence complète du registre.
---

Le provider officiel Caputchin te permet de gérer ton compte en infrastructure-as-code : déclare des équipes, des clés de site, une politique de sécurité, des membres et des jetons dans des fichiers `.tf` et applique-les comme n'importe quelle autre ressource. C'est la même API de gestion que tout le reste sous [automatisation](/docs/automation/management-api), exprimée en ressources Terraform.

Il est publié une fois et fonctionne avec **Terraform comme OpenTofu** depuis la même source ; le HCL est identique, seul le binaire CLI (`terraform` ou `tofu`) et le registre diffèrent. Partout ci-dessous, utilise celui que tu exécutes.

## Génère un jeton d'accès [#mint-an-access-token]

Le provider lit son jeton depuis la variable d'environnement `CAPUTCHIN_MANAGEMENT_TOKEN` (recommandé, pour qu'il reste hors des sources). Les deux types de jeton fonctionnent (voir [authentification de l'API](/docs/automation/management-api#mint-an-access-token)) : un [Personal Access Token](/docs/account-management/personal-access-token) pour l'infrastructure pleine-compte, ou un [Troop Access Token](/docs/troops/tokens) limité aux équipes que ta configuration gère.

```bash
export CAPUTCHIN_MANAGEMENT_TOKEN=cpt_pat_...
```

Il y a un cas de l'œuf et la poule : le provider peut aussi *générer* des jetons (les ressources `caputchin_account_token` et `caputchin_troop_pat`), mais il a besoin d'un jeton pour s'authentifier en premier lieu. Génère le premier à la main dans le tableau de bord, puis laisse Terraform gérer le reste.

## Configure le provider

```hcl
terraform {
  required_providers {
    caputchin = {
      source  = "caputchin/caputchin"
      version = "~> 0.1"
    }
  }
}

# Token from CAPUTCHIN_MANAGEMENT_TOKEN; endpoint defaults to https://api.caputchin.com.
provider "caputchin" {}
```

Le même `source = "caputchin/caputchin"` se résout depuis le Terraform Registry et l'OpenTofu Registry, donc le bloc est le même sous l'un ou l'autre outil.

## Un exemple concret : une équipe avec une clé de site gatée

Ceci crée une équipe, une clé de site dedans, et active le gate de jeu pour cette clé :

```hcl
resource "caputchin_troop" "shop" {
  name = "shop-team"
}

resource "caputchin_site_key" "shop_frontend" {
  name     = "shop-frontend"
  troop_id = caputchin_troop.shop.id
}

resource "caputchin_site_security_settings" "shop_frontend" {
  site_id      = caputchin_site_key.shop_frontend.id
  require_game = true
}

# The public key is an attribute; the secret is sensitive, in state only.
output "shop_site_key" {
  value = caputchin_site_key.shop_frontend.key
}
```

Puis, avec l'un ou l'autre outil :

```bash
terraform init && terraform apply
# or
tofu init && tofu apply
```

Le `secret` de la clé de site est un attribut calculé sensible ; lis-le depuis l'état (`terraform output`) pour configurer ta [vérification backend](/docs/integration-guides/verify-on-your-backend). Chaque apply est attribué à ton jeton dans le [journal d'audit](/docs/audit-logs/overview) sur Apex, donc un changement via Terraform est aussi traçable qu'une modification dans le tableau de bord.

## Ce que tu peux gérer

Les ressources couvrent la même surface que le tableau de bord : les équipes et leurs membres et jetons, les clés de site, les réglages de sécurité, la vérification hébergée, la personnalisation du jeu et de la marque blanche, et les jetons de compte. Les sources de données te laissent lire dans une configuration les équipes, sites, infos de compte et statistiques existants.

## La référence complète

Chaque ressource et source de données, avec tous ses arguments et attributs et sa syntaxe d'import, est sur la page de registre du provider. Elle est générée à partir de la source du provider, donc elle suit la version publiée exactement :

- Terraform Registry : `registry.terraform.io/providers/caputchin/caputchin`
- OpenTofu Registry : `search.opentofu.org/provider/caputchin/caputchin`

Pour les opérations sous-jacentes que chaque ressource effectue, vois la [référence interactive de l'API](/docs/api-reference).

## Voir aussi

- [Gérer Caputchin depuis l'API](/docs/automation/management-api) : l'API HTTP sur laquelle repose le provider.
- [Utiliser le serveur MCP](/docs/automation/mcp) : la surface agent IA.
- [Équipes](/docs/troops/overview) et [clés de site](/docs/site-keys/overview) : les ressources que tu gères.
