---
title: Use dynamic values in configurations
description: Use parameters, environment variables, and secrets to dynamically set values in your Telegraf configurations.
url: https://docs.influxdata.com/telegraf/controller/configs/dynamic-values/
estimated_tokens: 3638
product: Telegraf
version: v1
---

# Use dynamic values in configurations

#### Telegraf Controller is in Public Beta

Telegraf Controller is in public beta and will be part of the future Telegraf Enterprise offering. While in beta, Telegraf Controller is **not meant for production use**. The Telegraf Controller documentation is a work in progress, and we are actively working to improve it. If you have any questions or suggestions, please [submit an issue](https://github.com/influxdata/docs-v2/issues/new?labels=Telegraf%20Controller). We welcome any and all contributions.

Beta expectations

-   **No configuration or agent limits**  
    While in beta, Telegraf Controller doesn't place any limits on the number of configurations you can store or the number of Telegraf agents you can track. However, upon being generally available, the free distribution of Telegraf Controller will have limits introduced, with the option to increase limits through a Telegraf Enterprise license.
-   **Potential breaking changes**  
    While in beta, we will do our best to no longer make breaking changes to Telegraf Controller, however, they may be necessary. The majority of changes we make will be additive and non-breaking, and include any necessary migrations. When we do need to make breaking changes, we will do our best to communicate them clearly and in advance to minimize disruption.
-   **Flexible release schedule**  
    While in beta, we will continue to create new releases of Telegraf Controller, but likely at irregular intervals. We will provide [Telegraf Controller release notes](/telegraf/controller/reference/release-notes/) to make it easy to track updates.

Provide beta feedback

-   Use the **Feedback** feature in the Telegraf Controller UI.
-   [Join the InfluxDB Community Slack](https://influxdata.com/slack) and post feedback in the **#telegraf-enterprise-alpha** channel.
-   Post feedback in the [InfluxData Community](https://community.influxdata.com).

Join our public channels

-   [InfluxDB Community Slack *(Preferred)*](https://influxdata.com/slack)
-   [InfluxData Community](https://community.influxdata.com)
-   [InfluxDB Subreddit](https://reddit.com/r/influxdb)

Use dynamic values in your Telegraf configurations and reuse a single configuration for multiple distinct agents or across environments.

Telegraf Controller supports the following dynamic value types:

-   **Parameters** for values you want to set or override per agent.
-   **Environment variables** for values provided by the running Telegraf agent.
-   **Secrets** for sensitive values stored in an external secret store.

## Parameters

Use parameters for values that change between agents, deployments, or environments. Define the parameter where the configuration is easy to find, and then reference it in plugin settings. *Configuration parameters are a feature of Telegraf Controller and are not part of the Telegraf project.*

#### Do not use parameters for sensitive information

Do not use parameters to provide sensitive information in agent configurations. Parameter values are passed over the network. Use environment variables or secrets to provide sensitive information to agents.

Use the following syntax:

```
&{param_name[:default_value]}
```

Parameters do not require a default value. Any parameter without a default value is considered required and must [be defined](#define-parameters) when requesting the configuration from Telegraf Controller.

### Use parameters in Telegraf configurations

```toml
[[outputs.influxdb_v2]]
  # Parameter with a default value
  urls = ["&{db_host:https://localhost:8181}"]

[[outputs.heartbeat]]
  # Required parameter without a default value
  instance_id = "&{agent_id}"
```

The example above uses two parameters:

-   `db_host` with a default value of `https://localhost:8181`
-   `agent_id` (Required)

### Define parameters

Use URL-encoded query parameters to define parameter values when requesting a configuration’s TOML. The Telegraf Controller API returns the TOML with replaced parameters.

*For readability, the following example uses Shell variables to build the configuration URL with query parameters for each configuration parameter:*

```sh
configUrl="http://localhost:8888/api/configs/xxxxxx/toml"
params="?db_host=https%3A%2F%2Fmydomain%3A8181"
params+="&agent_id=agent123"
configUrl+=$params

telegraf \
  --config $configUrl
```

If requesting the [example configuration](#use-parameters-in-telegraf-configurations) above, Telegraf would load the following TOML configuration:

```toml
[[outputs.influxdb_v2]]
  # Parameter with a default value
  urls = ["https://mydomain:8181"]

[[outputs.heartbeat]]
  # Required parameter without a default value
  instance_id = "agent123"
```

## Environment Variables

Use environment variables for values that Telegraf reads from the agent environment at runtime. Provide a default to keep the configuration portable across environments.

Use the following syntax:

```sh
${VAR_NAME[:-default_value]}
```

Environment variables do not require a default value. Any environment variable without a default value is considered required and must be defined in the Telegraf agent’s environment when using the configuration.

For more information about Telegraf environment variable syntax, see [Telegraf configuration options—Set environment variables](/telegraf/v1/configuration/#set-environment-variables).

### Use environment variables in Telegraf configurations

```toml
[[inputs.http]]
  urls = ["${API_ENDPOINT:-http://localhost:8080}/metrics"]

  [inputs.http.headers]
    Authorization = "Bearer ${AUTH_TOKEN}"
```

The example above uses two environment variables:

-   `API_ENDPOINT` with a default value of `http://localhost:8080`
-   `AUTH_TOKEN` (Required)

### Define environment variables at runtime

Telegraf loads environment variables from the agent runtime environment.

```sh
API_ENDPOINT=https://mydomain.com/metrics
AUTH_TOKEN=x00x0xx00xxxX0xXXx0000xxxX000x00XXxXx

telegraf \
  --config "http://localhost:8888/api/configs/xxxxxx/toml"
```

## Secrets

Use secrets for credentials or tokens you do not want to store in plain text. Secrets require a secret store and its corresponding `secretstores` plugin.

```toml
# Configure a secret store plugin
[[secretstores.vault]]
  id = "my_vault"
  address = "my_vault:8200"
  token_file = "/path/to/auth/token"
  # ...

# Use secrets from the configured secret store
[[outputs.influxdb_v2]]
  host = "my_influxdb.com:8181"
  token = "@{my_vault:influx_token}"
```

For more information about Telegraf secrets and secret stores, see [Telegraf configuration options—Secret stores](/telegraf/v1/configuration/#secret-stores).

When using secrets:

-   Configure the secret store plugin in the same configuration.
-   Use a stable `id` so references to a secret store remain consistent.
-   Ensure the Telegraf agent can reach and authenticate with the secret store.
