# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0

name: Bug Report
description: Let us know about an unexpected error, a crash, or an incorrect behavior.
labels: ["bug", "new"]
body:
  - type: markdown
    attributes:
      value: |
        # Thank you for opening an issue.

        The [hashicorp/terraform](https://github.com/hashicorp/terraform) issue tracker is reserved for bug reports relating to the core Terraform CLI application and configuration language.

        For general usage questions, please see: https://www.terraform.io/community.html.

        ## If your issue relates to:
        * **Terraform Cloud/Enterprise**: please email tf-cloud@hashicorp.support or [open a new request](https://support.hashicorp.com/hc/en-us/requests/new).
        * **AWS Terraform Provider**: Open an issue at [hashicorp/terraform-provider-aws](https://github.com/hashicorp/terraform-provider-aws/issues/new/choose).
        * **Azure Terraform Provider**: Open an issue at [hashicorp/terraform-provider-azurerm](https://github.com/hashicorp/terraform-provider-azurerm/issues/new/choose).
        * **Other Terraform Providers**: Please open an issue in the provider's own repository, which can be found by searching the [Terraform Registry](https://registry.terraform.io/browse/providers).

        ## Filing a bug report

        To fix problems, we need clear reproduction cases - we need to be able to see it happen locally. A reproduction case is ideally something a Terraform Core engineer can git-clone or copy-paste and run immediately, without inventing any details or context.

        * A short example can be directly copy-pasteable; longer examples should be in separate git repositories, especially if multiple files are needed
        * Please include all needed context. For example, if you figured out that an expression can cause a crash, put the expression in a variable definition or a resource
        * Set defaults on (or omit) any variables. The person reproducing it should not need to invent variable settings
        * If multiple steps are required, such as running terraform twice, consider scripting it in a simple shell script. Providing a script can be easier than explaining what changes to make to the config between runs.
        * Omit any unneeded complexity: remove variables, conditional statements, functions, modules, providers, and resources that are not needed to trigger the bug
        * When possible, use the [null resource](https://www.terraform.io/docs/providers/null/resource.html) provider rather than a real provider in order to minimize external dependencies. We know this isn't always feasible. The Terraform Core team doesn't have deep domain knowledge in every provider, or access to every cloud platform for reproduction cases.

  - type: textarea
    id: tf-version
    attributes:
      label: Terraform Version
      description: Run `terraform version` to show the version, and paste the result below. If you are not running the latest version of Terraform, please try upgrading because your issue may have already been fixed.
      render: shell
      placeholder: ...output of `terraform version`...
      value:
    validations:
      required: true

  - type: textarea
    id: tf-config
    attributes:
      label: Terraform Configuration Files
      description: Paste the relevant parts of your Terraform configuration between the ``` marks below. For Terraform configs larger than a few resources, or that involve multiple files, please make a GitHub repository that we can clone, rather than copy-pasting multiple files in here.
      placeholder:
      value: |
        ```terraform
        ...terraform config...
        ```
    validations:
      required: true

  - type: textarea
    id: tf-debug
    attributes:
      label: Debug Output
      description: Full debug output can be obtained by running Terraform with the environment variable `TF_LOG=trace`. Please create a GitHub Gist containing the debug output. Please do _not_ paste the debug output in the issue, since debug output is long. Debug output may contain sensitive information. Please review it before posting publicly.
      placeholder: ...link to gist...
      value:
    validations:
      required: true
  - type: textarea
    id: tf-expected
    attributes:
      label: Expected Behavior
      description: What should have happened?
      placeholder: What should have happened?
      value:
    validations:
      required: true
  - type: textarea
    id: tf-actual
    attributes:
      label: Actual Behavior
      description: What actually happened?
      placeholder: What actually happened?
      value:
    validations:
      required: true
  - type: textarea
    id: tf-repro-steps
    attributes:
      label: Steps to Reproduce
      description: |
        Please list the full steps required to reproduce the issue, for example:
          1. `terraform init`
          2. `terraform apply`
      placeholder: |
        1. `terraform init`
        2. `terraform apply`
      value:
    validations:
      required: true
  - type: textarea
    id: tf-add-context
    attributes:
      label: Additional Context
      description: |
        Are there anything atypical about your situation that we should know?
        For example: is Terraform running in a wrapper script or in a CI system? Are you passing any unusual command line options or environment variables to opt-in to non-default behavior?"
      placeholder: Additional context...
      value:
    validations:
      required: false
  - type: textarea
    id: tf-references
    attributes:
      label: References
      description: |
        Are there any other GitHub issues (open or closed) or Pull Requests that should be linked here? For example:
        ```
          - #6017
        ```
      placeholder:
      value:
    validations:
      required: false

  - type: markdown
    attributes:
      value: |
        **Note:** If the submit button is disabled and you have filled out all required fields, please check that you did not forget a **Title** for the issue.
