> ## 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.

# Configure Pulsar Terraform Provider

## Install the Provider

You can install the Pulsar Terraform Provider using the following code snippet.

```hcl theme={null}
terraform {
  required_providers {
    pulsar = {
      source  = "streamnative/pulsar"
    }
  }
}
```

## Configure the Provider

Once you have added the provider to your Terraform configuration, you need to configure the provider with your Pulsar Cluster service url and credentials.

Below is an example of configuring the provider to connect to a Pulsar cluster at `<pulsar-cluster-service-url>` using Token authentication. Please make sure the token has the Super Admin permission in order to create resources within the Pulsar cluster.

```hcl theme={null}
provider "pulsar" {
  web_service_url = "<pulsar-cluster-service-url>"
  token = "<pulsar-cluster-token>"
}
```

## Configure the Provider with Different Authentication Methods

### Token Authentication

You can specify the token in the provider configuration. Make sure the token has the Super Admin permission in order to create resources within the Pulsar cluster.

```hcl theme={null}
provider "pulsar" {
  web_service_url = "<pulsar-cluster-service-url>"
  token = "<pulsar-cluster-token>"
}
```

### OAuth2 Authentication

You can specify the OAuth2 key file path in the provider configuration. If your cluster is configured to require audience, you also need to specify the audience in the provider configuration.

```hcl theme={null}
provider "pulsar" {
  web_service_url = "<pulsar-cluster-service-url>"
  key_file_path = "<path-to-your-oauth2-key-file>"
  audience = "<audience>"
}
```

## Validate the Configuration

After you have configured the provider in your Terraform configuration, you can run the following command to download and install the providers defined in the configuration:

```sh theme={null}
terraform init
```

You can then run the following command to ensure the configuration is syntactically valid and internally consistent:

```sh theme={null}
terraform validate
```

Apply the configuration:

```sh theme={null}
terraform plan
```

If you are not able to connect to the Pulsar cluster, you will see an error message similar to the following:

```sh theme={null}
Error: failed to create pulsar oauth2 provider: authentication failed using client credentials: <error-message>
```

Otherwise, you should see a successful output.

## Full Code Example

Below is the full code example of how to configure the Pulsar Terraform Provider.

```hcl theme={null}
terraform {
  required_providers {
    pulsar = {
      source = "streamnative/pulsar"
    }
  }
}

provider "pulsar" {
  web_service_url = "<pulsar-cluster-service-url>"
  token = "<your-api-key>"
}
```
