Refactor environment and configuration management

- Updated the project structure to store configuration files (.env, models.yaml, extensions.yaml) in the project root instead of the user's home directory.
- Enhanced the setup process to automatically copy example files to the project root on first run.
- Implemented a migration function to transfer legacy configuration files from the user's home directory to the new project structure.
- Revised documentation to reflect changes in file locations and setup instructions.
- Improved code readability and maintainability by refactoring path management functions.
This commit is contained in:
Leonid Pershin
2026-08-21 03:20:18 +03:00
parent c2ca39a4a7
commit 343f741baa
22 changed files with 202 additions and 90 deletions
+9 -8
View File
@@ -26,7 +26,9 @@ chmod +x gpu-rent.sh
./gpu-rent.sh --help
```
Первый запуск копирует `env.example` в `%USERPROFILE%\.gpu-rent\.env` / `~/.gpu-rent/.env`, если файла ещё нет. Заполни `OS_*` (шаги ниже). После `git pull`, если изменился `pyproject.toml`, лаунчер переустановит пакет.
Первый запуск копирует `env.example` `.env`, `models.example.yaml` `models.yaml`, `extensions.example.yaml``extensions.yaml` в **корне репозитория**, если файлов ещё нет. Заполни `OS_*` в `.env` (шаги ниже). После `git pull`, если изменился `pyproject.toml`, лаунчер переустановит пакет.
Секреты и runtime не уезжают в `%USERPROFILE%`: только `<repo>/.env` и `<repo>/.gpu-rent/` (state, SSH-ключ). Оба в `.gitignore`. Если раньше лежало в `~\.gpu-rent\`, CLI один раз перенесёт в проект.
Ручной венв по желанию (для разработки / pytest):
@@ -129,9 +131,8 @@ python -m gpu_rent --help
Создай каталог и файл **вне git**:
```powershell
mkdir $env:USERPROFILE\.gpu-rent
copy env.example $env:USERPROFILE\.gpu-rent\.env
notepad $env:USERPROFILE\.gpu-rent\.env
copy env.example .env
notepad .env
```
Вставь значения из RC + пароль + `GPU_RENT_AZ`. Никогда не коммить `.env`.
@@ -163,7 +164,7 @@ openstack flavor list
Манифест (не в git со своими id, если не хочешь светить вкусы):
```powershell
copy models.example.yaml $env:USERPROFILE\.gpu-rent\models.yaml
copy models.example.yaml models.yaml
```
`version_id: 0` — заглушка, doctor её игнорирует. Нужен **modelVersionId** из URL, не id карточки модели.
@@ -180,13 +181,13 @@ copy models.example.yaml $env:USERPROFILE\.gpu-rent\models.yaml
2. Fine-grained: доступ только к нужным репам, **Contents: Read**.
3. `GIT_TOKEN` в `.env`.
Скопируй шаблон: `extensions.example.yaml``~\.gpu-rent\extensions.yaml`. Пустой файл = стоковый SwarmUI.
Скопируй шаблон: `extensions.example.yaml``extensions.yaml` в корне репо. Пустой файл = стоковый SwarmUI.
---
## 6. SSH
Ключ **не надо** делать руками. CLI создаст `~\.gpu-rent\id_ed25519` без passphrase и зарегистрирует keypair в OpenStack при первом `up`. `doctor` только проверяет, что это получится.
Ключ **не надо** делать руками. CLI создаст `<repo>\.gpu-rent\id_ed25519` без passphrase и зарегистрирует keypair в OpenStack при первом `up`. `doctor` только проверяет, что это получится.
---
@@ -197,7 +198,7 @@ copy models.example.yaml $env:USERPROFILE\.gpu-rent\models.yaml
- [ ] Тикет на лимит **1× GPU** в нужном сегменте (или квота уже > 0)
- [ ] Сервисный пользователь `member` на этот проект, пароль сохранён
- [ ] RC скачан на **тот же пул**, где GPU
- [ ] `~\.gpu-rent\.env` заполнен (`OS_*` + `GPU_RENT_AZ`)
- [ ] `.env` в корне репо заполнен (`OS_*` + `GPU_RENT_AZ`)
- [ ] Нет `X-Token` вместо пароля сервисного пользователя
- [ ] (опционально) Civitai token + `models.yaml`
- [ ] На балансе хватает на диск 100 GB **даже когда GPU выключен**