From e68876172c43804dfe9760c10a0e0e5777dacafa Mon Sep 17 00:00:00 2001 From: Yan Kasabutski Date: Tue, 13 May 2025 06:45:10 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20sk1/prepare-app.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sk1/prepare-app.sh | 53 +++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/sk1/prepare-app.sh b/sk1/prepare-app.sh index 5b93c16..85b4342 100644 --- a/sk1/prepare-app.sh +++ b/sk1/prepare-app.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Скрипт для подготовки и развертывания приложения Brabus в Azure Cloud +# Скрипт для подготовки и развертывания приложения # Цвета для вывода GREEN='\033[0;32m' @@ -10,48 +10,48 @@ NC='\033[0m' # No Color # Проверяем, установлен ли Azure CLI if ! command -v az &> /dev/null; then - echo -e "${RED}Azure CLI not isnstalled. install please first.${NC}" - echo "instr: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli" + echo -e "${RED}Azure CLI is not installed. Please install it before running the script.${NC}" + echo "Instr: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli" exit 1 fi # Проверяем, авторизован ли пользователь в Azure -echo -e "${YELLOW}Azure authorization check...${NC}" +echo -e "${YELLOW}Checking authorization in Azure...${NC}" az account show > /dev/null 2>&1 if [ $? -ne 0 ]; then - echo -e "${YELLOW}you need authorization in Azure. Log in process start...${NC}" + echo -e "${YELLOW}Azure authorization required. Starting the sign-in process..${NC}" az login if [ $? -ne 0 ]; then - echo -e "${RED}authorization error Azure. exit.${NC}" + echo -e "${RED}Azure Authorization Error. Exit.${NC}" exit 1 fi fi # Загружаем переменные окружения if [ -f .env ]; then - echo -e "${GREEN}Load Variable environment files .env${NC}" + echo -e "${GREEN}Loading environment variables from a file${NC}" export $(grep -v '^#' .env | xargs) else - echo -e "${RED}file .env not found. please create it using .env.example${NC}" + echo -e "${RED}File .env not found. Please create one based on .env.example${NC}" exit 1 fi # Проверяем наличие нужных переменных if [[ -z "$AZURE_RESOURCE_GROUP" || -z "$AZURE_LOCATION" || -z "$AZURE_STORAGE_ACCOUNT" ]]; then - echo -e "${RED}Not all conditions observe by .env${NC}" + echo -e "${RED}Not all required environment variables are defined in the .env file.${NC}" exit 1 fi # Создаем группу ресурсов, если она не существует -echo -e "${YELLOW}Creating resourse group ${AZURE_RESOURCE_GROUP}...${NC}" +echo -e "${YELLOW}Создание группы ресурсов ${AZURE_RESOURCE_GROUP}...${NC}" az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION # Создаем реестр контейнеров, если он не существует -echo -e "${YELLOW}Creating registry of containers...${NC}" +echo -e "${YELLOW}Creating a container registry...${NC}" az acr create --resource-group $AZURE_RESOURCE_GROUP --name $AZURE_CONTAINER_REGISTRY --sku Basic --admin-enabled true # Получаем учетные данные реестра -echo -e "${YELLOW}Obtaining container registry credentials...${NC}" +echo -e "${YELLOW}Getting container registry credentials...${NC}" REGISTRY_USERNAME=$(az acr credential show --name $AZURE_CONTAINER_REGISTRY --query "username" -o tsv) REGISTRY_PASSWORD=$(az acr credential show --name $AZURE_CONTAINER_REGISTRY --query "passwords[0].value" -o tsv) REGISTRY_URL=$(az acr show --name $AZURE_CONTAINER_REGISTRY --query "loginServer" -o tsv) @@ -68,30 +68,33 @@ az storage account create \ STORAGE_ACCOUNT_KEY=$(az storage account keys list --resource-group $AZURE_RESOURCE_GROUP --account-name $AZURE_STORAGE_ACCOUNT --query "[0].value" -o tsv) # Создаем файловый ресурс для MongoDB -echo -e "${YELLOW}Создание файлового ресурса для MongoDB...${NC}" +echo -e "${YELLOW}Creating a File Resource for MongoDB...${NC}" az storage share create \ --name mongodb-data \ --account-name $AZURE_STORAGE_ACCOUNT \ --account-key $STORAGE_ACCOUNT_KEY # Создаем ключ хранилища для Azure Key Vault -echo -e "${YELLOW}Создание Key Vault...${NC}" + +echo -e "${YELLOW}Creating a Key Vault...${NC}" az keyvault create \ --name $AZURE_KEY_VAULT_NAME \ --resource-group $AZURE_RESOURCE_GROUP \ --location $AZURE_LOCATION # Генерируем секретный ключ JWT + JWT_SECRET=$(openssl rand -hex 32) # Добавляем секреты в Key Vault -echo -e "${YELLOW}Добавление секретов в Key Vault...${NC}" + +echo -e "${YELLOW}Adding secrets to Key Vault...${NC}" az keyvault secret set --vault-name $AZURE_KEY_VAULT_NAME --name "MONGODB-ROOT-USERNAME" --value $MONGODB_ROOT_USERNAME az keyvault secret set --vault-name $AZURE_KEY_VAULT_NAME --name "MONGODB-ROOT-PASSWORD" --value $MONGODB_ROOT_PASSWORD az keyvault secret set --vault-name $AZURE_KEY_VAULT_NAME --name "JWT-SECRET" --value $JWT_SECRET # Создаем директорию и копируем туда файлы для сборки Docker-образа -echo -e "${YELLOW}Подготовка файлов для сборки Docker-образа...${NC}" +echo -e "${YELLOW}Preparing files for building Docker image...${NC}" mkdir -p build cp -r src/* build/ cp Dockerfile build/ @@ -102,30 +105,32 @@ echo -e "${YELLOW}Авторизация в реестре контейнеро az acr login --name $AZURE_CONTAINER_REGISTRY # Сборка и публикация Docker-образа -echo -e "${YELLOW}Сборка и публикация Docker-образа...${NC}" +echo -e "${YELLOW}Authorization in the container registry...${NC}" cd build docker build -t ${REGISTRY_URL}/brabus-app:latest . docker push ${REGISTRY_URL}/brabus-app:latest cd .. # Создаем переменные для развертывания + export AZURE_CONTAINER_REGISTRY_URL=$REGISTRY_URL export MONGODB_URI="mongodb://${MONGODB_ROOT_USERNAME}:${MONGODB_ROOT_PASSWORD}@mongodb:27017/brabus?authSource=admin" export STORAGE_ACCOUNT_NAME=$AZURE_STORAGE_ACCOUNT export STORAGE_ACCOUNT_KEY=$STORAGE_ACCOUNT_KEY # Применяем шаблон развертывания -echo -e "${YELLOW}Применение шаблона развертывания...${NC}" + +echo -e "${YELLOW}Applying deployment template...${NC}" envsubst < azure_deployment.yml > azure_deployment_filled.yml az container create --resource-group $AZURE_RESOURCE_GROUP --file azure_deployment_filled.yml # Получаем публичный IP-адрес контейнера + CONTAINER_IP=$(az container show --resource-group $AZURE_RESOURCE_GROUP --name brabus-container-group --query "ipAddress.ip" -o tsv) -# Настройка HTTPS с Let's Encrypt -# Примечание: этот шаг требует дополнительной настройки DNS и доменного имени -# Здесь приведен упрощенный пример -echo -e "${GREEN}Развертывание завершено успешно!${NC}" -echo -e "${GREEN}Приложение доступно по адресу: http://${CONTAINER_IP}:3000${NC}" -echo -e "${YELLOW}Примечание: для настройки HTTPS необходимо настроить доменное имя и SSL-сертификат${NC}" + +echo -e "${GREEN}Deployment completed SUCCERFULLY!!!!${NC}" +echo -e "${GREEN}The application is available AT: http://${CONTAINER_IP}:3000${NC}" +echo -e "${YELLOW}Note: To configure HTTPS, you must configure a domain name and SSL certificate${NC}" +