---
title: Create an InfluxDB template
description: Use the InfluxDB UI and the influx export command to create InfluxDB templates.
url: https://docs.influxdata.com/influxdb/v2/tools/influxdb-templates/create/
estimated_tokens: 5610
product: InfluxDB OSS v2
version: v2
---

# Create an InfluxDB template

This page documents an earlier version of InfluxDB OSS. [InfluxDB 3 Core](/influxdb3/core/) is the latest stable version.

#### API token hashing is enabled by default in InfluxDB OSS 2.9.0

Stronger token security: tokens are stored as hashes on disk, so a copy of the database file doesn’t expose usable tokens. Existing tokens are hashed on first startup and the original strings can’t be recovered afterward — **capture any plaintext tokens you still need before you upgrade**.

For more information, see [Token hashing](/influxdb/v2/admin/tokens/#token-hashing).

Use the InfluxDB user interface (UI) and the [`influx export` command](/influxdb/v2/reference/cli/influx/export/) to create InfluxDB templates from [resources](/influxdb/v2/tools/influxdb-templates/#template-resources) in an organization. Add buckets, Telegraf configurations, tasks, and more in the InfluxDB UI and then export those resources as a template.

-   [Create a template](#create-a-template)
-   [Export resources to a template](#export-resources-to-a-template)
-   [Include user-definable resource names](#include-user-definable-resource-names)
-   [Troubleshoot template results and permissions](#troubleshoot-template-results-and-permissions)
-   [Share your InfluxDB templates](#share-your-influxdb-templates)

## Create a template

Creating an organization to contain only your template resources is an easy way to ensure you export the resources you want. Follow these steps to create a template from a new organization.

1. [Start InfluxDB](/influxdb/v2/get-started/).
    
2. [Create an organization](/influxdb/v2/admin/organizations/create-org/).
    
3. In the InfluxDB UI, add one or more [resources](/influxdb/v2/tools/influxdb-templates/#template-resources).
    
4. [Create an **All Access** API token](/influxdb/v2/admin/tokens/create-token/) (or a token that has **read** access to the organization).
    
5. Use the API token from **Step 4** with the [`influx export all` subcommand](/influxdb/v2/reference/cli/influx/export/all/) to export all resources in the organization to a template file.
    
    ```sh
    influx export all \
      -o YOUR_INFLUX_ORG \
      -t YOUR_ALL_ACCESS_TOKEN \
      -f ~/templates/template.yml
    ```
    

## Export resources to a template

The [`influx export` command](/influxdb/v2/reference/cli/influx/export/) and subcommands let you export [resources](#template-resources) from an organization to a template manifest. Your [API token](/influxdb/v2/admin/tokens/) must have **read** access to resources that you want to export.

If you want to export resources that depend on other resources, be sure to export the dependencies.

#### Authentication credentials

The examples below assume your InfluxDB **host**, **organization**, and **token** are provided by either the [active `influx` CLI configuration](/influxdb/v2/reference/cli/influx/#provide-required-authentication-credentials) or by environment variables (`INFLUX_HOST`, `INFLUX_ORG`, and `INFLUX_TOKEN`). If you do not have a CLI configuration set up or the environment variables set, include these required credentials for each command with the following flags:

-   `--host`: [InfluxDB host](/influxdb/v2/reference/urls/)
-   `-o, --org` or `--org-id`: InfluxDB organization name or ID
-   `-t, --token`: InfluxDB API token

To create a template that **adds, modifies, and deletes resources** when applied to an organization, use [InfluxDB stacks](/influxdb/v2/tools/influxdb-templates/stacks/). First, [initialize the stack](/influxdb/v2/tools/influxdb-templates/stacks/init/) and then [export the stack](#export-a-stack).

To create a template that only **adds resources** when applied to an organization (and doesn’t modify existing resources there), choose one of the following:

-   [Export all resources](#export-all-resources) to export all resources or a filtered subset of resources to a template.
-   [Export specific resources](#export-specific-resources) by name or ID to a template.

### Export all resources

To export all [resources](/influxdb/v2/tools/influxdb-templates/#template-resources) within an organization to a template manifest file, use the [`influx export all` subcommand](/influxdb/v2/reference/cli/influx/export/all/) with the `--file` (`-f`) option.

Provide the following:

-   **Destination path and filename** for the template manifest. The filename extension determines the output format:
    -   `your-template.yml`: [YAML](https://yaml.org/) format
    -   `your-template.json`: [JSON](https://json.org/) format

```sh
# Syntax
influx export all -f <FILE_PATH>
```

#### Export resources filtered by labelName or resourceKind

The [`influx export all` subcommand](/influxdb/v2/reference/cli/influx/export/all/) accepts a `--filter` option that exports only resources that match specified label names or resource kinds. To filter on label name *and* resource kind, provide a `--filter` for each.

#### Export only dashboards and buckets with specific labels

The following example exports resources that match this predicate logic:

```js
(resourceKind == "Bucket" or resourceKind == "Dashboard")
and
(labelName == "Example1" or labelName == "Example2")
```

```sh
influx export all \
  -f ~/templates/template.yml \
  --filter=resourceKind=Bucket \
  --filter=resourceKind=Dashboard \
  --filter=labelName=Example1 \
  --filter=labelName=Example2
```

For more options and examples, see the [`influx export all` subcommand](/influxdb/v2/reference/cli/influx/export/all/).

### Export specific resources

To export specific [resources](/influxdb/v2/tools/influxdb-templates/#template-resources) by name or ID, use the **[`influx export` command](/influxdb/v2/reference/cli/influx/export/)** with one or more lists of resources to include.

Provide the following:

-   **Destination path and filename** for the template manifest. The filename extension determines the output format:
    -   `your-template.yml`: [YAML](https://yaml.org/) format
    -   `your-template.json`: [JSON](https://json.org/) format
-   **Resource options** with corresponding lists of resource IDs or resource names to include in the template. For information about what resource options are available, see the [`influx export` command](/influxdb/v2/reference/cli/influx/export/).

```sh
# Syntax
influx export -f <file-path> [resource-flags]
```

#### Export specific resources by ID

```sh
influx export \
  --org-id ed32b47572a0137b \
  -f ~/templates/template.yml \
  -t $INFLUX_TOKEN \
  --buckets=00x000ooo0xx0xx,o0xx0xx00x000oo \
  --dashboards=00000xX0x0X00x000 \
  --telegraf-configs=00000x0x000X0x0X0
```

#### Export specific resources by name

```sh
influx export \
  --org-id ed32b47572a0137b \
  -f ~/templates/template.yml \
  --bucket-names=bucket1,bucket2 \
  --dashboard-names=dashboard1,dashboard2 \
  --telegraf-config-names=telegrafconfig1,telegrafconfig2
```

### Export a stack

To export an InfluxDB [stack](/influxdb/v2/tools/influxdb-templates/stacks/) and all its associated resources as a template, use the `influx export stack` command. Provide the following:

-   **Organization name** or **ID**
-   **API token** with read access to the organization
-   **Destination path and filename** for the template manifest. The filename extension determines the output format:
    -   `your-template.yml`: [YAML](https://yaml.org/) format
    -   `your-template.json`: [JSON](https://json.org/) format
-   **Stack ID**

#### Export a stack as a template

```sh
# Syntax
influx export stack \
  -o <INFLUX_ORG> \
  -t <INFLUX_TOKEN> \
  -f <FILE_PATH> \
  <STACK_ID>

# Example
influx export stack \
  -o my-org \
  -t mYSuP3RS3CreTt0K3n
  -f ~/templates/awesome-template.yml \
  05dbb791a4324000
```

## Include user-definable resource names

After exporting a template manifest, replace resource names with **environment references** to let users customize resource names when installing your template.

1. [Export a template](#export-a-template).
    
2. Select any of the following resource fields to update:
    
    -   `metadata.name`
    -   `associations[].name`
    -   `endpointName` *(unique to `NotificationRule` resources)*
3. Replace the resource field value with an `envRef` object with a `key` property that references the key of a key-value pair the user provides when installing the template. During installation, the `envRef` object is replaced by the value of the referenced key-value pair. If the user does not provide the environment reference key-value pair, InfluxDB uses the `key` string as the default value.
    
    <!-- Tabbed content: Select one of the following options -->
    
    
    **YAML:**
    
    ```yml
    apiVersion: influxdata.com/v2alpha1
    kind: Bucket
    metadata:
      name:
        envRef:
          key: bucket-name-1
    ```
    
    
    
    **JSON:**
    
    ```json
    {
      "apiVersion": "influxdata.com/v2alpha1",
      "kind": "Bucket",
      "metadata": {
        "name": {
          "envRef": {
            "key": "bucket-name-1"
          }
        }
      }
    }
    ```
    
    
    
    <!-- End tabbed content -->
    

Using the example above, users are prompted to provide a value for `bucket-name-1` when [applying the template](/influxdb/v2/tools/influxdb-templates/use/#apply-templates). Users can also include the `--env-ref` flag with the appropriate key-value pair when installing the template.

```sh
# Set bucket-name-1 to "myBucket"
influx apply \
  -f /path/to/template.yml \
  --env-ref=bucket-name-1=myBucket
```

*If sharing your template, we recommend documenting what environment references exist in the template and what keys to use to replace them.*

#### Resource fields that support environment references

Only the following fields support environment references:

-   `metadata.name`
-   `spec.endpointName`
-   `spec.associations.name`

## Troubleshoot template results and permissions

If you get unexpected results, missing resources, or errors when exporting templates, check the following:

-   [Ensure `read` access](#ensure-read-access)
-   [Use Organization ID](#use-organization-id)
-   [Check for resource dependencies](#check-for-resource-dependencies)

### Ensure read access

The [API token](/influxdb/v2/admin/tokens/) must have **read** access to resources that you want to export. The `influx export all` command only exports resources that the API token can read. For example, to export all resources in an organization that has ID `abc123`, the API token must have the `read:/orgs/abc123` permission.

To learn more about permissions, see [how to view authorizations](/influxdb/v2/admin/tokens/view-tokens/) and [how to create a token](/influxdb/v2/admin/tokens/create-token/) with specific permissions.

### Use Organization ID

If your token doesn’t have **read** access to the organization and you want to [export specific resources](#export-specific-resources), use the `--org-id <org-id>` flag (instead of `-o <org-name>` or `--org <org-name>`) to provide the organization.

### Check for resource dependencies

If you want to export resources that depend on other resources, be sure to export the dependencies as well. Otherwise, the resources may not be usable.

## Share your InfluxDB templates

Share your InfluxDB templates with the entire InfluxData community. Contribute your template to the [InfluxDB Community Templates](https://github.com/influxdata/community-templates/) repository on GitHub.

[View InfluxDB Community Templates](https://github.com/influxdata/community-templates/)

#### Related

-   [influx export](/influxdb/v2/reference/cli/influx/export/)
-   [influx export all](/influxdb/v2/reference/cli/influx/export/all/)

[templates](/influxdb/v2/tags/templates/)
