# Managing Union with Terraform

> **📝 Note**
>
> An LLM-optimized bundle of this entire section is available at [`section.md`](https://www.union.ai/docs/v2/union/deployment/terraform/section.md).
> This single file contains all pages in this section, optimized for AI coding agent context.

Union provides a Terraform provider that enables infrastructure-as-code management of your Union deployment. With the Union Terraform provider, you can define, deploy, and manage Union resources using declarative configuration files.

## Overview

The Union Terraform provider allows you to manage Union resources programmatically, including:

- **Projects**: Create and manage Union projects
- **Access Control**: Configure users, roles, and policies
- **API Keys**: Generate and manage API keys for automation
- **OAuth Applications**: Set up OAuth applications for external integrations
- **Access Assignments**: Assign users and applications to resources

## Why use Terraform?

Using Terraform to manage Union provides several benefits:

- **Version Control**: Track changes to your Union configuration over time
- **Reproducibility**: Easily replicate configurations across environments
- **Automation**: Integrate Union management into your CI/CD pipelines
- **Consistency**: Ensure consistent configuration across your organization
- **Documentation**: Your Terraform files serve as living documentation

## Getting started

To get started with the Union Terraform provider:

1. **Installation**: Set up the Terraform provider in your environment
2. **Management**: Learn about the available resources and data sources for managing Union

### [Installation](https://www.union.ai/docs/v2/union/deployment/terraform/installation/page.md)

Install and configure the Union Terraform provider

### [Resource Management](https://www.union.ai/docs/v2/union/deployment/terraform/management/page.md)

Learn about available resources and data sources

### [Security Best Practices](https://www.union.ai/docs/v2/union/deployment/terraform/security/page.md)

Securely manage API keys and credentials

## Requirements

- Terraform >= 1.0
- Union API key (generated using the [Flyte CLI](https://www.union.ai/docs/v2/union/api-reference/flyte-cli/page.md#flyte-create-config))
- Access to a Union deployment

## Subpages

- [Installation](https://www.union.ai/docs/v2/union/deployment/terraform/installation/page.md)
  - Quick start
  - Versioning
- [Resource management](https://www.union.ai/docs/v2/union/deployment/terraform/management/page.md)
  - Provider configuration
  - Basic configuration
  - Configuration parameters
  - Authentication
  - 1. Provider configuration
  - 2. Environment variable
  - Generating an API key
  - Available resources
  - Projects
  - Users
  - Roles
  - Policies
  - API keys
  - OAuth applications
  - Access assignments
  - Available data sources
  - Projects
  - Users
  - Roles
  - Policies
  - API keys
  - Applications
  - Data plane information
  - Control plane information
  - Data plane listings
  - Best practices
  - Use variables for sensitive data
  - Organize resources with modules
  - Use organization restrictions
  - Version control your configuration
  - Use remote state
  - Example: complete setup
  - Additional resources
  - Requirements
  - Support and contributions
- [Security Best Practices](https://www.union.ai/docs/v2/union/deployment/terraform/security/page.md)
  - Recommended approaches
  - 1. Use cloud secret managers
  - 2. Use HashiCorp Vault
  - 3. Use environment variables
  - 4. Use Terraform variables with `.tfvars` files
  - Additional security measures
  - Encrypt Terraform state
  - Use state locking
  - Rotate API keys regularly
  - Restrict provider permissions
  - Use separate API keys per environment
  - Security checklist
  - CI/CD pipeline security
  - GitHub Actions
  - GitLab CI
  - Best practices for CI/CD
  - Additional resources

---
**Source**: https://github.com/unionai/unionai-docs/blob/main/content/deployment/terraform/_index.md
**HTML**: https://www.union.ai/docs/v2/union/deployment/terraform/
