From 13e0b4fc53d8d440445e04681d702fa4ed41a94e Mon Sep 17 00:00:00 2001 From: Dave Horton Date: Tue, 2 Jun 2020 21:25:53 -0400 Subject: [PATCH] updates for prod --- terraform/jambonz-devtest/feature-server.tf | 6 +-- .../feature-server.ecosystem.config.js.tmpl | 35 ++++++++++++++- terraform/jambonz-prod/feature-server.tf | 3 ++ .../sbc-rtp-server.ecosystem.config.js.tmpl | 19 ++++++++ .../sbc-sip-server.ecosystem.config.js.tmpl | 45 +++++++++++++++---- terraform/jambonz-prod/sbc.tf | 9 ++++ terraform/jambonz-prod/variables.tf | 14 +++++- 7 files changed, 117 insertions(+), 14 deletions(-) create mode 100644 terraform/jambonz-prod/sbc-rtp-server.ecosystem.config.js.tmpl diff --git a/terraform/jambonz-devtest/feature-server.tf b/terraform/jambonz-devtest/feature-server.tf index 899fac2..8e02495 100644 --- a/terraform/jambonz-devtest/feature-server.tf +++ b/terraform/jambonz-devtest/feature-server.tf @@ -71,9 +71,9 @@ resource "aws_launch_configuration" "jambonz-feature-server" { AWS_SECRET_ACCESS_KEY = var.aws_secret_access_key_runtime AWS_REGION = var.region AWS_SNS_TOPIC_ARN = aws_sns_topic.jambonz_sns_topic.arn - GCP_CREDENTIALS = file("${path.module}/credentials/gcp.json"), - DATADOG_API_KEY = var.datadog_api_key, - DATADOG_SITE = var.datadog_site, + GCP_CREDENTIALS = file("${path.module}/credentials/gcp.json") + DATADOG_API_KEY = var.datadog_api_key + DATADOG_SITE = var.datadog_site DATADOG_ENV_NAME = var.datadog_env_name }) diff --git a/terraform/jambonz-prod/feature-server.ecosystem.config.js.tmpl b/terraform/jambonz-prod/feature-server.ecosystem.config.js.tmpl index 3c35f61..04ce7e2 100644 --- a/terraform/jambonz-prod/feature-server.ecosystem.config.js.tmpl +++ b/terraform/jambonz-prod/feature-server.ecosystem.config.js.tmpl @@ -1,4 +1,13 @@ #!/bin/bash +ENABLE_DATADOG_METRICS=0 +if [ "${DATADOG_API_KEY}" ] ; then + ENABLE_DATADOG_METRICS=1 +fi + +echo "running jambonz user data script" + +echo "writing /home/admin/apps/ecosystem.config.js.." + cat << EOF > /home/admin/apps/ecosystem.config.js module.exports = { apps : [ @@ -21,7 +30,7 @@ module.exports = { AWS_SECRET_ACCESS_KEY: '${AWS_SECRET_ACCESS_KEY}', AWS_REGION: '${AWS_REGION}', AWS_SNS_TOPIC_ARM: '${AWS_SNS_TOPIC_ARN}', - ENABLE_DATADOG_METRICS: 0, + ENABLE_DATADOG_METRICS: $ENABLE_DATADOG_METRICS, JAMBONES_NETWORK_CIDR: '${VPC_CIDR}', JAMBONES_MYSQL_HOST: '${JAMBONES_MYSQL_HOST}', JAMBONES_MYSQL_USER: '${JAMBONES_MYSQL_USER}', @@ -46,3 +55,27 @@ cat << EOF > /home/admin/credentials/gcp.json ${GCP_CREDENTIALS} EOF +echo "finished writing config file" + +sudo -u admin bash -c "pm2 delete /home/admin/apps/ecosystem.config.js" +sudo -u admin bash -c "pm2 start /home/admin/apps/ecosystem.config.js" + +# install datadog if a datadog api key was provided +if [ "${DATADOG_API_KEY}" ] ; then + echo "installing datadog.." + + sed -i -e 's@^api_key:.*@'"api_key: ${DATADOG_API_KEY}"'@g' /etc/datadog-agent/datadog.yaml + sed -i -e 's@^# site:.*@'"site: ${DATADOG_SITE}"'@g' /etc/datadog-agent/datadog.yaml + sed -i -e 's@^# log_level:.*@log_level: warning@g' /etc/datadog-agent/datadog.yaml + + tee -a /etc/datadog-agent/datadog.yaml > /dev/null < /dev/null < /home/admin/apps/jambonz-webapp/.env.local cd /home/admin/apps/jambonz-webapp/ -sudo -u admin bash -c "npm run build" +npm run build +echo "writing /home/admin/apps/ecosystem.config.js.." cat << EOF > /home/admin/apps/ecosystem.config.js module.exports = { apps : [ @@ -70,7 +80,7 @@ module.exports = { max_memory_restart: '1G', env: { NODE_ENV: 'production', - ENABLE_DATADOG_METRICS: 0, + ENABLE_DATADOG_METRICS: $ENABLE_DATADOG_METRICS, JAMBONES_LOGLEVEL: 'info', DRACHTIO_HOST: '127.0.0.1', DRACHTIO_PORT: 9022, @@ -99,7 +109,7 @@ module.exports = { env: { NODE_ENV: 'production', JAMBONES_LOGLEVEL: 'info', - ENABLE_DATADOG_METRICS: 0, + ENABLE_DATADOG_METRICS: $ENABLE_DATADOG_METRICS, DRACHTIO_HOST: '127.0.0.1', DRACHTIO_PORT: 9022, DRACHTIO_SECRET: 'cymru', @@ -129,7 +139,7 @@ module.exports = { env: { NODE_ENV: 'production', JAMBONES_LOGLEVEL: 'info', - ENABLE_DATADOG_METRICS: 0, + ENABLE_DATADOG_METRICS: $ENABLE_DATADOG_METRICS, DRACHTIO_HOST: '127.0.0.1', DRACHTIO_PORT: 9022, DRACHTIO_SECRET: 'cymru', @@ -154,12 +164,29 @@ module.exports = { }; EOF -# create admin account -JAMBONES_MYSQL_HOST=${JAMBONES_MYSQL_HOST} \ -JAMBONES_MYSQL_USER=${JAMBONES_MYSQL_USER} \ -JAMBONES_MYSQL_PASSWORD=${JAMBONES_MYSQL_PASSWORD} \ -JAMBONES_MYSQL_DATABASE=jambones /home/admin/apps/jambonz-api-server/db/reset_admin_password.js +echo "finished writing config file" # restart everything because we've updated the ecosystem file sudo -u admin bash -c "pm2 delete /home/admin/apps/ecosystem.config.js" sudo -u admin bash -c "pm2 start /home/admin/apps/ecosystem.config.js" + +# install datadog if a datadog api key was provided +if [ "${DATADOG_API_KEY}" ] ; then + echo "installing datadog.." + + sed -i -e 's@^api_key:.*@'"api_key: ${DATADOG_API_KEY}"'@g' /etc/datadog-agent/datadog.yaml + sed -i -e 's@^# site:.*@'"site: ${DATADOG_SITE}"'@g' /etc/datadog-agent/datadog.yaml + sed -i -e 's@^# log_level:.*@log_level: warning@g' /etc/datadog-agent/datadog.yaml + + tee -a /etc/datadog-agent/datadog.yaml > /dev/null <