---
type: how-to
title: Используй Terraform или OpenTofu
summary: Управляй Caputchin как infrastructure-as-code с официальным провайдером, который работает идентично на Terraform и OpenTofu, с разобранным примером и ссылкой на полный справочник реестра.
---

Официальный провайдер Caputchin позволяет тебе управлять аккаунтом как infrastructure-as-code: объявляй команды, ключи сайта, политику безопасности, участников и токены в файлах `.tf` и применяй их как любой другой ресурс. Это тот же API управления, что и всё остальное под [автоматизацией](/docs/automation/management-api), выраженный как ресурсы Terraform.

Он опубликован один раз и работает с **обоими, Terraform и OpenTofu**, из одного источника; HCL идентичен, различаются только бинарь CLI (`terraform` или `tofu`) и реестр. Везде ниже используй тот, что запускаешь.

## Выпусти токен доступа [#mint-an-access-token]

Провайдер читает свой токен из переменной окружения `CAPUTCHIN_MANAGEMENT_TOKEN` (рекомендуется, чтобы он держался вне исходников). Любой вид токена работает (смотри [аутентификацию API](/docs/automation/management-api#mint-an-access-token)): [персональный токен доступа](/docs/account-management/personal-access-token) для инфраструктуры на весь аккаунт или [токен доступа команды](/docs/troops/tokens) с охватом до команд, которыми управляет твоя конфигурация.

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

Есть случай курицы и яйца: провайдер также может *выпускать* токены (ресурсы `caputchin_account_token` и `caputchin_troop_pat`), но ему сначала нужен токен для аутентификации. Выпусти первый вручную в панели, затем дай Terraform управлять остальными.

## Настрой провайдер

```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" {}
```

Тот же `source = "caputchin/caputchin"` разрешается из реестра Terraform и реестра OpenTofu, так что блок одинаков под любым инструментом.

## Разобранный пример: команда с ключом сайта за воротами

Это создаёт команду, ключ сайта в ней и включает игровые ворота для этого ключа:

```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
}
```

Затем, с любым инструментом:

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

`secret` ключа сайта это чувствительный вычисляемый атрибут; читай его из состояния (`terraform output`), чтобы настроить свою [серверную проверку](/docs/integration-guides/verify-on-your-backend). Каждый apply приписывается твоему токену в [журнале аудита](/docs/audit-logs/overview) на Apex, так что изменение через Terraform так же отслеживаемо, как и правка в панели.

## Чем ты можешь управлять

Ресурсы покрывают ту же поверхность, что и панель: команды и их участников и токены, ключи сайта, настройки безопасности, размещённую проверку, настройку игр и white-label, и токены аккаунта. Источники данных позволяют тебе считать существующие команды, сайты, информацию об аккаунте и статистику в конфигурацию.

## Полный справочник

Каждый ресурс и источник данных со всеми его аргументами и атрибутами и синтаксисом импорта на странице реестра провайдера. Она генерируется из исходников провайдера, так что отслеживает выпущенную версию точно:

- Реестр Terraform: `registry.terraform.io/providers/caputchin/caputchin`
- Реестр OpenTofu: `search.opentofu.org/provider/caputchin/caputchin`

Для нижележащих операций, которые выполняет каждый ресурс, смотри [интерактивный справочник API](/docs/api-reference).

## См. также

- [Управляй Caputchin через API](/docs/automation/management-api): HTTP API, на котором сидит провайдер.
- [Используй сервер MCP](/docs/automation/mcp): поверхность ИИ-агента.
- [Команды](/docs/troops/overview) и [ключи сайта](/docs/site-keys/overview): ресурсы, которыми ты управляешь.
