# pulumi

## Description

**EXPERIMENTAL**

This provider allows you to integrate [Pulumi](https://pulumi.com) stacks into your Garden project, via [`pulumi` modules](https://docs.garden.io/v/acorn-0.12/reference/module-types/pulumi).

Below is the full schema reference for the provider configuration. For an introduction to configuring a Garden project with providers, please look at our [configuration guide](https://docs.garden.io/acorn-0.12/using-garden/configuration-overview).

The reference is divided into two sections. The [first section](#complete-yaml-schema) contains the complete YAML schema, and the [second section](#configuration-keys) describes each schema key.

## Complete YAML Schema

The values in the schema below are the default values.

```yaml
providers:
  - # The name of the provider plugin to use.
    name:

    # List other providers that should be resolved before this one.
    dependencies: []

    # If specified, this provider will only be used in the listed environments. Note that an empty array effectively
    # disables the provider. To use a provider in all environments, omit this field.
    environments:

    # The version of pulumi to use. Set to `null` to use whichever version of `pulumi` is on your PATH.
    version: 3.70.0

    # Overrides the default plan directory path used when deploying with the `deployFromPreview` option for pulumi
    # modules.
    #
    # Must be a relative path to a directory inside the project root.
    #
    # This option can be useful when you want to provide a folder of pre-approved pulumi plans to a CI pipeline step.
    previewDir:

    # The name of the pulumi organization to use. This option can also be set on the module level, in which case it
    # overrides this provider-level option. Note that setting the organization name is only necessary when using
    # pulumi managed backend with an organization.
    orgName:

    # The URL of the state backend endpoint used. This option can also be set on the module level, in which case it
    # overrides this  provider-level option. Set this option as per list of available self-managed state backends on
    # https://www.pulumi.com/docs/intro/concepts/state/#using-a-self-managed-backend
    backendURL: 'https://api.pulumi.com'

    # Sets the maximum task concurrency for the tasks generated by the pulumi plugin commands (e.g. when running
    # `garden plugins pulumi preview`).
    #
    # Note: This limit is not applied when running built-in commands (e.g. `garden deploy`).
    pluginTaskConcurrencyLimit: 5
```

## Configuration Keys

### `providers[]`

| Type            | Default | Required |
| --------------- | ------- | -------- |
| `array[object]` | `[]`    | No       |

### `providers[].name`

[providers](#providers) > name

The name of the provider plugin to use.

| Type     | Required |
| -------- | -------- |
| `string` | Yes      |

Example:

```yaml
providers:
  - name: "local-kubernetes"
```

### `providers[].dependencies[]`

[providers](#providers) > dependencies

List other providers that should be resolved before this one.

| Type            | Default | Required |
| --------------- | ------- | -------- |
| `array[string]` | `[]`    | No       |

Example:

```yaml
providers:
  - dependencies:
      - exec
```

### `providers[].environments[]`

[providers](#providers) > environments

If specified, this provider will only be used in the listed environments. Note that an empty array effectively disables the provider. To use a provider in all environments, omit this field.

| Type            | Required |
| --------------- | -------- |
| `array[string]` | No       |

Example:

```yaml
providers:
  - environments:
      - dev
      - stage
```

### `providers[].version`

[providers](#providers) > version

The version of pulumi to use. Set to `null` to use whichever version of `pulumi` is on your PATH.

| Type     | Allowed Values           | Default    | Required |
| -------- | ------------------------ | ---------- | -------- |
| `string` | "3.70.0", "3.64.0", null | `"3.70.0"` | Yes      |

### `providers[].previewDir`

[providers](#providers) > previewDir

Overrides the default plan directory path used when deploying with the `deployFromPreview` option for pulumi modules.

Must be a relative path to a directory inside the project root.

This option can be useful when you want to provide a folder of pre-approved pulumi plans to a CI pipeline step.

| Type        | Required |
| ----------- | -------- |
| `posixPath` | No       |

### `providers[].orgName`

[providers](#providers) > orgName

The name of the pulumi organization to use. This option can also be set on the module level, in which case it overrides this provider-level option. Note that setting the organization name is only necessary when using pulumi managed backend with an organization.

| Type     | Required |
| -------- | -------- |
| `string` | No       |

### `providers[].backendURL`

[providers](#providers) > backendURL

The URL of the state backend endpoint used. This option can also be set on the module level, in which case it overrides this provider-level option. Set this option as per list of available self-managed state backends on <https://www.pulumi.com/docs/intro/concepts/state/#using-a-self-managed-backend>

| Type     | Default                    | Required |
| -------- | -------------------------- | -------- |
| `string` | `"https://api.pulumi.com"` | No       |

### `providers[].pluginTaskConcurrencyLimit`

[providers](#providers) > pluginTaskConcurrencyLimit

Sets the maximum task concurrency for the tasks generated by the pulumi plugin commands (e.g. when running `garden plugins pulumi preview`).

Note: This limit is not applied when running built-in commands (e.g. `garden deploy`).

| Type     | Default | Required |
| -------- | ------- | -------- |
| `number` | `5`     | No       |
