updates for prod

This commit is contained in:
Dave Horton
2020-06-02 21:25:53 -04:00
parent c497a9bfbe
commit 13e0b4fc53
7 changed files with 117 additions and 14 deletions
+3 -3
View File
@@ -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
})
@@ -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 <<EOT
tags:
env_name:${DATADOG_ENV_NAME}
role:fs
EOT
systemctl enable datadog-agent
systemctl start datadog-agent
fi
echo "user data script completed"
+3
View File
@@ -72,6 +72,9 @@ resource "aws_launch_configuration" "jambonz-feature-server" {
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
DATADOG_ENV_NAME = var.datadog_env_name
})
lifecycle {
@@ -0,0 +1,19 @@
#!/bin/bash
ENABLE_DATADOG_METRICS=0
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 <<EOT
tags:
env_name:${DATADOG_ENV_NAME}
role:rtp
EOT
systemctl enable datadog-agent
systemctl start datadog-agent
fi
@@ -1,9 +1,19 @@
#!/bin/bash
PUBLIC_IP=`curl -s http://169.254.169.254/latest/meta-data/public-ipv4`
ENABLE_DATADOG_METRICS=0
if [ "${DATADOG_API_KEY}" ] ; then
ENABLE_DATADOG_METRICS=1
fi
echo "running jambonz user data script"
# jambonz webapp
echo "building webapp.."
echo "REACT_APP_API_BASE_URL=http://$PUBLIC_IP:3000/v1" > /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 <<EOT
tags:
env_name:${DATADOG_ENV_NAME}
role:sbc
EOT
systemctl enable datadog-agent
systemctl start datadog-agent
fi
echo "user data script completed"
+9
View File
@@ -28,6 +28,9 @@ resource "aws_instance" "jambonz-sbc-sip-server" {
JAMBONES_REDIS_HOST = aws_elasticache_cluster.jambonz.cache_nodes.0.address
MS_TEAMS_FQDN = var.ms_teams_fqdn
JAMBONES_CLUSTER_ID = var.cluster_id
DATADOG_API_KEY = var.datadog_api_key,
DATADOG_SITE = var.datadog_site,
DATADOG_ENV_NAME = var.datadog_env_name
})
key_name = var.key_name
monitoring = true
@@ -61,6 +64,11 @@ resource "aws_instance" "jambonz-sbc-rtp-server" {
vpc_security_group_ids = [aws_security_group.allow_jambonz_sbc_rtp.id]
key_name = var.key_name
monitoring = true
user_data = templatefile("${path.module}/sbc-rtp-server.ecosystem.config.js.tmpl", {
DATADOG_API_KEY = var.datadog_api_key,
DATADOG_SITE = var.datadog_site,
DATADOG_ENV_NAME = var.datadog_env_name
})
depends_on = [aws_internet_gateway.jambonz]
@@ -86,6 +94,7 @@ resource "null_resource" "seed" {
"mysql -h ${aws_rds_cluster.jambonz.endpoint} -u admin -D jambones -pJambonzR0ck$ < /home/admin/apps/jambonz-api-server/db/jambones-sql.sql",
"mysql -h ${aws_rds_cluster.jambonz.endpoint} -u admin -D jambones -pJambonzR0ck$ < /home/admin/apps/jambonz-api-server/db/create-admin-token.sql",
"mysql -h ${aws_rds_cluster.jambonz.endpoint} -u admin -D jambones -pJambonzR0ck$ < /home/admin/apps/jambonz-api-server/db/create-default-account.sql"
"JAMBONES_MYSQL_HOST=${aws_rds_cluster.jambonz.endpoint} JAMBONES_MYSQL_USER=admin JAMBONES_MYSQL_PASSWORD=JambonzR0ck$ JAMBONES_MYSQL_DATABASE=jambones /home/admin/apps/jambonz-api-server/db/reset_admin_password.js"
]
}
+13 -1
View File
@@ -56,4 +56,16 @@ variable "ms_teams_fqdn" {
variable "cluster_id" {
description = "short cluster identifier"
default = "jb"
}
}
variable "datadog_api_key" {
description = "datadog api key - only supply if you wish to install datadog monitoring"
default = ""
}
variable "datadog_site" {
description = "datadog site"
default = "datadoghq.com"
}
variable "datadog_env_name" {
description = "environment identifier"
default = "prod"
}