Create an InfluxDB template

Use the InfluxDB user interface (UI) and the influx export command to create InfluxDB templates. Add resources (buckets, Telegraf configurations, tasks, and more) in the InfluxDB UI and export the resources as a template.

Templatable resources are scoped to a single organization, so the simplest way to create a template is to create a new organization, build the template within the organization, and then export all resources as a template.

To create a template:

  1. Start InfluxDB.
  2. Create a new organization.
  3. In the InfluxDB UI add one or more of the following templatable resources:

  4. Export the template (see below).

Export a template

Do one of the following to export a template:

Export all resources

To export all templatable resources within an organization to a template manifest, use the influx export all command. Provide the following:

  • Organization name or ID
  • Authentication token with read access to the organization
  • Destination path and filename for the template manifest. The filename extension determines the template format—both YAML (.yml) and JSON (.json) are supported.
Export all resources to a template
  1. # Syntax
  2. influx export all -o <org-name> -f <file-path> -t <token>
  3. # Example
  4. influx export all \
  5. -o my-org \
  6. -f ~/templates/awesome-template.yml \
  7. -t $INFLUX_TOKEN

Export resources filtered by labelName or resourceKind

The influx export all command has an optional --filter flag that exports only resources that match specified label names or resource kinds. Provide multiple filters for both labelName and resourceKind.

Export only dashboards and buckets with specific labels

The following example exports resources that match this predicate logic:

  1. (resourceKind == "Bucket" or resourceKind == "Dashboard")
  2. and
  3. (labelName == "Example1" or labelName == "Example2")
  1. influx export all \
  2. -o my-org \
  3. -f ~/templates/awesome-template.yml \
  4. -t $INFLUX_TOKEN \
  5. --filter=resourceKind=Bucket \
  6. --filter=resourceKind=Dashboard \
  7. --filter=labelName=Example1 \
  8. --filter=labelName=Example2

For information about flags, see the influx export all documentation.

Export specific resources

To export specific resources within an organization to a template manifest, use the influx export with resource flags for each resource to include. Provide the following:

  • Organization name or ID
  • Authentication token with read access to the organization
  • Destination path and filename for the template manifest. The filename extension determines the template format—both YAML (.yml) and JSON (.json) are supported.
  • Resource flags with corresponding lists of resource IDs or resource names to include in the template. For information about what resource flags are available, see the influx export documentation.
Export specific resources to a template
  1. # Syntax
  2. influx export all -o <org-name> -f <file-path> -t <token> [resource-flags]
  3. # Export specific resources by ID
  4. influx export all \
  5. -o my-org \
  6. -f ~/templates/awesome-template.yml \
  7. -t $INFLUX_TOKEN \
  8. --buckets=00x000ooo0xx0xx,o0xx0xx00x000oo \
  9. --dashboards=00000xX0x0X00x000 \
  10. --telegraf-configs=00000x0x000X0x0X0
  11. # Export specific resources by name
  12. influx export all \
  13. -o my-org \
  14. -f ~/templates/awesome-template.yml \
  15. -t $INFLUX_TOKEN \
  16. --bucket-names=bucket1,bucket2 \
  17. --dashboard-names=dashboard1,dashboard2 \
  18. --telegraf-config-names=telegrafconfig1,telegrafconfig2

Export a stack

To export a stack and all its associated resources as a template, use the influx export stack command. Provide the following:

  • Organization name or ID
  • Authentication token with read access to the organization
  • Destination path and filename for the template manifest. The filename extension determines the template format—both YAML (.yml) and JSON (.json) are supported.
  • Stack ID
Export a stack as a template
  1. # Syntax
  2. influx export stack \
  3. -o <org-name> \
  4. -t <token> \
  5. -f <file-path> \
  6. <stack-id>
  7. # Example
  8. influx export stack \
  9. -o my-org \
  10. -t mYSuP3RS3CreTt0K3n
  11. -f ~/templates/awesome-template.yml \
  12. 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
  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.

    YAML JSON

    1. apiVersion: influxdata.com/v2alpha1
    2. kind: Bucket
    3. metadata:
    4. name:
    5. envRef:
    6. key: bucket-name-1
    1. {
    2. "apiVersion": "influxdata.com/v2alpha1",
    3. "kind": "Bucket",
    4. "metadata": {
    5. "name": {
    6. "envRef": {
    7. "key": "bucket-name-1"
    8. }
    9. }
    10. }
    11. }

Using the example above, users are prompted to provide a value for bucket-name-1 when applying the template. Users can also include the --env-ref flag with the appropriate key-value pair when installing the template.

  1. # Set bucket-name-1 to "myBucket"
  2. influx apply \
  3. -f /path/to/template.yml \
  4. --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

Share your InfluxDB templates

Share your InfluxDB templates with the entire InfluxData community. Contribute your template to the InfluxDB Community Templates repository on GitHub.

View InfluxDB Community Templates

Related articles

templates