mirror of
https://github.com/jambonz/jambonz-infrastructure.git
synced 2026-07-24 19:51:47 +00:00
updates for prod
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user