diff --git a/crawlers/deploy/deploy.bash b/crawlers/deploy/deploy.bash index 1be6f629..93a87e9d 100755 --- a/crawlers/deploy/deploy.bash +++ b/crawlers/deploy/deploy.bash @@ -24,11 +24,7 @@ SECRETS_DIR="${SECRETS_DIR:-/home/ubuntu/moonstream-secrets}" PARAMETERS_ENV_PATH="${SECRETS_DIR}/app.env" AWS_SSM_PARAMETER_PATH="${AWS_SSM_PARAMETER_PATH:-/moonstream/prod}" SCRIPT_DIR="$(realpath $(dirname $0))" - -# Parameters scripts PARAMETERS_SCRIPT="${SCRIPT_DIR}/parameters.py" -CHECKENV_PARAMETERS_SCRIPT="${SCRIPT_DIR}/parameters.bash" -CHECKENV_NODES_CONNECTIONS_SCRIPT="${SCRIPT_DIR}/nodes-connections.bash" # Ethereum service files ETHEREUM_SYNCHRONIZE_SERVICE="ethereum-synchronize.service" @@ -75,13 +71,13 @@ AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" "${PYTHON}" "${PARAMETERS_SCRIPT}" ex echo echo -echo -e "${PREFIX_INFO} Retrieving addition deployment parameters" -bash "${CHECKENV_PARAMETERS_SCRIPT}" -v -p "moonstream" -o "${PARAMETERS_ENV_PATH}" +echo -e "${PREFIX_INFO} Install checkenv" +HOME=/root /usr/local/go/bin/go install github.com/bugout-dev/checkenv@latest echo echo -echo -e "${PREFIX_INFO} Updating nodes connection parameters" -bash "${CHECKENV_NODES_CONNECTIONS_SCRIPT}" -v -f "${PARAMETERS_ENV_PATH}" +echo -e "${PREFIX_INFO} Retrieving addition deployment parameters" +HOME=/root AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" $HOME/go/bin/checkenv show aws_ssm+Product:moonstream >> "${PARAMETERS_ENV_PATH}" echo echo diff --git a/crawlers/deploy/nodes-connections.bash b/crawlers/deploy/nodes-connections.bash deleted file mode 100755 index 3718b5c9..00000000 --- a/crawlers/deploy/nodes-connections.bash +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env bash -# -# Update nodes connection address environment variables -# from AWS Route53 internal hosted zone - -VERSION='0.0.1' - -# Colors -C_RESET='\033[0m' -C_RED='\033[1;31m' -C_GREEN='\033[1;32m' -C_YELLOW='\033[1;33m' - -# Logs -PREFIX_INFO="${C_GREEN}[INFO]${C_RESET} [$(date +%d-%m\ %T)]" -PREFIX_WARN="${C_YELLOW}[WARN]${C_RESET} [$(date +%d-%m\ %T)]" -PREFIX_CRIT="${C_RED}[CRIT]${C_RESET} [$(date +%d-%m\ %T)]" - -# Print help message -function usage { - echo "Usage: $0 [-h] -p PRODUCT -f FILEPATH" - echo - echo "CLI to update nodes connection address environment - variables from AWS Route53 internal hosted zone" - echo - echo "Optional arguments:" - echo " -h Show this help message and exit" - echo " -f File path where environment variables update at" -} - -file_flag="" -verbose_flag="false" - -while getopts 'f:v' flag; do - case "${flag}" in - f) file_flag="${OPTARG}" ;; - h) usage - exit 1 ;; - v) verbose_flag="true" ;; - *) usage - exit 1 ;; - esac -done - -# Log messages -function verbose { - if [ "${verbose_flag}" == "true" ]; then - echo -e "$1" - fi -} - -# File flag should be specified -if [ -z "${file_flag}" ]; then - verbose "${PREFIX_CRIT} Please specify file path" - usage - exit 1 -fi - -if [ ! -f "${file_flag}" ]; then - verbose "${PREFIX_CRIT} Provided file does not exist" - usage - exit 1 -fi - -verbose "${PREFIX_INFO} Script version: v${VERSION}" - -verbose "${PREFIX_INFO} Source environment variables" -. ${file_flag} - -verbose "${PREFIX_INFO} Retrieving Ethereum node address" -RETRIEVED_NODE_ETHEREUM_IPC_ADDR=$(aws route53 list-resource-record-sets --hosted-zone-id "${MOONSTREAM_INTERNAL_HOSTED_ZONE_ID}" --query "ResourceRecordSets[?Name == '${MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI}.'].ResourceRecords[].Value" | jq -r .[0]) -if [ "$RETRIEVED_NODE_ETHEREUM_IPC_ADDR" == "null" ]; then - verbose "${PREFIX_CRIT} Ethereum node internal DNS record address is null" - exit 1 -fi - -verbose "${PREFIX_INFO} Retrieving Polygon node address" -RETRIEVED_NODE_POLYGON_IPC_ADDR=$(aws route53 list-resource-record-sets --hosted-zone-id "${MOONSTREAM_INTERNAL_HOSTED_ZONE_ID}" --query "ResourceRecordSets[?Name == '${MOONSTREAM_POLYGON_WEB3_PROVIDER_URI}.'].ResourceRecords[].Value" | jq -r .[0]) -if [ "$RETRIEVED_NODE_POLYGON_IPC_ADDR" == "null" ]; then - verbose "${PREFIX_CRIT} Polygon node internal DNS record address is null" - exit 1 -fi - -# TODO(kompotkot): Modify regexp to work with export prefix -verbose "${PREFIX_INFO} Updating MOONSTREAM_NODE_ETHEREUM_IPC_ADDR with ${RETRIEVED_NODE_ETHEREUM_IPC_ADDR}" -sed -i "s|^MOONSTREAM_NODE_ETHEREUM_IPC_ADDR=.*|MOONSTREAM_NODE_ETHEREUM_IPC_ADDR=\"$RETRIEVED_NODE_ETHEREUM_IPC_ADDR\"|" ${file_flag} - -verbose "${PREFIX_INFO} Updating MOONSTREAM_NODE_POLYGON_IPC_ADDR with ${RETRIEVED_NODE_POLYGON_IPC_ADDR}" -sed -i "s|^MOONSTREAM_NODE_POLYGON_IPC_ADDR=.*|MOONSTREAM_NODE_POLYGON_IPC_ADDR=\"$RETRIEVED_NODE_POLYGON_IPC_ADDR\"|" ${file_flag} diff --git a/crawlers/deploy/parameters.bash b/crawlers/deploy/parameters.bash deleted file mode 100755 index dc401951..00000000 --- a/crawlers/deploy/parameters.bash +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env bash -# -# Collect secrets from AWS SSM Parameter Store and -# opt out as environment variable exports. - -VERSION='0.0.1' - -# Colors -C_RESET='\033[0m' -C_RED='\033[1;31m' -C_GREEN='\033[1;32m' -C_YELLOW='\033[1;33m' - -# Logs -PREFIX_INFO="${C_GREEN}[INFO]${C_RESET} [$(date +%d-%m\ %T)]" -PREFIX_WARN="${C_YELLOW}[WARN]${C_RESET} [$(date +%d-%m\ %T)]" -PREFIX_CRIT="${C_RED}[CRIT]${C_RESET} [$(date +%d-%m\ %T)]" - -# Print help message -function usage { - echo "Usage: $0 [-h] -p PRODUCT -o OUTPUT" - echo - echo "CLI to collect secrets from AWS SSM Parameter Store -and output as environment variable exports" - echo - echo "Optional arguments:" - echo " -h Show this help message and exit" - echo " -p Product tag (moonstream, spire, brood, drones)" - echo " -o Output file name environment variables export to" -} - -# TODO(kompotkot): Flag for export prefix -product_flag="" -output_flag="" -verbose_flag="false" - -while getopts 'p:o:v' flag; do - case "${flag}" in - p) product_flag="${OPTARG}" ;; - o) output_flag="${OPTARG}" ;; - h) usage - exit 1 ;; - v) verbose_flag="true" ;; - *) usage - exit 1 ;; - esac -done - -# Log messages -function verbose { - if [ "${verbose_flag}" == "true" ]; then - echo -e "$1" - fi -} - -# Product flag should be specified -# TODO(kompotkot): Extend script to work with few product at once -if [ -z "${product_flag}" ]; then - verbose "${PREFIX_CRIT} Please specify product tag" - usage - exit 1 -fi - -verbose "${PREFIX_INFO} Script version: v${VERSION}" - -verbose "${PREFIX_INFO} Retrieving deployment parameters with tag ${C_GREEN}Product:${product_flag}${C_RESET}" -ENV_PARAMETERS=$(aws ssm describe-parameters \ - --parameter-filters Key=tag:Product,Values=${product_flag} \ - | jq -r .Parameters[].Name) -if [ -z "${ENV_PARAMETERS}" ]; then - verbose "${PREFIX_CRIT} There no parameters for provided product tag" - exit 1 -fi - -verbose "${PREFIX_INFO} Retrieving parameters values" -ENV_PARAMETERS_VALUES=$(aws ssm get-parameters \ - --names ${ENV_PARAMETERS} \ - --query "Parameters[*].{Name:Name,Value:Value}") -ENV_PARAMETERS_VALUES_LENGTH=$(echo ${ENV_PARAMETERS_VALUES} | jq length) -verbose "${PREFIX_INFO} Extracted ${ENV_PARAMETERS_VALUES_LENGTH} parameters" -for i in $(seq 0 $((${ENV_PARAMETERS_VALUES_LENGTH} - 1))); do - param_key=$(echo ${ENV_PARAMETERS_VALUES} | jq -r .[$i].Name) - param_value=$(echo ${ENV_PARAMETERS_VALUES} | jq .[$i].Value) - if [ -z "${output_flag}" ]; then - echo "${param_key}=${param_value}" - else - echo "${param_key}=${param_value}" >> "${output_flag}" - fi -done