From 7480f1acc724549cb51ab4609b20b3e45d21b0f3 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Tue, 23 Jul 2019 13:13:46 -0700 Subject: [PATCH 01/16] WIP: create dockerfile --- .gitignore | 1 + Dockerfile | 22 ++++++++++++++++++++++ README.md | 4 ++++ create_image.sh | 7 +++++++ start_container.sh | 10 ++++++++++ 5 files changed, 44 insertions(+) create mode 100644 Dockerfile create mode 100755 create_image.sh create mode 100755 start_container.sh diff --git a/.gitignore b/.gitignore index e660fd9..8e4cd58 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ bin/ +exports/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..611ebeb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +# Multi-stage build setup (https://docs.docker.com/develop/develop-images/multistage-build/) + +# Stage 1 (to create a "build" image) +FROM golang:1.11.9 AS builder +RUN go version + +COPY . /go/src/github.com/amnk/dd2tf/ +WORKDIR /go/src/github.com/amnk/dd2tf/ +RUN set -x && \ + go get github.com/golang/dep/cmd/dep && \ + dep ensure -v + +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o dd2tf . + +# Stage 2 (to create a downsized "container executable") + +FROM alpine:3.9 +RUN apk --no-cache add ca-certificates && mkdir -p /app/exports +WORKDIR /app/ +COPY --from=builder /go/src/github.com/amnk/dd2tf/dd2tf /app/dd2tf + +ENTRYPOINT ["/app/dd2tf"] diff --git a/README.md b/README.md index faed778..981afe1 100644 --- a/README.md +++ b/README.md @@ -40,3 +40,7 @@ DATADOG_API_KEY=xxx DATADOG_APP_KEY=xxx ./dd2tf screenboards --all ``` You can find api/app keys in settings, under `Integrations -> API` section. + +Running with Docker: + +- credit to for an example on how to build a Go app into a Docker image diff --git a/create_image.sh b/create_image.sh new file mode 100755 index 0000000..ab353e2 --- /dev/null +++ b/create_image.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +declare -r IMAGE_NAME="amnk/dd2tf" +declare -r IMAGE_TAG="latest" + +echo "Building image '$IMAGE_NAME:$IMAGE_TAG'..." +docker build -t $IMAGE_NAME:$IMAGE_TAG . diff --git a/start_container.sh b/start_container.sh new file mode 100755 index 0000000..415325a --- /dev/null +++ b/start_container.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +declare -r IMAGE_NAME="amnk/dd2tf" +declare -r IMAGE_TAG="latest" +declare -r DATADOG_API_KEY=xxx +declare -r DATADOG_APP_KEY=xxx + +echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" +docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v ${PWD}/exports:/app/exports $IMAGE_NAME:$IMAGE_TAG monitors --ids xxx + From c23678a54c5ab905d82d52fb85ef61d318f0fb0e Mon Sep 17 00:00:00 2001 From: James Tooze Date: Tue, 23 Jul 2019 15:42:25 -0700 Subject: [PATCH 02/16] make run wrapper better --- run_dd2tf.sh | 21 +++++++++++++++++++++ start_container.sh | 10 ---------- 2 files changed, 21 insertions(+), 10 deletions(-) create mode 100755 run_dd2tf.sh delete mode 100755 start_container.sh diff --git a/run_dd2tf.sh b/run_dd2tf.sh new file mode 100755 index 0000000..4510b06 --- /dev/null +++ b/run_dd2tf.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +usage() { + echo -e "\nUsage:\n./run_dd2tf.sh [dd2tf_arguments] \n" +} + +# if less than two arguments supplied or -h/--help supplied, display usage +if [ $# -le 1 ] || [[ ( $# == "--help") || $# == "-h" ]] +then + usage + exit 1 +fi + +declare -r IMAGE_NAME="amnk/dd2tf" +declare -r IMAGE_TAG="latest" +declare -r DATADOG_API_KEY=xxx +declare -r DATADOG_APP_KEY=xxx + +echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" +docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v ${PWD}/exports:/app $IMAGE_NAME:$IMAGE_TAG $@ + diff --git a/start_container.sh b/start_container.sh deleted file mode 100755 index 415325a..0000000 --- a/start_container.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -declare -r IMAGE_NAME="amnk/dd2tf" -declare -r IMAGE_TAG="latest" -declare -r DATADOG_API_KEY=xxx -declare -r DATADOG_APP_KEY=xxx - -echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" -docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v ${PWD}/exports:/app/exports $IMAGE_NAME:$IMAGE_TAG monitors --ids xxx - From b3ee536d23960295128069cc0f612ff5b2b5a126 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Tue, 23 Jul 2019 16:30:50 -0700 Subject: [PATCH 03/16] cleanup run_dd2tf.sh --- run_dd2tf.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/run_dd2tf.sh b/run_dd2tf.sh index 4510b06..0b6eaf4 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -1,6 +1,6 @@ #!/bin/bash -usage() { +usage() { echo -e "\nUsage:\n./run_dd2tf.sh [dd2tf_arguments] \n" } @@ -9,13 +9,18 @@ if [ $# -le 1 ] || [[ ( $# == "--help") || $# == "-h" ]] then usage exit 1 -fi +fi + +if [[ -z "${DATADOG_APP_KEY}" ]] || [[ -z "${DATADOG_APP_KEY}" ]] +then + echo -e "You must export DATADOG_API_KEY and DATADOG_APP_KEY environment variables to use this image\n" + usage + exit 2 +fi declare -r IMAGE_NAME="amnk/dd2tf" declare -r IMAGE_TAG="latest" -declare -r DATADOG_API_KEY=xxx -declare -r DATADOG_APP_KEY=xxx echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" -docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v ${PWD}/exports:/app $IMAGE_NAME:$IMAGE_TAG $@ +docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY $IMAGE_NAME:$IMAGE_TAG $@ From f506750a55b41c411ae6678f6aaa7648178f7a30 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Tue, 23 Jul 2019 17:17:07 -0700 Subject: [PATCH 04/16] add more comments --- README.md | 12 +++++++++--- run_dd2tf.sh | 5 ++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 981afe1..558068e 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ DATADOG_API_KEY=xxx DATADOG_APP_KEY=xxx ./dd2tf dashboards --all Export one particular dashboard (where `1111` is the ID of the dashboard): ```bash -DATADOG_API_KEY=xxx DATADOG_APP_KEY=xxx ./dd2tf dashboards --ids 111 +DATADOG_API_KEY=xxx DATADOG_APP_KEY=xxx ./dd2tf dashboards --ids 1111 ``` Write dashboards to corresponding files: @@ -41,6 +41,12 @@ DATADOG_API_KEY=xxx DATADOG_APP_KEY=xxx ./dd2tf screenboards --all You can find api/app keys in settings, under `Integrations -> API` section. -Running with Docker: +# Running with Docker +```bash +./create_image.sh +export DATADOG_API_KEY=xxx +export DATADOG_APP_KEY=xxx +./run_dd2tf.sh [usual dd2tf arguments go here] +``` -- credit to for an example on how to build a Go app into a Docker image +credit to for an example on how to build a Go app into a Docker image and to provide useful Bash script wrappers diff --git a/run_dd2tf.sh b/run_dd2tf.sh index 0b6eaf4..fa5ef3c 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -4,13 +4,14 @@ usage() { echo -e "\nUsage:\n./run_dd2tf.sh [dd2tf_arguments] \n" } -# if less than two arguments supplied or -h/--help supplied, display usage +# if less than two arguments supplied or -h/--help is supplied, display usage message and exit if [ $# -le 1 ] || [[ ( $# == "--help") || $# == "-h" ]] then usage exit 1 fi +# if the required DATADOG app and api keys aren't exported as Bash variables, display usage message and exit if [[ -z "${DATADOG_APP_KEY}" ]] || [[ -z "${DATADOG_APP_KEY}" ]] then echo -e "You must export DATADOG_API_KEY and DATADOG_APP_KEY environment variables to use this image\n" @@ -22,5 +23,7 @@ declare -r IMAGE_NAME="amnk/dd2tf" declare -r IMAGE_TAG="latest" echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" + +# run the docker container, passing any additional arguments to ./run_dd2tf.sh as arguments to the container and thus dd2tf binary docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY $IMAGE_NAME:$IMAGE_TAG $@ From 6f12bb6c9b359c802206ef70defcf8272aa70736 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Wed, 24 Jul 2019 10:29:00 -0700 Subject: [PATCH 05/16] WIP export files to a subdirectory to work with mounted Docker volume --- main.go | 14 +++++++++----- run_dd2tf.sh | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index 374d80a..7bea1ea 100644 --- a/main.go +++ b/main.go @@ -15,9 +15,9 @@ import ( ) type LocalConfig struct { - client datadog.Client - items []Item - files bool + client datadog.Client + items []Item + files bool components []DatadogElement } @@ -52,12 +52,16 @@ func (i *Item) renderElement(item interface{}, config LocalConfig) { b, _ := Asset(i.d.getAsset()) t, _ := template.New("").Funcs(template.FuncMap{ "escapeCharacters": escapeCharacters, - "DeRefString": func(s *string) string { return *s }, + "DeRefString": func(s *string) string { return *s }, }).Parse(string(b)) if config.files { log.Debug("Creating file", i.d.getName(), i.id) - file := fmt.Sprintf("%v-%v.tf", i.d.getName(), i.id) + path := "exports" + if _, err := os.Stat(path); os.IsNotExist(err) { + os.Mkdir(path, 0644) + } + file := fmt.Sprintf("%v/%v-%v.tf", path, i.d.getName(), i.id) f, err := os.OpenFile(file, os.O_RDWR|os.O_CREATE, 0755) if err != nil { log.Fatal(err) diff --git a/run_dd2tf.sh b/run_dd2tf.sh index fa5ef3c..0691400 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -25,5 +25,5 @@ declare -r IMAGE_TAG="latest" echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" # run the docker container, passing any additional arguments to ./run_dd2tf.sh as arguments to the container and thus dd2tf binary -docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY $IMAGE_NAME:$IMAGE_TAG $@ +docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v exports:/app/exports $IMAGE_NAME:$IMAGE_TAG $@ From 8a50b1668164891e4bd093af83789bb3501e468a Mon Sep 17 00:00:00 2001 From: James Tooze Date: Wed, 24 Jul 2019 11:01:27 -0700 Subject: [PATCH 06/16] forgot PWD on volume mount path --- run_dd2tf.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run_dd2tf.sh b/run_dd2tf.sh index 0691400..29baddc 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -25,5 +25,5 @@ declare -r IMAGE_TAG="latest" echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" # run the docker container, passing any additional arguments to ./run_dd2tf.sh as arguments to the container and thus dd2tf binary -docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v exports:/app/exports $IMAGE_NAME:$IMAGE_TAG $@ +docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v ${PWD}/exports:/app/exports $IMAGE_NAME:$IMAGE_TAG $@ From 4e0e9f067e93170fc6719c1f3608bc7977c16ea7 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Wed, 24 Jul 2019 11:04:26 -0700 Subject: [PATCH 07/16] ensure exports directory created during run --- run_dd2tf.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/run_dd2tf.sh b/run_dd2tf.sh index 29baddc..b20ffcb 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -19,6 +19,11 @@ then exit 2 fi +# create exports directory for use with dd2tf --files argument +if [ ! -d "${PWD}/exports" ]; then + mkdir ${PWD}/exports +fi + declare -r IMAGE_NAME="amnk/dd2tf" declare -r IMAGE_TAG="latest" From 2926f512a314975b7e2e790e6dfae66d12656ee0 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Wed, 8 Jan 2020 15:21:45 -0800 Subject: [PATCH 08/16] Support Terraform 0.12, Golang 1.14 - Update monitor, screenboard and timeboard templates to output valid Terraform 0.12 code - Update Golang version to 1.14 - Replace references to amnk in Travis config - Update README --- .travis.yml | 14 +++++--------- Dockerfile | 4 ++-- README.md | 3 ++- tmpl/monitor.tmpl | 4 ++-- tmpl/screenboard.tmpl | 26 +++++++++++++------------- tmpl/timeboard.tmpl | 16 ++++++++-------- 6 files changed, 32 insertions(+), 35 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9f09e7a..93f40b4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,14 @@ language: go env: global: - - DEP_VERSION=0.5.0 + - DEP_VERSION=0.5.4 - secure: before_install: - curl -L -s https://github.com/golang/dep/releases/download/v${DEP_VERSION}/dep-linux-amd64 -o $GOPATH/bin/dep - chmod +x $GOPATH/bin/dep - go get -u github.com/containous/go-bindata/... go: - - 1.11.9 + - "1.14" - master before_deploy: @@ -19,17 +19,13 @@ before_deploy: deploy: provider: releases api_key: - secure: fY/WknOrIOG3AusZLioA98T+5Mt5pD4xnWbL5f7Wv9OBXIs362Q3YfoPD9Q++FTbxBHDsB5DKu8KvJOicjCdnIS3UOthZvs1s3Jh+3Nmu6uSFMwweLyETsMxEbdguSzp96nk23/3l4RS4YdpgswS5GnAHOOjryuwST08YpVscCkphT9blR+m8TnkrT/8Rj5Rev4sYXtR8g+/F0PlKyAypHOppwNAFeFj9mvWG5JKCzhl3+867LgPdOKBDNJwtmzikggLrHw2F5QvTWdVm6v30xzeqx71pe5AFPo7WYO4IWk5orkcDX1rLx8mZIUAw8LJ2Ou9ybIDL0wzSINrpm2vMSqlpSPklDmvAR2g5LgK1TXzwAM7uzxcFMZTHqNvDswuVOHBj3EUnyfzSLvRONi+ii0kYbhYqO5ddQXRVLTZkYY3rzmeVTAfpe1Yv1V+kXbuSJc8+epc89X8gkjIxKSN/yxlJIclNwXIVPGn3y+iOCZEhTA1+aVjYT11g11r8ih70NKQ/vAtnlyqsW/DD4YIWt5irjUak/dA5bccwSm3J2MfG3zIOS0m9p3CGp5bVKNtKry9a5a9bmF+VvNpMetpkdfFBzSrskP5wydvGRxSarmsTJ18yjbsKBbgbXklCq8LnHpFZ+4kpbduKkpjoQcY7Q9++G35dAeUwpISJSHHnQE= + secure: DvRDlaPJxEnejl+chn7CJUFzYi9QrWXSMwHrXMP/2IybFUd0qUTj9Dy3099HjRfyH9BVQSjuvk4DI8P3wmpL2/wTN+O28H6Ik7Monm5wpm1b2sXUoiI2kL6k36VaJNXlLfcjGjK7sM2RfAPwaDS0b1NBtoYgBicZXH9UD3jyeAiDI3mZI2mqwieC1Essb23X5rOf7o6VjZb/fY6tPU7dbDpiSMCF+l21VwrHr8DSJ0bxakMN5bfsd3YBWeG6RfoNGvb+qWVDXylXVXjIQqBrbtouGN0jzav6qqUn/Zhuw6ODgpVqBNTpZrMIHW3vKslTI45890muTowiIwwu2EAUrBouKZywz5yNXoYgTJ4q8QOTz1gGFRp/hAKysrOUhOtltr17btpQG6i34vI7hAV9fCVfsopCYZrMH/rbP72vcijxeOmmnyAkeGPq0ui+ErFJobvRuu93FoVrwwTHPFXoLmHeWfh3dMk/WpL3YOd+o/WfOTV8X8r8HBl2lgY4He9ZlEX8H4NdOSexH4mI+QGrJ/u24J4q57iZmqBOF4Utl32Hgu49vRDjD6Od2g2bQ6EO83F9bo+AY6yunuPxm4Hy+IuP4w6h++xbieAqUAhl+PkDlq2hWRDIVWIuGsICs5NkkapdtMqPL23qUpRwlLXeSj5ueGhA6EhvtVhSQ2Wp7U4= file: - bin/dd2tf-darwin-amd64 - bin/dd2tf-linux-amd64 on: - repo: amnk/dd2tf + repo: toozej/dd2tf tags: true branch: master - go: 1.11.9 + go: "1.14" skip-cleanup: true - -notifications: - email: false - diff --git a/Dockerfile b/Dockerfile index 611ebeb..56e74c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # Multi-stage build setup (https://docs.docker.com/develop/develop-images/multistage-build/) # Stage 1 (to create a "build" image) -FROM golang:1.11.9 AS builder +FROM golang:1-buster AS builder RUN go version COPY . /go/src/github.com/amnk/dd2tf/ @@ -14,7 +14,7 @@ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o dd2tf . # Stage 2 (to create a downsized "container executable") -FROM alpine:3.9 +FROM alpine:3 RUN apk --no-cache add ca-certificates && mkdir -p /app/exports WORKDIR /app/ COPY --from=builder /go/src/github.com/amnk/dd2tf/dd2tf /app/dd2tf diff --git a/README.md b/README.md index 558068e..f4bff1e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/amnk/dd2tf.svg?branch=master)](https://travis-ci.org/amnk/dd2tf) +[![Build Status](https://travis-ci.org/toozej/dd2tf.svg?branch=master)](https://travis-ci.org/toozej/dd2tf) A simple utility to convert DataDog dashboards and/or monitors to Terraform format. @@ -11,6 +11,7 @@ Just run (GOPATH and sometimes GOBIN have to be set): ```bash dep ensure go generate && go build +go install ``` # Examples diff --git a/tmpl/monitor.tmpl b/tmpl/monitor.tmpl index c93739e..2b029d3 100644 --- a/tmpl/monitor.tmpl +++ b/tmpl/monitor.tmpl @@ -1,4 +1,4 @@ -resource "datadog_monitor" "{{ .Id }}" { +resource "datadog_monitor" "dd_{{ .Id }}" { name = "{{ .Name }}" type = "{{ .Type }}" {{- if .Tags }} @@ -41,7 +41,7 @@ EOT {{- if .Thresholds }} {{- with .Thresholds }} - thresholds { + thresholds = { {{- if .Ok }} ok = {{ .Ok }} {{- end }} diff --git a/tmpl/screenboard.tmpl b/tmpl/screenboard.tmpl index 59b2f43..46e2ee3 100644 --- a/tmpl/screenboard.tmpl +++ b/tmpl/screenboard.tmpl @@ -1,4 +1,4 @@ -resource "datadog_screenboard" "{{ .Id }}" { +resource "datadog_screenboard" "dd_{{ .Id }}" { title = "{{ .Title }}" {{- if .ReadOnly }} read_only = {{ .ReadOnly }} @@ -9,10 +9,10 @@ resource "datadog_screenboard" "{{ .Id }}" { {{- if .TemplateVariables }} {{- with .TemplateVariables }} {{- range . }} - template_variable { + template_variable = { name = "{{ .Name }}" prefix = "{{ .Prefix }}" - default = "{{ .Default }}" + default = "{{ .Default }}" } {{- end }} {{- end }} @@ -20,7 +20,7 @@ resource "datadog_screenboard" "{{ .Id }}" { {{- with .Widgets }} {{- range . }} - widget { + widget = { type = "{{ .Type }}" x = "{{ .X }}" y = "{{ .Y }}" @@ -47,14 +47,14 @@ resource "datadog_screenboard" "{{ .Id }}" { {{- end }} {{- if .Time }} {{- with .Time }} - time { + time = { live_span = "{{ .LiveSpan }}" } {{- end }} {{- end }} {{- if .TileDef }} {{- with .TileDef }} - tile_def { + tile_def = { {{- if .Viz }} viz = "{{ .Viz }}" {{- end }} @@ -70,7 +70,7 @@ resource "datadog_screenboard" "{{ .Id }}" { {{- if .Requests }} {{- with .Requests }} {{- range . }} - request { + request = { {{- if .Query }} q = "{{ .Query }}" {{- end }} @@ -113,7 +113,7 @@ resource "datadog_screenboard" "{{ .Id }}" { {{- if .ConditionalFormats }} {{- with .ConditionalFormats -}} {{- range . }} - conditional_format { + conditional_format = { {{- if .Color }} color = "{{ .Color }}" {{- end }} @@ -133,12 +133,12 @@ resource "datadog_screenboard" "{{ .Id }}" { image_url = "{{ .ImageURL }}" {{- end }} } - {{- end }} + {{- end }} {{- end }} {{- end }} {{- if .Style }} {{- with .Style }} - style { + style = { {{- if .Palette }} palette = "{{ .Palette }}" {{- end }} @@ -161,7 +161,7 @@ resource "datadog_screenboard" "{{ .Id }}" { {{- if .Events -}} {{- with .Events -}} {{- range . }} - event { + event = { q = "{{ .Query }}" } //event {{- end -}} @@ -171,7 +171,7 @@ resource "datadog_screenboard" "{{ .Id }}" { {{- if .Markers }} {{- with .Markers }} {{- range . }} - marker { + marker = { {{- if .Type }} type = "{{ .Type }}" {{- end }} @@ -310,7 +310,7 @@ resource "datadog_screenboard" "{{ .Id }}" { {{- end }} {{- if .Params }} {{- with .Params }} - params { + params = { {{- if .Sort }} sort = "{{ .Sort }}" {{- end }} diff --git a/tmpl/timeboard.tmpl b/tmpl/timeboard.tmpl index baa2b6d..adf3b18 100644 --- a/tmpl/timeboard.tmpl +++ b/tmpl/timeboard.tmpl @@ -1,10 +1,10 @@ -resource "datadog_timeboard" "{{ .Id }}" { +resource "datadog_timeboard" "dd_{{ .Id }}" { title = "{{ .Title }}" description = "{{ .Description }}" read_only = {{ .ReadOnly -}} {{with .Graphs -}} {{range . }} - graph { + graph = { title = "{{ .Title }}" {{with .Definition -}} viz = "{{ .Viz -}}" @@ -13,30 +13,30 @@ resource "datadog_timeboard" "{{ .Id }}" { {{- if .Groups -}}group = [{{$groups := .Groups}}{{range $index, $elem := .Groups}}{{if $index}},{{end}}"{{$elem}}"{{end}}]{{- end}} {{- if .Scopes -}}scope = [{{$scopes := .Scopes}}{{range $index, $elem := .Scopes}}{{if $index}},{{end}}"{{$elem}}"{{end}}]{{- end}} {{- if .Style -}} - style { + style = { palette = "{{ .Style.Palette }}" palette_flip = "{{ .Style.PaletteFlip }}" }{{- end}} {{- if .Markers -}}{{- with .Markers -}}{{range .}} - marker { + marker = { type = "{{ .Type }}" value = "{{ .Value }}" {{ if .Label -}}label = "{{ .Label }}"{{- end}} }{{- end}}{{- end}}{{- end}} {{- with .Requests -}}{{range .}} - request { + request = { q = "{{ .Query -}}" {{ if .Type -}}type = "{{ .Type }}"{{ end }} {{ if .Aggregator -}}{{ if ne "" (DeRefString .Aggregator) -}}aggregator = "{{ .Aggregator }}"{{ end}}{{ end -}} {{ if .Style -}}{{ with .Style }} - style { + style = { {{if .Palette -}}palette = "{{ .Palette }}"{{- end}} {{if .Width -}}width = "{{ .Width }}"{{- end}} {{if .Type -}}type = "{{ .Type }}"{{- end}} } {{ end -}}{{ end}} {{- if .ConditionalFormats }}{{- with .ConditionalFormats }}{{- range . -}} - conditional_format { + conditional_format = { {{ if .Palette }}palette = "{{ .Palette }}"{{ end }} comparator = "{{ .Comparator }}" {{- if .Value }}value = "{{ .Value }}"{{ end }} @@ -51,7 +51,7 @@ resource "datadog_timeboard" "{{ .Id }}" { }{{end}}{{- end}} {{- with .TemplateVariables -}}{{- range . }} - template_variable { + template_variable = { name = "{{ .Name }}" prefix = "{{ .Prefix }}" default = "{{ .Default }}" From 0974f857b6759b08fd1f9b335be23cca254182fa Mon Sep 17 00:00:00 2001 From: James Tooze Date: Wed, 8 Jan 2020 15:26:44 -0800 Subject: [PATCH 09/16] oops, wrong Golang version previously, should be 1.13.5, not 1.14 --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 93f40b4..9ce28b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_install: - chmod +x $GOPATH/bin/dep - go get -u github.com/containous/go-bindata/... go: - - "1.14" + - "1.13.5" - master before_deploy: @@ -27,5 +27,5 @@ deploy: repo: toozej/dd2tf tags: true branch: master - go: "1.14" + go: "1.13.5" skip-cleanup: true From bb6b2841191636b2c93278935cdf82f14d0f2800 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Wed, 8 Jan 2020 16:25:01 -0800 Subject: [PATCH 10/16] Docker generate templates, fix Travis releases --- .travis.yml | 30 ++++++++++++++---------------- Dockerfile | 6 ++++-- run_dd2tf.sh | 2 +- tmpl/monitor.tmpl | 2 +- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9ce28b2..e1c4e5c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,30 +2,28 @@ language: go env: global: - DEP_VERSION=0.5.4 - - secure: before_install: - - curl -L -s https://github.com/golang/dep/releases/download/v${DEP_VERSION}/dep-linux-amd64 -o $GOPATH/bin/dep - - chmod +x $GOPATH/bin/dep - - go get -u github.com/containous/go-bindata/... +- curl -L -s https://github.com/golang/dep/releases/download/v${DEP_VERSION}/dep-linux-amd64 + -o $GOPATH/bin/dep +- chmod +x $GOPATH/bin/dep +- go get -u github.com/go-bindata/go-bindata/... go: - - "1.13.5" - - master - +- 1.13.5 +- master before_deploy: - - dep ensure && go generate - - GOOS=darwin GOARCH=amd64 go build -o bin/dd2tf-darwin-amd64 - - GOOS=linux GOARCH=amd64 go build -o bin/dd2tf-linux-amd64 - +- dep ensure && go generate +- GOOS=darwin GOARCH=amd64 go build -o bin/dd2tf-darwin-amd64 +- GOOS=linux GOARCH=amd64 go build -o bin/dd2tf-linux-amd64 deploy: provider: releases api_key: - secure: DvRDlaPJxEnejl+chn7CJUFzYi9QrWXSMwHrXMP/2IybFUd0qUTj9Dy3099HjRfyH9BVQSjuvk4DI8P3wmpL2/wTN+O28H6Ik7Monm5wpm1b2sXUoiI2kL6k36VaJNXlLfcjGjK7sM2RfAPwaDS0b1NBtoYgBicZXH9UD3jyeAiDI3mZI2mqwieC1Essb23X5rOf7o6VjZb/fY6tPU7dbDpiSMCF+l21VwrHr8DSJ0bxakMN5bfsd3YBWeG6RfoNGvb+qWVDXylXVXjIQqBrbtouGN0jzav6qqUn/Zhuw6ODgpVqBNTpZrMIHW3vKslTI45890muTowiIwwu2EAUrBouKZywz5yNXoYgTJ4q8QOTz1gGFRp/hAKysrOUhOtltr17btpQG6i34vI7hAV9fCVfsopCYZrMH/rbP72vcijxeOmmnyAkeGPq0ui+ErFJobvRuu93FoVrwwTHPFXoLmHeWfh3dMk/WpL3YOd+o/WfOTV8X8r8HBl2lgY4He9ZlEX8H4NdOSexH4mI+QGrJ/u24J4q57iZmqBOF4Utl32Hgu49vRDjD6Od2g2bQ6EO83F9bo+AY6yunuPxm4Hy+IuP4w6h++xbieAqUAhl+PkDlq2hWRDIVWIuGsICs5NkkapdtMqPL23qUpRwlLXeSj5ueGhA6EhvtVhSQ2Wp7U4= - file: - - bin/dd2tf-darwin-amd64 - - bin/dd2tf-linux-amd64 + secure: mr2XfYKTeH0EE1zdG++D9GIZFC/gVi/0L90uIOGitfHZ8lqQOXbPzdhosoQBxl8CgK5XVpRe7z5WqGYjhff3SNxYiy/WzUAPyItLemo5Urnr5tV7dyjtMT2EE71lmBAJ1rMZTBrOk1uA08m2eXNW5rz+4ZvaoPZBXkDcE7rVzjBRi13IQGWzn5c2NkmPgUxPjjbhzCEJzKuSnnTo1Rs98t5OuVag5QV08bOlNbGkeQXYBE6LcLPZqi3bXkFbAoqU+1bWU7mZXxxoCopyn7RKCa+06B+RTMwjqTQeSaktMSnuAM+FUMjLiqD6myqW2s4FBKhVd4VAlxYMDJ2gZ/YYBlAvwFLDwc4uwrTFpwdyH8cSYybof+BXAsGDrlMVXZhvylftyri79XlYN/VW9waTEWSTn4wJB8jeC7YW6GYdUbfkNxtvbH4a6vPtPkZyo+MECaHfkco18GfQfRGjtPcW8ct3pwZoXo+DJWPxZ/Y5JOQibW0Dka97vLM2GM6OvrORFSrEY4lNgMQVwWwBI7tSKAF8vgUqnCGGZ1YHFJBF4USi7I1Aqs7a1bD+M4cvBk9oJS/YKcGgw2QxzH7prttMBV+ssFShuC+BIhbjWGRAnUolNbb5yIAs8ZrN+q8JLGEda4YHiSHuoSGYR1wLfONWRyKvSWjxeLAyt5XRdLHEobI= + file: + - bin/dd2tf-darwin-amd64 + - bin/dd2tf-linux-amd64 on: repo: toozej/dd2tf tags: true branch: master - go: "1.13.5" + go: 1.13.5 skip-cleanup: true diff --git a/Dockerfile b/Dockerfile index 56e74c6..30c2e82 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,9 +7,11 @@ RUN go version COPY . /go/src/github.com/amnk/dd2tf/ WORKDIR /go/src/github.com/amnk/dd2tf/ RUN set -x && \ - go get github.com/golang/dep/cmd/dep && \ + go get -u github.com/golang/dep/cmd/dep && \ dep ensure -v - +RUN set -x && \ + go get -u github.com/go-bindata/go-bindata/... && \ + go generate -v RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o dd2tf . # Stage 2 (to create a downsized "container executable") diff --git a/run_dd2tf.sh b/run_dd2tf.sh index b20ffcb..6e7a3b8 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -12,7 +12,7 @@ then fi # if the required DATADOG app and api keys aren't exported as Bash variables, display usage message and exit -if [[ -z "${DATADOG_APP_KEY}" ]] || [[ -z "${DATADOG_APP_KEY}" ]] +if [[ -z "${DATADOG_APP_KEY}" ]] || [[ -z "${DATADOG_API_KEY}" ]] then echo -e "You must export DATADOG_API_KEY and DATADOG_APP_KEY environment variables to use this image\n" usage diff --git a/tmpl/monitor.tmpl b/tmpl/monitor.tmpl index 2b029d3..b9098bc 100644 --- a/tmpl/monitor.tmpl +++ b/tmpl/monitor.tmpl @@ -27,7 +27,7 @@ EOT timeout_h = {{ .TimeoutH }} {{- end }} {{- if .IncludeTags }} - include_tags = {{ .IncludeTags }} + include_tags = {{ .IncludeTags }} {{- end }} {{- if .RequireFullWindow }} require_full_window = {{ .RequireFullWindow }} From 77b2939d64596faecef5d37f4dae133a5080a702 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Thu, 9 Jan 2020 09:45:52 -0800 Subject: [PATCH 11/16] Fix Travis releases, update IMAGE_NAME --- .travis.yml | 2 +- create_image.sh | 2 +- run_dd2tf.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index e1c4e5c..ea04841 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ before_deploy: deploy: provider: releases api_key: - secure: mr2XfYKTeH0EE1zdG++D9GIZFC/gVi/0L90uIOGitfHZ8lqQOXbPzdhosoQBxl8CgK5XVpRe7z5WqGYjhff3SNxYiy/WzUAPyItLemo5Urnr5tV7dyjtMT2EE71lmBAJ1rMZTBrOk1uA08m2eXNW5rz+4ZvaoPZBXkDcE7rVzjBRi13IQGWzn5c2NkmPgUxPjjbhzCEJzKuSnnTo1Rs98t5OuVag5QV08bOlNbGkeQXYBE6LcLPZqi3bXkFbAoqU+1bWU7mZXxxoCopyn7RKCa+06B+RTMwjqTQeSaktMSnuAM+FUMjLiqD6myqW2s4FBKhVd4VAlxYMDJ2gZ/YYBlAvwFLDwc4uwrTFpwdyH8cSYybof+BXAsGDrlMVXZhvylftyri79XlYN/VW9waTEWSTn4wJB8jeC7YW6GYdUbfkNxtvbH4a6vPtPkZyo+MECaHfkco18GfQfRGjtPcW8ct3pwZoXo+DJWPxZ/Y5JOQibW0Dka97vLM2GM6OvrORFSrEY4lNgMQVwWwBI7tSKAF8vgUqnCGGZ1YHFJBF4USi7I1Aqs7a1bD+M4cvBk9oJS/YKcGgw2QxzH7prttMBV+ssFShuC+BIhbjWGRAnUolNbb5yIAs8ZrN+q8JLGEda4YHiSHuoSGYR1wLfONWRyKvSWjxeLAyt5XRdLHEobI= + secure: hRJ4FXY4uX4Y6UXelMB7LpoSkoWEAmsnwyMnRWNike3BTvnNY/lGw+XHj/gmBT6BYis8a4zM6NSlBvhiGmAWjTM1IBikq9X26Td54JRIX3oCTF0i0tWGXN662heKu5WWzTpPtFKvSfFeSSN41MxH4ME6dUMUXR02QtbOvMsWsfZQ2bdWTXB06jTYpGFkIPjHIjzqxkVnE3D7sjeK5x5/nQco1zTQjA8BkAiasaoF8JC1H5wdCpAsMP8yd1e3H6a5AFShD1elPxT4kVi3RKLylN2NPDlcuI+lkxajBTThDK5Iyfyuj6feSHorpoWbjVlkMlfTFS4cb579DEpe70WTnqYVqXX1Mzvh96DX88CBlLohfXkY2o7YidS+yUJd1e/YzNdQPaWe7tyAAvEB53i2vf6Y//tkWJO3+cv9mzzj7jS8JbJRykM9dHTE/nqqaYfZObN/hZuG+7njeXyZfrVV+MDdKW6bnefrmM3K1nXjqBfLMSPBJ0Zm7KOfYYgWJgZCjDzyW24rGDT+UbW2zxsBVUo+pTdqDQWFWnQON3aqfrYJyhmXK8iKXvlrMmpHg3a7H1O5az8dxSuSYMIOmkdsdjPlsjiPfcbvgYuOE2gnMlgLV1jx9eHc7TE9G31jKH/QL63OUPhXlOv43R8LPKV1ayNZeckAAMjw3ydtGoC0Gc4= file: - bin/dd2tf-darwin-amd64 - bin/dd2tf-linux-amd64 diff --git a/create_image.sh b/create_image.sh index ab353e2..ace5182 100755 --- a/create_image.sh +++ b/create_image.sh @@ -1,6 +1,6 @@ #!/bin/bash -declare -r IMAGE_NAME="amnk/dd2tf" +declare -r IMAGE_NAME="toozej/dd2tf" declare -r IMAGE_TAG="latest" echo "Building image '$IMAGE_NAME:$IMAGE_TAG'..." diff --git a/run_dd2tf.sh b/run_dd2tf.sh index 6e7a3b8..cd33070 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -24,7 +24,7 @@ if [ ! -d "${PWD}/exports" ]; then mkdir ${PWD}/exports fi -declare -r IMAGE_NAME="amnk/dd2tf" +declare -r IMAGE_NAME="toozej/dd2tf" declare -r IMAGE_TAG="latest" echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" From 0f196b256b741833a99de86ee14fa320b07edc38 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Thu, 9 Jan 2020 11:18:43 -0800 Subject: [PATCH 12/16] Terraform validation to run_dd2tf - Adds validation of exported Terraform files in ./exports/ - Adds better error checking and output messages --- run_dd2tf.sh | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/run_dd2tf.sh b/run_dd2tf.sh index cd33070..2086dd7 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -24,11 +24,22 @@ if [ ! -d "${PWD}/exports" ]; then mkdir ${PWD}/exports fi -declare -r IMAGE_NAME="toozej/dd2tf" -declare -r IMAGE_TAG="latest" +echo "Starting export of Datadog files to Terraform configs..." -echo "Starting container for image '$IMAGE_NAME:$IMAGE_TAG'" +# run the dd2tf docker container, passing any additional arguments to ./run_dd2tf.sh as arguments to the container and thus dd2tf binary +docker run --rm -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v ${PWD}/exports:/app/exports toozej/dd2tf:latest $@ -# run the docker container, passing any additional arguments to ./run_dd2tf.sh as arguments to the container and thus dd2tf binary -docker run -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v ${PWD}/exports:/app/exports $IMAGE_NAME:$IMAGE_TAG $@ +# if exports is empty, exit 3 +if [ ! "$(ls -A ${PWD}/exports)" ]; then + echo -e "${PWD}/exports/ directory is empty, this means the dd2tf export failed. Check log messages above.\n" + exit 3 +fi + + +echo "Datadog files exported. Initializing Terraform..." +# initialize Terraform in the exports/ directory +docker run --rm -v ${PWD}/exports:/app/exports -w /app/exports -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY hashicorp/terraform:light init +echo "Terraform initialized. Validating exported Datadog files are valid Terraform configs..." +# validate Terraform files in the exports/ directory +docker run --rm -v ${PWD}/exports:/app/exports -w /app/exports -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY hashicorp/terraform:light validate From 6037cf1a558184549961d0116ba756880ed47326 Mon Sep 17 00:00:00 2001 From: James Tooze Date: Fri, 14 Feb 2020 21:43:46 -0800 Subject: [PATCH 13/16] tar exported Terraform files --- Dockerfile => Dockerfile_dd2tf | 0 README.md | 3 ++- create_image.sh | 7 ------- create_images.sh | 7 +++++++ run_tar_exports.sh | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 42 insertions(+), 8 deletions(-) rename Dockerfile => Dockerfile_dd2tf (100%) delete mode 100755 create_image.sh create mode 100755 create_images.sh create mode 100755 run_tar_exports.sh diff --git a/Dockerfile b/Dockerfile_dd2tf similarity index 100% rename from Dockerfile rename to Dockerfile_dd2tf diff --git a/README.md b/README.md index f4bff1e..c24ccbb 100644 --- a/README.md +++ b/README.md @@ -44,10 +44,11 @@ You can find api/app keys in settings, under `Integrations -> API` section. # Running with Docker ```bash -./create_image.sh +./create_images.sh export DATADOG_API_KEY=xxx export DATADOG_APP_KEY=xxx ./run_dd2tf.sh [usual dd2tf arguments go here] +./run_tar_exports.sh [optional arguments for tar filename go here] ``` credit to for an example on how to build a Go app into a Docker image and to provide useful Bash script wrappers diff --git a/create_image.sh b/create_image.sh deleted file mode 100755 index ace5182..0000000 --- a/create_image.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -declare -r IMAGE_NAME="toozej/dd2tf" -declare -r IMAGE_TAG="latest" - -echo "Building image '$IMAGE_NAME:$IMAGE_TAG'..." -docker build -t $IMAGE_NAME:$IMAGE_TAG . diff --git a/create_images.sh b/create_images.sh new file mode 100755 index 0000000..132252b --- /dev/null +++ b/create_images.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +declare -r DD2TF_IMAGE_NAME="toozej/dd2tf" +declare -r DD2TF_IMAGE_TAG="latest" + +echo "Building image '$DD2TF_IMAGE_NAME:$DD2TF_IMAGE_TAG'..." +docker build -f Dockerfile_dd2tf -t $DD2TF_IMAGE_NAME:$DD2TF_IMAGE_TAG . diff --git a/run_tar_exports.sh b/run_tar_exports.sh new file mode 100755 index 0000000..a0c0835 --- /dev/null +++ b/run_tar_exports.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +usage() { + echo -e "\nUsage:\n./run_tar_exports.sh [optional filename goes here] \n" +} + +# if -h/--help is supplied, display usage message and exit +if [[ ( $# == "--help") || $# == "-h" ]] +then + usage + exit 1 +fi + +# if ${PWD}/exports doesn't exist we can't tar it, so exit +if [ ! -d "${PWD}/exports" ]; then + echo -e "ERROR: ./exports directory doesn't exist so we can't tar it, exiting...\n" + exit 2 +fi + +# set tar default filename +TAR_FILENAME="exports.tar.gz" + +# if optional filename argument sent to this script, then use it as tar filename +if [ -n "${1}" ]; then + TAR_FILENAME="${1}" +fi + +# ensure any prior created $TAR_FILENAME is removed +rm -f ${PWD}/exports/${TAR_FILENAME} ${PWD}/exports/exports.tar.gz + +echo "Terraform validated. Creating tar archive of exported Datadog Terraform files..." +# tar the exports/ directory +docker run --rm -v ${PWD}/exports:/app/exports -w /app/exports debian:stable tar -C /app/exports --exclude=./.* -czvf ./${TAR_FILENAME} . From 2bfa6907df16202fe3154118579edd100e7b73fe Mon Sep 17 00:00:00 2001 From: James Tooze Date: Mon, 17 Feb 2020 10:50:25 -0800 Subject: [PATCH 14/16] make run_tar_exports handle spaces in filename --- run_tar_exports.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run_tar_exports.sh b/run_tar_exports.sh index a0c0835..4e91165 100755 --- a/run_tar_exports.sh +++ b/run_tar_exports.sh @@ -30,4 +30,4 @@ rm -f ${PWD}/exports/${TAR_FILENAME} ${PWD}/exports/exports.tar.gz echo "Terraform validated. Creating tar archive of exported Datadog Terraform files..." # tar the exports/ directory -docker run --rm -v ${PWD}/exports:/app/exports -w /app/exports debian:stable tar -C /app/exports --exclude=./.* -czvf ./${TAR_FILENAME} . +docker run --rm -v ${PWD}/exports:/app/exports -w /app/exports debian:stable tar -C /app/exports --exclude=./.* -czvf "./${TAR_FILENAME}" . From 6c7d381f75bec4dc777158a4e2e78d93f8ccb32b Mon Sep 17 00:00:00 2001 From: James Tooze Date: Mon, 17 Feb 2020 11:26:34 -0800 Subject: [PATCH 15/16] work around tar file changed as we read it warnings --- run_tar_exports.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/run_tar_exports.sh b/run_tar_exports.sh index 4e91165..a7ff3a2 100755 --- a/run_tar_exports.sh +++ b/run_tar_exports.sh @@ -26,8 +26,11 @@ if [ -n "${1}" ]; then fi # ensure any prior created $TAR_FILENAME is removed -rm -f ${PWD}/exports/${TAR_FILENAME} ${PWD}/exports/exports.tar.gz +rm -f "${PWD}/exports/${TAR_FILENAME}" "${PWD}/exports/exports.tar.gz" + +# touch $TAR_FILENAME to avoid "tar file changed as we read it" warning +touch "${PWD}/exports/${TAR_FILENAME}" echo "Terraform validated. Creating tar archive of exported Datadog Terraform files..." # tar the exports/ directory -docker run --rm -v ${PWD}/exports:/app/exports -w /app/exports debian:stable tar -C /app/exports --exclude=./.* -czvf "./${TAR_FILENAME}" . +docker run --rm -v ${PWD}/exports:/app/exports -w /app/exports debian:stable tar -C /app/exports --exclude="${TAR_FILENAME}" --exclude=./.* -czvf "./${TAR_FILENAME}" . From 384a6477e40f6fa4d604db0f5e5379e974cb8dcc Mon Sep 17 00:00:00 2001 From: James Tooze Date: Mon, 17 Feb 2020 12:30:38 -0800 Subject: [PATCH 16/16] fix some error handling cases --- run_dd2tf.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run_dd2tf.sh b/run_dd2tf.sh index 2086dd7..d70e51c 100755 --- a/run_dd2tf.sh +++ b/run_dd2tf.sh @@ -30,8 +30,8 @@ echo "Starting export of Datadog files to Terraform configs..." docker run --rm -e DATADOG_API_KEY=$DATADOG_API_KEY -e DATADOG_APP_KEY=$DATADOG_APP_KEY -v ${PWD}/exports:/app/exports toozej/dd2tf:latest $@ # if exports is empty, exit 3 -if [ ! "$(ls -A ${PWD}/exports)" ]; then - echo -e "${PWD}/exports/ directory is empty, this means the dd2tf export failed. Check log messages above.\n" +if [ ! "$(ls ${PWD}/exports/*.tf)" ]; then + echo -e "${PWD}/exports/ directory doesn't contain any .tf files. This means the dd2tf export failed. Check log messages above.\n" exit 3 fi