Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Terraform provider docs #8598

Merged
merged 6 commits into from
Nov 7, 2024
Merged
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions website/docs/reference/terraform.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: Using Unleash through Terraform
---

:::note Availability

**Version**: `5.6+`

:::


## Overview

The [Unleash Terraform provider](https://github.com/Unleash/terraform-provider-unleash) allows you to manage and configure your Unleash programmatically using Terraform, enabling automated and scalable management for your infrastructure.
By integrating Unleash with Terraform, you can use infrastructure as code (IaC) to optimize the setup and maintenance of your Unleash instance configuration.

The Unleash Terraform provider is designed to help you with the **initial setup and configuration** of an instance. The provider does not support managing feature flags through Terraform. Since most [feature flags are short-lived](/topics/feature-flags/feature-flag-best-practices#7-make-flags-short-lived), we recommend managing them through the Unleash Admin UI.

For a detailed tutorial, follow along with [Managing Unleash through Terraform](https://www.youtube.com/watch?v=B4OIBC1u1ns).
For more examples for the specific resources and data sources, visit the [Terraform registry](https://registry.terraform.io/providers/Unleash/unleash/latest/docs/data-sources/permission).

## Manage Terraform access

The permissions of the API token you use with Terraform and your Unleash [plan](https://www.getunleash.io/pricing) determine what objects Terraform can manage.
- For Open-Source and Pro, use an [admin token](/reference/api-tokens-and-client-keys#admin-tokens) or [personal access tokens](/reference/api-tokens-and-client-keys#personal-access-tokens).
melindafekete marked this conversation as resolved.
Show resolved Hide resolved
- For Enterprise, use [service accounts](/reference/service-accounts). For larger teams, we recommend multiple service accounts with different permissions and separate Terraform repositories for each team under their respective projects.

## Resources

### API tokens

- `unleash_api_token`: Regulate access and maintain secure communication with verified integrations.

Example usage:
```hcl
melindafekete marked this conversation as resolved.
Show resolved Hide resolved
resource "unleash_api_token" "client_token" {
token_name = "client_token"
type = "client"
expires_at = "2024-12-31T23:59:59Z"
project = "default"
environment = "development"
}
```

### Projects

- `unleash_project`: Create and manage projects.
- `unleash_project_access`: Assign access roles and users to given project resources.

### Users and roles

- `unleash_role`: Define permissions systematically.
- `unleash_user`: Automate user management. Use `send_email = true` to generate an invitation link.

### Service accounts

- `unleash_service_account`: Define and manage service accounts for secure automated access.
- `unleash_service_account_token`: Generate tokens associated with service accounts.

### Single sign-on protocols

- `unleash_oidc`: Manage your [OpenID Connect configuration](../how-to/how-to-add-sso-open-id-connect).
- `unleash_saml`: Manage your [SAML configuration](../how-to/sso).

## Data sources

You can use the following data sources to fetch resources from Unleash:

- `unleash_project`
- `unleash_user`
- `unleash_role`
- `unleash_permission`
melindafekete marked this conversation as resolved.
Show resolved Hide resolved
Loading