From cf7017386a8e7b7ddf5066645e57c87a36dde2db Mon Sep 17 00:00:00 2001 From: Yan Kasabutski Date: Tue, 13 May 2025 04:04:19 +0000 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82=D1=8C=20sk?= =?UTF-8?q?1/prepare-app.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sk1/prepare-app.sh | 131 --------------------------------------------- 1 file changed, 131 deletions(-) delete mode 100644 sk1/prepare-app.sh diff --git a/sk1/prepare-app.sh b/sk1/prepare-app.sh deleted file mode 100644 index 72279e7..0000000 --- a/sk1/prepare-app.sh +++ /dev/null @@ -1,131 +0,0 @@ -#!/bin/bash - -# Скрипт для подготовки и развертывания приложения Brabus в Azure Cloud - -# Цвета для вывода -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -RED='\033[0;31m' -NC='\033[0m' # No Color - -# Проверяем, установлен ли Azure CLI -if ! command -v az &> /dev/null; then - echo -e "${RED}Azure CLI не установлен. Пожалуйста, установите его перед запуском скрипта.${NC}" - echo "Инструкции: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli" - exit 1 -fi - -# Проверяем, авторизован ли пользователь в Azure -echo -e "${YELLOW}Проверка авторизации в Azure...${NC}" -az account show > /dev/null 2>&1 -if [ $? -ne 0 ]; then - echo -e "${YELLOW}Требуется авторизация в Azure. Запуск процесса входа...${NC}" - az login - if [ $? -ne 0 ]; then - echo -e "${RED}Ошибка авторизации в Azure. Выход.${NC}" - exit 1 - fi -fi - -# Загружаем переменные окружения -if [ -f .env ]; then - echo -e "${GREEN}Загрузка переменных окружения из файла .env${NC}" - export $(grep -v '^#' .env | xargs) -else - echo -e "${RED}Файл .env не найден. Пожалуйста, создайте его на основе .env.example${NC}" - exit 1 -fi - -# Проверяем наличие нужных переменных -if [[ -z "$AZURE_RESOURCE_GROUP" || -z "$AZURE_LOCATION" || -z "$AZURE_STORAGE_ACCOUNT" ]]; then - echo -e "${RED}Не все обязательные переменные окружения заданы в файле .env${NC}" - exit 1 -fi - -# Создаем группу ресурсов, если она не существует -echo -e "${YELLOW}Создание группы ресурсов ${AZURE_RESOURCE_GROUP}...${NC}" -az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION - -# Создаем реестр контейнеров, если он не существует -echo -e "${YELLOW}Создание реестра контейнеров...${NC}" -az acr create --resource-group $AZURE_RESOURCE_GROUP --name $AZURE_CONTAINER_REGISTRY --sku Basic --admin-enabled true - -# Получаем учетные данные реестра -echo -e "${YELLOW}Получение учетных данных реестра контейнеров...${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) - -# Создаем учетную запись хранения, если она не существует -echo -e "${YELLOW}Создание учетной записи хранения...${NC}" -az storage account create \ - --name $AZURE_STORAGE_ACCOUNT \ - --resource-group $AZURE_RESOURCE_GROUP \ - --location $AZURE_LOCATION \ - --sku Standard_LRS - -# Получаем ключ учетной записи хранения -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}" -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}" -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}" -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}" -mkdir -p build -cp -r src/* build/ -cp Dockerfile build/ -cp package.json build/ - -# Авторизуемся в реестре контейнеров -echo -e "${YELLOW}Авторизация в реестре контейнеров...${NC}" -az acr login --name $AZURE_CONTAINER_REGISTRY - -# Сборка и публикация Docker-образа -echo -e "${YELLOW}Сборка и публикация Docker-образа...${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}" -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}"