MON-494 global refactor and format output

This commit is contained in:
Quentin Manfroi 2019-08-12 21:38:26 +02:00
parent 8f34a19d26
commit f91ad224ec
8 changed files with 38 additions and 17 deletions

View File

@ -2,6 +2,7 @@
source "$(dirname $0)/utils.sh" source "$(dirname $0)/utils.sh"
init init
echo "Check requirements"
function check_command() { function check_command() {
local cmd="$1" local cmd="$1"
@ -44,6 +45,7 @@ function check_version() {
} }
for cmd in terraform terraform-docs; do for cmd in terraform terraform-docs; do
echo -e "\t- Check command \"$cmd\" exists and in right version"
check_command $cmd check_command $cmd
check_version $cmd check_version $cmd
done done

View File

@ -2,18 +2,21 @@
source "$(dirname $0)/utils.sh" source "$(dirname $0)/utils.sh"
init init
echo "Generate terraform outputs.tf files for every monitors modules"
# loop over every monitors set # loop over every monitors set
for path in $(find "$(get_scope ${1:-})" -name 'monitors-*.tf' -print | sort -fdbi); do for path in $(browse_modules "$(get_scope ${1:-})" 'monitors-*.tf'); do
cd $(dirname $path) module=$(dirname ${path})
echo -e "\t- Generate outputs.tf for module: ${module}"
cd ${module}
# empty outputs # empty outputs
> outputs.tf > outputs.tf
# loop over monitors for each set # loop over monitors for each set
for monitor in $(grep 'resource "datadog_monitor"' $(basename $path) | awk '{print $3}' | tr -d '"' ); do for monitor in $(grep 'resource "datadog_monitor"' $(basename ${path}) | awk '{print $3}' | tr -d '"' ); do
# create output block for current monitor # create output block for current monitor
cat >> outputs.tf <<EOF cat >> outputs.tf <<EOF
output "${monitor}_id" { output "${monitor}_id" {
description = "id for monitor $monitor" description = "id for monitor ${monitor}"
value = datadog_monitor.${monitor}.*.id value = datadog_monitor.${monitor}.*.id
} }

View File

@ -2,6 +2,7 @@
source "$(dirname $0)/utils.sh" source "$(dirname $0)/utils.sh"
init init
echo "Update global README.md"
# only keep current README from begining to "Monitors summary" section (delete monitors list) # only keep current README from begining to "Monitors summary" section (delete monitors list)
sed -i '/### Monitors summary ###/q' README.md sed -i '/### Monitors summary ###/q' README.md

View File

@ -2,6 +2,7 @@
source "$(dirname $0)/utils.sh" source "$(dirname $0)/utils.sh"
init init
echo "Update README.md for every monitors modules"
# download awk script to hack terraform-docs # download awk script to hack terraform-docs
TERRAFORM_AWK="/tmp/terraform-docs.awk" TERRAFORM_AWK="/tmp/terraform-docs.awk"
@ -10,8 +11,10 @@ curl -Lso ${TERRAFORM_AWK} "https://raw.githubusercontent.com/cloudposse/build-h
PATTERN_DOC="Related documentation" PATTERN_DOC="Related documentation"
# loop over every monitors set readme # loop over every monitors set readme
for path in $(find "$(get_scope ${1:-})" -name 'monitors-*.tf' -print | sort -fdbi); do for path in $(browse_modules "$(get_scope ${1:-})" 'monitors-*.tf'); do
cd $(dirname $path) module=$(dirname $path)
echo -e "\t- Generate outputs.tf for module: ${module}"
cd ${module}
EXIST=0 EXIST=0
if [ -f README.md ]; then if [ -f README.md ]; then
mv README.md README.md.bak mv README.md README.md.bak

View File

@ -2,15 +2,18 @@
source "$(dirname $0)/utils.sh" source "$(dirname $0)/utils.sh"
init init
echo "Generate outputs.tf files when does not exist for every monitors modules"
root=$(basename ${PWD}) root=$(basename ${PWD})
# loop over every monitors set # loop over every monitors set
for path in $(find "$(get_scope ${1:-})" -name 'monitors-*.tf' -print | sort -fdbi); do for path in $(browse_modules "$(get_scope ${1:-})" 'monitors-*.tf'); do
cd $(dirname $path) module=$(dirname ${path})
cd ${module}
# get name of the monitors set directory # get name of the monitors set directory
resource="$(basename $(dirname $path))" resource="$(basename $(dirname $path))"
# if modules.tf does not exist AND if this set respect our tagging convention # if modules.tf does not exist AND if this set respect our tagging convention
if ! [ -f modules.tf ] && grep -q filter_tags_use_defaults inputs.tf; then if ! [ -f modules.tf ] && grep -q filter_tags_use_defaults inputs.tf; then
echo -e "\t- Generate modules.tf for module: ${module}"
relative="" relative=""
current="${PWD}" current="${PWD}"
# iterate on path until we go back to root # iterate on path until we go back to root

View File

@ -2,9 +2,11 @@
source "$(dirname $0)/utils.sh" source "$(dirname $0)/utils.sh"
init init
echo "Check best practices respect"
echo -e "\t- Check only one notify_no_data set to true per module"
# loop over every monitors set # loop over every monitors set
for path in $(find "$(get_scope ${1:-})" -name 'monitors-*.tf' -print | sort -fdbi); do for path in $(browse_modules "$(get_scope ${1:-})" 'monitors-*.tf'); do
# check if there is more than 1 notify_no_data parameter set to true per set of monitors # check if there is more than 1 notify_no_data parameter set to true per set of monitors
if [[ $(grep -c notify_no_data.*true $path) -gt 1 ]]; then if [[ $(grep -c notify_no_data.*true $path) -gt 1 ]]; then
echo "More than one notify_no_data set to true on $path" echo "More than one notify_no_data set to true on $path"

View File

@ -2,12 +2,14 @@
source "$(dirname $0)/utils.sh" source "$(dirname $0)/utils.sh"
init init
echo "Check terraform CI"
provider_version=$(grep ^[[:space:]]*version[[:space:]]= README.md | awk '{print $3}') provider_version=$(grep ^[[:space:]]*version[[:space:]]= README.md | awk '{print $3}')
for path in $(find "$(get_scope ${1:-})" -name 'inputs.tf' -print); do for path in $(browse_modules "$(get_scope ${1:-})" 'inputs.tf'); do
dir=$(dirname ${path}) module=$(dirname $path)
cat <<EOF > ${dir}/tmp.tf echo -e "\t- Terraform validate on module: ${module}"
cat <<EOF > ${module}/tmp.tf
provider "datadog" { provider "datadog" {
version = $provider_version version = $provider_version
@ -26,13 +28,14 @@ variable "datadog_app_key" {
} }
EOF EOF
if [ -f ${dir}/test.tf.ci ]; then if [ -f ${module}/test.tf.ci ]; then
cat ${dir}/test.tf.ci >> ${dir}/tmp.tf cat ${module}/test.tf.ci >> ${module}/tmp.tf
fi fi
terraform init ${dir} terraform init ${module} > /tmp/null
terraform validate ${dir} terraform validate ${module}
rm -f ${dir}/tmp.tf rm -f ${module}/tmp.tf
done done
echo -e "\t- Terraform fmt recursive"
terraform fmt -recursive terraform fmt -recursive

View File

@ -51,3 +51,7 @@ function get_name() {
echo $name echo $name
return 0 return 0
} }
function browse_modules() {
find "$1" -name "$2" -print | sort -fdbi
}