> ## Documentation Index
> Fetch the complete documentation index at: https://checklyhq.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Environment Variables in Terraform

> Manage reusable code snippets and environment variables to reduce duplication in your monitoring setup

Checkly provides resources to eliminate code duplication and reduce maintenance overhead in your monitoring setup.

## Code snippets

[Code snippets](/detect/synthetic-monitoring/browser-checks/snippets) allow you to reuse code across multiple checks without duplication. They work with [setup & teardown scripts](/detect/synthetic-monitoring/api-checks/setup-and-teardown#reusable-code-snippets) in API checks and [browser checks](/detect/synthetic-monitoring/browser-checks/snippets).

<Accordion title="Inline snippet definition">
  ```terraform theme={null}
  resource "checkly_snippet" "login-procedure" {
    name   = "Login"
    script = <<EOT
      await page.fill('#email', process.env.TEST_EMAIL)
      await page.fill('#password', process.env.TEST_PASSWORD)
      await page.click('#login-button')
  EOT
  }
  ```
</Accordion>

<Accordion title="File-based snippet definition (recommended)">
  ```terraform theme={null}
  resource "checkly_snippet" "login-procedure" {
    name   = "Login"
    script = file("${path.module}/snippets/login.js")
  }
  ```

  Store your snippet in a separate file for better organization and syntax highlighting.
</Accordion>

## Environment variables

[Environment variables](/platform/variables) store sensitive data like credentials or configuration values that can be used across checks and groups.

<Accordion title="Check-level variables">
  ```terraform theme={null}
  resource "checkly_check" "user-login" {
    name      = "User Login Flow"
    type      = "BROWSER"
    activated = true
    frequency = 5
    
    environment_variables = {
      TEST_EMAIL    = "user@example.com"
      TEST_PASSWORD = "secure-password"
      API_BASE_URL  = "https://api.example.com"
    }
    
    locations = ["us-west-1", "eu-central-1"]
    script    = file("${path.module}/scripts/login.spec.js")
  }
  ```

  Variables defined at check level are only available to that specific check.
</Accordion>

<Accordion title="Group-level variables">
  ```terraform theme={null}
  resource "checkly_check_group" "ecommerce-flows" {
    name      = "E-commerce Flows"
    activated = true
    
    environment_variables = {
      TEST_EMAIL    = "user@example.com"
      TEST_PASSWORD = "secure-password"
      API_BASE_URL  = "https://api.example.com"
    }
    
    locations   = ["us-west-1", "eu-central-1"]
    concurrency = 3
  }
  ```

  Variables defined at group level are inherited by all checks within that group.
</Accordion>

<Note>
  Account-level environment variables via Terraform are coming soon. For now, use check or group-level variables for your monitoring setup.
</Note>
