Skip to content

reizist/dd2tf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dd2tf

This gem export datadog configuration as terraform format. Inspired by kurochan/datadog_monitor2terraform

Installation

Add this line to your application's Gemfile:

gem 'dd2tf'

And then execute:

$ bundle

Or install it yourself as:

$ gem install dd2tf

Usage

$ dd2tf help
Commands:
  dd2tf help [COMMAND]    # Describe available commands or one specific command
  dd2tf print [resource]  # Print resources importing command for outputting to tfstate. [resource] is one of the [monitor, timeboard, user, downtime]
  dd2tf tf [resource]     # Print resources config terrafom formatted. [resource] is one of the [monitor, timeboard, user]

Options:
  --dd-api-key=DD_API_KEY
  --dd-app-key=DD_APP_KEY

Print resources config terraform formatted

$ dd2tf tf user --dd_api_key=xxx --dd-app_key=xxx
resource "datadog_user" "reiji_kainuma" {
  disabled = "false"
  email = "reizist@example.com"
  handle = "reizist@example.com"
  is_admin = "true"
  name = "Reiji Kainuma"
  role = ""
}

$ dd2tf tf monitor --dd_api_key=xxx --dd-app_key=xxx
resource "datadog_monitor" "auto_clock_in_sync_with_ntp" {
  name               = "[Auto] Clock in sync with NTP"
  type               = "service check"
  message            = <<EOF
  Triggers if any host's clock goes out of sync with the time given by NTP. The offset threshold is configured in the Agent's `ntp.yaml` file.

Please read the [KB article](http://help.datadoghq.com/hc/en-us/articles/204282095-Network-Time-Protocol-NTP-Offset-Issues) on NTP Offset issues for more details on cause and resolution.
  EOF
  query = "\"ntp.in_sync\".over(\"*\").last(2).count_by_status()"
  thresholds {
	ok = 1
	warning = 1
	critical = 1
  }
  tags = []
}
$ dd2tf tf timeboard --dd_api_key=xxx --dd-app_key=xxx
resource "datadog_timeboard" "presto_staging" {
  title       = "Presto(staging)"
  description = "created by xxx"
  read_only   = false


  graph {
    title = "cluster_memory_manager_metrics"
    viz   = "timeseries"
    autoscale = "true"

    request {
      q  = "avg:presto_staging.cluster_memory_manager_metrics.cluster_memory_usage_bytes{*}"
      aggregator = "avg"
      type = "line"
    }
    request {
      q  = "avg:presto_staging.cluster_memory_manager_metrics.cluster_memory_bytes{*}"
      type = "line"
    }
  }
}

Print import command for importing resources to tfstate

$ dd2tf print monitor --dd_api_key=xxx --dd-app_key=xxx
terraform import datadog_monitor.presto_insufficient_resource_error xxxxxxx 
terraform import datadog_monitor.presto_queueing_is_very_high xxxxxxx

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/reizist/dd2tf. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published