> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streamnative.io/llms.txt
> Use this file to discover all available pages before exploring further.

# StreamNative Terraform Provider Overview

## What is Terraform?

[HashiCorp Terraform](https://developer.hashicorp.com/terraform/docs) is an open source **infrastructure-as-code** tool that lets you build, change, and version your cloud data infrastructure in a safe, efficient way. You program Terraform with human-readable configuration files that you can version, reuse, share, and deploy in your CI/CD pipelines.

## Why Terraform and StreamNative?

StreamNative provides two terraform providers for your to deploy and manage StreamNative Cloud infrastructure and Pulsar resources respectively.

* [StreamNative Terraform Provider](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs) to deploy and manage StreamNative Cloud infrastructure
* [Pulsar Terraform Provider](https://registry.terraform.io/providers/streamnative/pulsar/latest/docs) to manage the Pulsar resources in your StreamNative Cloud clusters

By leveraging the two providers together, you can automate the workflow of managing instances, clusters, tenants, namespaces, topics, and other resources in StreamNative Cloud.

These are some of the benefits you get with using the StreamNative & Pulsar Terraform Providers:

* **Human Readable Configuration**: Define your infrastructure in Terraform configuration files that are human readable and can be versioned, reused, shared, and deployed in your CI/CD pipelines.
* **Consistent Infrastructure**: Provision and manage your StreamNative Cloud infrastructure and Pulsar resources safely and efficiently throughout its lifecycle.
* **Cloud Flexibility**: Deploy your StreamNative Cloud infrastructure seamlessly across different cloud providers.
* **Scale Quickly**: Provision complicated and dependent infrastructure and resources quickly and easily.
* **Open Standard**: Enable industry standard GitOps workflows and infrastructure-as-code practices.

## Tutorials

## Configure the providers

## Resources you can manage

### by StreamNative Provider

You can provision the following StreamNative Cloud resources and get data from these data sources in your Terraform configuration files using the StreamNative provider:

**Infrastructure & Networking**

| Resource                                                                                                                       | Data Source                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| [Cloud Connection](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/resources/cloud_connection)   | [Cloud Connection](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/cloud_connection)   |
| [Cloud Environment](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/resources/cloud_environment) | [Cloud Environment](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/cloud_environment) |
| [Pulsar Gateway](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/resources/pulsar_gateway)       | [Pulsar Gateway](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/pulsar_gateway)       |
|                                                                                                                                | [Pool](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/pool)                           |
|                                                                                                                                | [Pool Member](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/pool_member)             |

**Instance & Cluster**

| Resource                                                                                                                   | Data Source                                                                                                                   |
| -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| [Pulsar Instance](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/resources/pulsar_instance) | [Pulsar Instance](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/pulsar_instance) |
| [Pulsar Cluster](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/resources/pulsar_cluster)   | [Pulsar Cluster](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/pulsar_cluster)   |

**Security, access control and identity**

| Resource                                                                                                                                   | Data Source                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| [Service Account](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/resources/service_account)                 | [Service Account](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/service_account)                 |
| [Service Account Binding](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/resources/service_account_binding) | [Service Account Binding](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/service_account_binding) |
| [API Key](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/resources/apikey)                                  | [API Key](https://registry.terraform.io/providers/streamnative/streamnative/latest/docs/data-sources/apikey)                                  |

### by Pulsar Provider

You can provision the following Pulsar resources in your Terraform configuration files using the Pulsar provider:

| Resource                                                                                                        | Data Source |
| --------------------------------------------------------------------------------------------------------------- | ----------- |
| [Pulsar Cluster](https://registry.terraform.io/providers/streamnative/pulsar/latest/docs/resources/cluster)     |             |
| [Pulsar Tenant](https://registry.terraform.io/providers/streamnative/pulsar/latest/docs/resources/tenant)       |             |
| [Pulsar Namespace](https://registry.terraform.io/providers/streamnative/pulsar/latest/docs/resources/namespace) |             |
| [Pulsar Topic](https://registry.terraform.io/providers/streamnative/pulsar/latest/docs/resources/topic)         |             |
| [Pulsar Function](https://registry.terraform.io/providers/streamnative/pulsar/latest/docs/resources/function)   |             |
| [Pulsar Source](https://registry.terraform.io/providers/streamnative/pulsar/latest/docs/resources/source)       |             |
| [Pulsar Sink](https://registry.terraform.io/providers/streamnative/pulsar/latest/docs/resources/sink)           |             |

## References

* For the StreamNative provider source code, see [streamnative/terraform-provider-streamnative](https://github.com/streamnative/terraform-provider-streamnative)
* For the Pulsar provider source code, see [streamnative/terraform-provider-pulsar](https://github.com/streamnative/terraform-provider-pulsar)
* For sample configuration files for StreamNative resources, see [streamnative/terraform-provider-streamnative/examples](https://github.com/streamnative/terraform-provider-streamnative/tree/main/examples)
* For sample configuration files for Pulsar resources, see [streamnative/terraform-provider-pulsar/examples](https://github.com/streamnative/terraform-provider-pulsar/tree/master/examples)
