kopia lustrzana https://github.com/bugout-dev/moonstream
Retrieving ip from route53
rodzic
73b7392962
commit
915c51d830
|
@ -2,6 +2,17 @@
|
|||
|
||||
# Deployment script - intended to run on Moonstream servers
|
||||
|
||||
# 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)]"
|
||||
|
||||
# Main
|
||||
APP_DIR="${APP_DIR:-/home/ubuntu/moonstream}"
|
||||
APP_BACKEND_DIR="${APP_DIR}/backend"
|
||||
|
@ -20,23 +31,42 @@ set -eu
|
|||
|
||||
echo
|
||||
echo
|
||||
echo "Updating pip and setuptools"
|
||||
echo -e "${PREFIX_INFO} Updating pip and setuptools"
|
||||
"${PIP}" install -U pip setuptools
|
||||
|
||||
echo
|
||||
echo
|
||||
echo "Updating Python dependencies"
|
||||
echo -e "${PREFIX_INFO} Updating Python dependencies"
|
||||
"${PIP}" install -r "${APP_BACKEND_DIR}/requirements.txt"
|
||||
|
||||
echo
|
||||
echo
|
||||
echo "Retrieving deployment parameters"
|
||||
echo -e "${PREFIX_INFO} Retrieving deployment parameters"
|
||||
mkdir -p "${SECRETS_DIR}"
|
||||
AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" "${PYTHON}" "${PARAMETERS_SCRIPT}" "${AWS_SSM_PARAMETER_PATH}" -o "${PARAMETERS_ENV_PATH}"
|
||||
|
||||
echo
|
||||
echo
|
||||
echo "Replacing existing Moonstream service definition with ${SERVICE_FILE}"
|
||||
echo -e "${PREFIX_INFO} Retrieving addition deployment parameters"
|
||||
ENV_PARAMETERS=$(aws ssm describe-parameters \
|
||||
--parameter-filters Key=tag:Product,Values=moonstream \
|
||||
| jq -r .Parameters[].Name)
|
||||
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)
|
||||
echo -e "${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)
|
||||
echo "$param_key=$param_value" >> "${PARAMETERS_ENV_PATH}"
|
||||
done
|
||||
|
||||
|
||||
echo
|
||||
echo
|
||||
echo -e "${PREFIX_INFO} Replacing existing Moonstream service definition with ${SERVICE_FILE}"
|
||||
chmod 644 "${SERVICE_FILE}"
|
||||
cp "${SERVICE_FILE}" /etc/systemd/system/moonstream.service
|
||||
systemctl daemon-reload
|
||||
|
|
|
@ -47,8 +47,20 @@ if ETHERSCAN_SMARTCONTRACTS_BUCKET is None:
|
|||
raise ValueError("AWS_S3_SMARTCONTRACT_BUCKET is not set")
|
||||
|
||||
# Web3 provider
|
||||
MOONSTREAM_ETHEREUM_WEB3_PROVIDER = os.environ.get(
|
||||
"MOONSTREAM_ETHEREUM_WEB3_PROVIDER", ""
|
||||
MOONSTREAM_INTERNAL_HOSTED_ZONE_ID = os.environ.get(
|
||||
"MOONSTREAM_INTERNAL_HOSTED_ZONE_ID"
|
||||
)
|
||||
if MOONSTREAM_ETHEREUM_WEB3_PROVIDER == "":
|
||||
raise ValueError("MOONSTREAM_WEB3_PROVIDER environment variable must be set")
|
||||
if MOONSTREAM_INTERNAL_HOSTED_ZONE_ID is None:
|
||||
raise ValueError(
|
||||
"MOONSTREAM_INTERNAL_HOSTED_ZONE_ID environment variable must be set"
|
||||
)
|
||||
MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI = os.environ.get(
|
||||
"MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI"
|
||||
)
|
||||
if MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI is None:
|
||||
raise ValueError("MOONSTREAM_WEB3_PROVIDER_URI environment variable must be set")
|
||||
MOONSTREAM_NODE_ETHEREUM_IPC_PORT = os.environ.get("MOONSTREAM_NODE_ETHEREUM_IPC_PORT")
|
||||
if MOONSTREAM_NODE_ETHEREUM_IPC_PORT is None:
|
||||
raise ValueError(
|
||||
"MOONSTREAM_NODE_ETHEREUM_IPC_PORT environment variable must be set"
|
||||
)
|
||||
|
|
|
@ -1,7 +1,42 @@
|
|||
from web3 import Web3
|
||||
from .settings import MOONSTREAM_ETHEREUM_WEB3_PROVIDER
|
||||
import logging
|
||||
|
||||
moonstream_web3_provider = Web3(Web3.HTTPProvider(MOONSTREAM_ETHEREUM_WEB3_PROVIDER))
|
||||
import boto3 # type: ignore
|
||||
from web3 import Web3
|
||||
|
||||
from .settings import (
|
||||
MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI,
|
||||
MOONSTREAM_INTERNAL_HOSTED_ZONE_ID,
|
||||
MOONSTREAM_NODE_ETHEREUM_IPC_PORT
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def fetch_web3_provider_ip():
|
||||
r53 = boto3.client("route53")
|
||||
r53_response = r53.list_resource_record_sets(
|
||||
HostedZoneId=MOONSTREAM_INTERNAL_HOSTED_ZONE_ID,
|
||||
StartRecordName=f"{MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI}.",
|
||||
StartRecordType="A",
|
||||
)
|
||||
try:
|
||||
r53_records = r53_response["ResourceRecordSets"]
|
||||
if r53_records[0]["Name"] != f"{MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI}.":
|
||||
return None
|
||||
|
||||
record_value = r53_records[0]["ResourceRecords"][0]["Value"]
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
return None
|
||||
|
||||
return record_value
|
||||
|
||||
|
||||
if not MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI.replace(".","").isnumeric():
|
||||
web3_provider_ip = fetch_web3_provider_ip()
|
||||
if web3_provider_ip is None:
|
||||
raise ValueError("Unable to extract web3 provider IP")
|
||||
moonstream_web3_provider = Web3(Web3.HTTPProvider(f"http://{web3_provider_ip}:{MOONSTREAM_NODE_ETHEREUM_IPC_PORT}"))
|
||||
|
||||
|
||||
def yield_web3_provider() -> Web3:
|
||||
|
|
|
@ -4,7 +4,8 @@ export MOONSTREAM_DATA_JOURNAL_ID="<bugout_journal_id_to_store_blockchain_data>"
|
|||
export MOONSTREAM_DB_URI="postgresql://<username>:<password>@<db_host>:<db_port>/<db_name>"
|
||||
export MOONSTREAM_POOL_SIZE=0
|
||||
export MOONSTREAM_ADMIN_ACCESS_TOKEN="<Access token to application resources>"
|
||||
export MOONSTREAM_ETHEREUM_WEB3_PROVIDER="<Connection path to ethereum node>"
|
||||
export MOONSTREAM_INTERNAL_HOSTED_ZONE_ID="<moonstream_hosted_zone_id>"
|
||||
export MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI="<connection_path_uri_to_ethereum_node>"
|
||||
export AWS_S3_SMARTCONTRACT_BUCKET="<AWS S3 bucket to store smart contracts>"
|
||||
export BUGOUT_BROOD_URL="https://auth.bugout.dev"
|
||||
export BUGOUT_SPIRE_URL="https://spire.bugout.dev"
|
||||
|
|
Ładowanie…
Reference in New Issue