Загрузить файлы в «sk1»
This commit is contained in:
parent
25ab5bc7b3
commit
2fee02b586
131
sk1/prepare-app.sh
Normal file
131
sk1/prepare-app.sh
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
#!/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}"
|
122
sk1/remove-app.sh
Normal file
122
sk1/remove-app.sh
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
#!/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 не найден. Пожалуйста, укажите переменные окружения вручную${NC}"
|
||||||
|
|
||||||
|
# Запрашиваем нужные переменные
|
||||||
|
read -p "Введите имя группы ресурсов: " AZURE_RESOURCE_GROUP
|
||||||
|
if [ -z "$AZURE_RESOURCE_GROUP" ]; then
|
||||||
|
echo -e "${RED}Имя группы ресурсов обязательно. Выход.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Введите имя реестра контейнеров (или нажмите Enter, если не нужно удалять): " AZURE_CONTAINER_REGISTRY
|
||||||
|
read -p "Введите имя учетной записи хранения (или нажмите Enter, если не нужно удалять): " AZURE_STORAGE_ACCOUNT
|
||||||
|
read -p "Введите имя Key Vault (или нажмите Enter, если не нужно удалять): " AZURE_KEY_VAULT_NAME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Запрашиваем подтверждение перед удалением
|
||||||
|
echo -e "${RED}ВНИМАНИЕ: Вы собираетесь удалить следующие ресурсы:${NC}"
|
||||||
|
echo -e "${RED} - Группа контейнеров: brabus-container-group в группе ресурсов ${AZURE_RESOURCE_GROUP}${NC}"
|
||||||
|
|
||||||
|
if [ ! -z "$AZURE_CONTAINER_REGISTRY" ]; then
|
||||||
|
echo -e "${RED} - Реестр контейнеров: ${AZURE_CONTAINER_REGISTRY}${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$AZURE_STORAGE_ACCOUNT" ]; then
|
||||||
|
echo -e "${RED} - Учетная запись хранения: ${AZURE_STORAGE_ACCOUNT}${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$AZURE_KEY_VAULT_NAME" ]; then
|
||||||
|
echo -e "${RED} - Key Vault: ${AZURE_KEY_VAULT_NAME}${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Вы уверены, что хотите продолжить? (y/n): " -n 1 -r
|
||||||
|
echo
|
||||||
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
echo -e "${YELLOW}Операция отменена пользователем.${NC}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Удаляем группу контейнеров
|
||||||
|
echo -e "${YELLOW}Удаление группы контейнеров...${NC}"
|
||||||
|
az container delete \
|
||||||
|
--resource-group $AZURE_RESOURCE_GROUP \
|
||||||
|
--name brabus-container-group \
|
||||||
|
--yes
|
||||||
|
|
||||||
|
# Удаляем реестр контейнеров, если указан
|
||||||
|
if [ ! -z "$AZURE_CONTAINER_REGISTRY" ]; then
|
||||||
|
echo -e "${YELLOW}Удаление реестра контейнеров ${AZURE_CONTAINER_REGISTRY}...${NC}"
|
||||||
|
az acr delete \
|
||||||
|
--resource-group $AZURE_RESOURCE_GROUP \
|
||||||
|
--name $AZURE_CONTAINER_REGISTRY \
|
||||||
|
--yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Удаляем учетную запись хранения, если указана
|
||||||
|
if [ ! -z "$AZURE_STORAGE_ACCOUNT" ]; then
|
||||||
|
echo -e "${YELLOW}Удаление учетной записи хранения ${AZURE_STORAGE_ACCOUNT}...${NC}"
|
||||||
|
az storage account delete \
|
||||||
|
--resource-group $AZURE_RESOURCE_GROUP \
|
||||||
|
--name $AZURE_STORAGE_ACCOUNT \
|
||||||
|
--yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Удаляем Key Vault, если указан
|
||||||
|
if [ ! -z "$AZURE_KEY_VAULT_NAME" ]; then
|
||||||
|
echo -e "${YELLOW}Удаление Key Vault ${AZURE_KEY_VAULT_NAME}...${NC}"
|
||||||
|
|
||||||
|
# Сначала нужно изменить политику удаления, чтобы обойти защиту от удаления
|
||||||
|
az keyvault update \
|
||||||
|
--name $AZURE_KEY_VAULT_NAME \
|
||||||
|
--resource-group $AZURE_RESOURCE_GROUP \
|
||||||
|
--enable-purge-protection false \
|
||||||
|
--enable-soft-delete false
|
||||||
|
|
||||||
|
# Теперь можно удалить Key Vault
|
||||||
|
az keyvault delete \
|
||||||
|
--name $AZURE_KEY_VAULT_NAME \
|
||||||
|
--resource-group $AZURE_RESOURCE_GROUP
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Запрашиваем, нужно ли удалить всю группу ресурсов
|
||||||
|
read -p "Хотите полностью удалить группу ресурсов ${AZURE_RESOURCE_GROUP}? (y/n): " -n 1 -r
|
||||||
|
echo
|
||||||
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
echo -e "${YELLOW}Удаление группы ресурсов ${AZURE_RESOURCE_GROUP}...${NC}"
|
||||||
|
az group delete --name $AZURE_RESOURCE_GROUP --yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}Удаление ресурсов завершено!${NC}"
|
Loading…
Reference in New Issue
Block a user