|
|
|
@ -28,7 +28,7 @@ fetch_db_credentials() {
|
|
|
|
echo "ERROR: DB_SECRETS_NAME environment variable is not set"
|
|
|
|
echo "ERROR: DB_SECRETS_NAME environment variable is not set"
|
|
|
|
exit 1
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Fetch the secret
|
|
|
|
# Fetch the secret
|
|
|
|
echo "Retrieving secret: $DB_SECRETS_NAME"
|
|
|
|
echo "Retrieving secret: $DB_SECRETS_NAME"
|
|
|
|
SECRET_JSON=$(aws secretsmanager get-secret-value \
|
|
|
|
SECRET_JSON=$(aws secretsmanager get-secret-value \
|
|
|
|
@ -36,12 +36,12 @@ fetch_db_credentials() {
|
|
|
|
--secret-id "$DB_SECRETS_NAME" \
|
|
|
|
--secret-id "$DB_SECRETS_NAME" \
|
|
|
|
--query SecretString \
|
|
|
|
--query SecretString \
|
|
|
|
--output text)
|
|
|
|
--output text)
|
|
|
|
|
|
|
|
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
echo "ERROR: Failed to retrieve secrets from AWS Secrets Manager"
|
|
|
|
echo "ERROR: Failed to retrieve secrets from AWS Secrets Manager"
|
|
|
|
exit 1
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Parse JSON and export environment variables
|
|
|
|
# Parse JSON and export environment variables
|
|
|
|
export DB_USERNAME=$(echo "$SECRET_JSON" | jq -r '.username')
|
|
|
|
export DB_USERNAME=$(echo "$SECRET_JSON" | jq -r '.username')
|
|
|
|
export DB_PASSWORD=$(echo "$SECRET_JSON" | jq -r '.password')
|
|
|
|
export DB_PASSWORD=$(echo "$SECRET_JSON" | jq -r '.password')
|
|
|
|
@ -52,10 +52,10 @@ fetch_db_credentials() {
|
|
|
|
echo "Expected JSON format: {\"username\": \"...\", \"password\": \"...\"}"
|
|
|
|
echo "Expected JSON format: {\"username\": \"...\", \"password\": \"...\"}"
|
|
|
|
exit 1
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Write credentials to .env.production file
|
|
|
|
# Write credentials to .env.production file
|
|
|
|
echo "Writing database credentials to .env.production..."
|
|
|
|
echo "Writing database credentials to .env.production..."
|
|
|
|
|
|
|
|
|
|
|
|
# Remove existing DB_USERNAME and DB_PASSWORD lines if they exist
|
|
|
|
# Remove existing DB_USERNAME and DB_PASSWORD lines if they exist
|
|
|
|
if [ -f "./.env.production" ]; then
|
|
|
|
if [ -f "./.env.production" ]; then
|
|
|
|
echo "Removing existing DB_USERNAME and DB_PASSWORD from .env.production"
|
|
|
|
echo "Removing existing DB_USERNAME and DB_PASSWORD from .env.production"
|
|
|
|
@ -63,7 +63,7 @@ fetch_db_credentials() {
|
|
|
|
grep -v "^DB_PASSWORD=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
grep -v "^DB_PASSWORD=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
rm -f ./.env.production.tmp
|
|
|
|
rm -f ./.env.production.tmp
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Append the new credentials
|
|
|
|
# Append the new credentials
|
|
|
|
echo "DB_USERNAME=$DB_USERNAME" >> ./.env.production
|
|
|
|
echo "DB_USERNAME=$DB_USERNAME" >> ./.env.production
|
|
|
|
echo "DB_PASSWORD=$DB_PASSWORD" >> ./.env.production
|
|
|
|
echo "DB_PASSWORD=$DB_PASSWORD" >> ./.env.production
|
|
|
|
@ -146,7 +146,7 @@ fetch_env_variables() {
|
|
|
|
echo "ERROR: CP_VARIABLES_NAME environment variable is not set"
|
|
|
|
echo "ERROR: CP_VARIABLES_NAME environment variable is not set"
|
|
|
|
exit 1
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Fetch the secret
|
|
|
|
# Fetch the secret
|
|
|
|
echo "Retrieving secret: $CP_VARIABLES_NAME"
|
|
|
|
echo "Retrieving secret: $CP_VARIABLES_NAME"
|
|
|
|
SECRET_JSON=$(aws secretsmanager get-secret-value \
|
|
|
|
SECRET_JSON=$(aws secretsmanager get-secret-value \
|
|
|
|
@ -154,7 +154,7 @@ fetch_env_variables() {
|
|
|
|
--secret-id "$CP_VARIABLES_NAME" \
|
|
|
|
--secret-id "$CP_VARIABLES_NAME" \
|
|
|
|
--query SecretString \
|
|
|
|
--query SecretString \
|
|
|
|
--output text)
|
|
|
|
--output text)
|
|
|
|
|
|
|
|
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
echo "ERROR: Failed to retrieve secrets from AWS Secrets Manager"
|
|
|
|
echo "ERROR: Failed to retrieve secrets from AWS Secrets Manager"
|
|
|
|
exit 1
|
|
|
|
exit 1
|
|
|
|
@ -168,6 +168,7 @@ fetch_env_variables() {
|
|
|
|
export NEWRELIC_LICENSE_KEY=$(echo "$SECRET_JSON" | jq -r '.newrelic_license_key')
|
|
|
|
export NEWRELIC_LICENSE_KEY=$(echo "$SECRET_JSON" | jq -r '.newrelic_license_key')
|
|
|
|
export NEWRELIC_APP_NAME=$(echo "$SECRET_JSON" | jq -r '.newrelic_app_name')
|
|
|
|
export NEWRELIC_APP_NAME=$(echo "$SECRET_JSON" | jq -r '.newrelic_app_name')
|
|
|
|
export NEWRELIC_MONITOR_MODE=$(echo "$SECRET_JSON" | jq -r '.newrelic_monitor_mode')
|
|
|
|
export NEWRELIC_MONITOR_MODE=$(echo "$SECRET_JSON" | jq -r '.newrelic_monitor_mode')
|
|
|
|
|
|
|
|
export ENCRYPTION_SECRET=$(echo "$SECRET_JSON" | jq -r '.ENCRYPTION_SECRET // empty')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Validate that we got the values
|
|
|
|
# Validate that we got the values
|
|
|
|
@ -176,7 +177,13 @@ fetch_env_variables() {
|
|
|
|
echo "Expected JSON format: {\"key\": \"...\", ...}"
|
|
|
|
echo "Expected JSON format: {\"key\": \"...\", ...}"
|
|
|
|
exit 1
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Warn if encryption secret is missing (important for ActiveRecord encryption)
|
|
|
|
|
|
|
|
if [ -z "$ENCRYPTION_SECRET" ]; then
|
|
|
|
|
|
|
|
echo "WARNING: ENCRYPTION_SECRET not found in secrets"
|
|
|
|
|
|
|
|
echo "WARNING: ActiveRecord encryption may not work correctly"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Write variables to .env.production file
|
|
|
|
# Write variables to .env.production file
|
|
|
|
echo "Writing environment variables to .env.production..."
|
|
|
|
echo "Writing environment variables to .env.production..."
|
|
|
|
|
|
|
|
|
|
|
|
@ -191,9 +198,10 @@ fetch_env_variables() {
|
|
|
|
grep -v "^NEWRELIC_LICENSE_KEY=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
grep -v "^NEWRELIC_LICENSE_KEY=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
grep -v "^NEWRELIC_APP_NAME=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
grep -v "^NEWRELIC_APP_NAME=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
grep -v "^NEWRELIC_MONITOR_MODE=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
grep -v "^NEWRELIC_MONITOR_MODE=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
|
|
|
|
grep -v "^ENCRYPTION_SECRET=" ./.env.production.tmp > ./.env.production || true
|
|
|
|
rm -f ./.env.production.tmp
|
|
|
|
rm -f ./.env.production.tmp
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Append the new credentials
|
|
|
|
# Append the new credentials
|
|
|
|
echo "DB_HOST=$DB_HOST" >> ./.env.production
|
|
|
|
echo "DB_HOST=$DB_HOST" >> ./.env.production
|
|
|
|
echo "REDIS_URL=$REDIS_URL" >> ./.env.production
|
|
|
|
echo "REDIS_URL=$REDIS_URL" >> ./.env.production
|
|
|
|
@ -204,6 +212,12 @@ fetch_env_variables() {
|
|
|
|
echo "NEWRELIC_APP_NAME=$NEWRELIC_APP_NAME" >> ./.env.production
|
|
|
|
echo "NEWRELIC_APP_NAME=$NEWRELIC_APP_NAME" >> ./.env.production
|
|
|
|
echo "NEWRELIC_MONITOR_MODE=$NEWRELIC_MONITOR_MODE" >> ./.env.production
|
|
|
|
echo "NEWRELIC_MONITOR_MODE=$NEWRELIC_MONITOR_MODE" >> ./.env.production
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Add encryption secret if it exists
|
|
|
|
|
|
|
|
if [ -n "$ENCRYPTION_SECRET" ]; then
|
|
|
|
|
|
|
|
echo "ENCRYPTION_SECRET=$ENCRYPTION_SECRET" >> ./.env.production
|
|
|
|
|
|
|
|
echo "✓ ENCRYPTION_SECRET written to .env.production"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
echo "✓ Environment variables successfully retrieved and written to .env.production"
|
|
|
|
echo "✓ Environment variables successfully retrieved and written to .env.production"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -236,13 +250,13 @@ main() {
|
|
|
|
set_environment
|
|
|
|
set_environment
|
|
|
|
|
|
|
|
|
|
|
|
check_aws_setup
|
|
|
|
check_aws_setup
|
|
|
|
|
|
|
|
|
|
|
|
echo "Starting CP Docuseal in production mode..."
|
|
|
|
echo "Starting CP Docuseal in production mode..."
|
|
|
|
echo "Rails Environment: ${RAILS_ENV:-production}"
|
|
|
|
echo "Rails Environment: ${RAILS_ENV:-production}"
|
|
|
|
|
|
|
|
|
|
|
|
# Fetch database credentials from Secrets Manager
|
|
|
|
# Fetch database credentials from Secrets Manager
|
|
|
|
fetch_db_credentials
|
|
|
|
fetch_db_credentials
|
|
|
|
|
|
|
|
|
|
|
|
# Fetch encryption key and write to config/master.key
|
|
|
|
# Fetch encryption key and write to config/master.key
|
|
|
|
fetch_encryption_key
|
|
|
|
fetch_encryption_key
|
|
|
|
|
|
|
|
|
|
|
|
@ -254,7 +268,7 @@ main() {
|
|
|
|
|
|
|
|
|
|
|
|
# Load updated environment variables
|
|
|
|
# Load updated environment variables
|
|
|
|
set_environment
|
|
|
|
set_environment
|
|
|
|
|
|
|
|
|
|
|
|
# Setup and migrate database
|
|
|
|
# Setup and migrate database
|
|
|
|
setup_database
|
|
|
|
setup_database
|
|
|
|
|
|
|
|
|
|
|
|
@ -275,4 +289,4 @@ main() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# Execute main function with all arguments
|
|
|
|
# Execute main function with all arguments
|
|
|
|
main "$@"
|
|
|
|
main "$@"
|
|
|
|
|