### Install golangci-lint Source: https://github.com/datadog/terraform-provider-datadog/blob/master/DEVELOPMENT.md Install golangci-lint v2 locally. Use the macOS Homebrew command or the Go install command for any platform. ```sh # macOS brew install golangci-lint # Any platform via Go go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest ``` -------------------------------- ### Example Usage of datadog_cloud_workload_security_agent_rules Source: https://github.com/datadog/terraform-provider-datadog/blob/master/docs/data-sources/cloud_workload_security_agent_rules.md Use this data source to retrieve existing Cloud Workload Security Agent Rules. This example creates a data source with no required arguments. ```terraform data "datadog_cloud_workload_security_agent_rules" "test" { } ``` -------------------------------- ### Example Free Layout Source: https://github.com/datadog/terraform-provider-datadog/blob/master/docs/resources/dashboard_v2.md Creates a free layout dashboard with a timeseries widget and a template variable. The layout_type is set to 'free' and the widget includes a widget_layout block. ```terraform # Example Free Layout resource "datadog_dashboard_v2" "free_dashboard" { title = "Free Layout Dashboard" description = "Created using the Datadog provider in Terraform" layout_type = "free" widget { timeseries_definition { request { formula { formula_expression = "my_query_1" } query { metric_query { data_source = "metrics" query = "avg:system.cpu.user{*} by {env}" name = "my_query_1" aggregator = "sum" } } } } widget_layout { height = 16 width = 25 x = 0 y = 0 } } template_variable { name = "var_1" prefix = "host" default = "aws" } } ``` -------------------------------- ### Example Ordered Layout Source: https://github.com/datadog/terraform-provider-datadog/blob/master/docs/resources/dashboard_v2.md Creates an ordered layout dashboard with timeseries and query value widgets, a group widget, and a template variable. The layout_type is set to 'ordered'. ```terraform # Example Ordered Layout resource "datadog_dashboard_v2" "ordered_dashboard" { title = "Ordered Layout Dashboard" description = "Created using the Datadog provider in Terraform" layout_type = "ordered" widget { timeseries_definition { request { formula { formula_expression = "my_query_1" alias = "CPU Usage" } query { metric_query { data_source = "metrics" query = "avg:system.cpu.user{*} by {env}" name = "my_query_1" aggregator = "avg" } } } title = "CPU Usage by Environment" live_span = "1h" } } widget { query_value_definition { request { formula { formula_expression = "my_query_1" } query { metric_query { data_source = "metrics" query = "avg:system.load.1{*}" name = "my_query_1" aggregator = "avg" } } conditional_formats { comparator = "<" value = "2" palette = "white_on_green" } conditional_formats { comparator = ">" value = "2.2" palette = "white_on_red" } } autoscale = true precision = "4" text_align = "right" title = "System Load" live_span = "1h" } } widget { group_definition { layout_type = "ordered" title = "Group Widget" widget { note_definition { content = "cluster note widget" background_color = "pink" font_size = "14" text_align = "center" show_tick = true tick_edge = "left" tick_pos = "50%" } } } } template_variable { name = "var_1" prefix = "host" default = "aws" } } ``` -------------------------------- ### Create datadog_powerpack_v2 resource Source: https://github.com/datadog/terraform-provider-datadog/blob/master/docs/resources/powerpack_v2.md Creates a Datadog powerpack v2 resource with a layout, template variable, and a timeseries widget. The example sets a 4-hour live span and uses a metric query for CPU usage. ```terraform resource "datadog_powerpack_v2" "foo" { description = "Created using the Datadog provider in terraform" live_span = "4h" layout { height = 10 width = 3 x = 1 y = 0 } template_variables { defaults = ["defaults"] name = "datacenter" } widget { timeseries_definition { request { formula { formula_expression = "my_query_1" } query { metric_query { data_source = "metrics" query = "avg:system.cpu.user{*} by {env}" name = "my_query_1" aggregator = "avg" } } } title = "CPU Usage" } } } ``` -------------------------------- ### Manual dev override setup: ~/.terraformrc Source: https://github.com/datadog/terraform-provider-datadog/blob/master/DEVELOPMENT.md Configure a ~/.terraformrc file with a dev_overrides block for the DataDog/datadog provider. The direct {} block is required so other providers are still installed from their registries. ```shell provider_installation { dev_overrides { "DataDog/datadog" = " directory>" } # For all other providers, install them directly from their origin provider # registries as normal. If you omit this, Terraform will _only_ use # the dev_overrides block, and so no other providers will be available. direct {} } ``` -------------------------------- ### Manual dev override setup: main.tf Source: https://github.com/datadog/terraform-provider-datadog/blob/master/DEVELOPMENT.md Create a main.tf file in your HCL directory (e.g., terraform_examples) that declares the datadog provider source and required version, and configures the provider with your API and app keys. ```shell # terraform_examples/main.tf terraform { required_providers { datadog = { source = "DataDog/datadog" } } required_version = ">= 1.1.5" } provider "datadog" { api_key = "" app_key = "" } # ... any resource config ```