- Проверена конфигурация проекта: ошибка дублирования required_providers отсутствует - Блок required_providers определен только в providers.tf (правильная конфигурация) - Выполнен terraform init - инициализация прошла успешно - Добавлен .terraform.lock.hcl для гарантии использования одинаковых версий провайдеров всеми участниками проекта
Terraform: Grafana Loki на Proxmox
Этот проект Terraform автоматизирует развертывание виртуальной машины на Proxmox с установленными и настроенными Grafana Loki и Promtail.
📋 Описание
Проект создает полностью настроенную VM с:
- Loki - система агрегации логов (порт 3100)
- Promtail - агент для сбора логов (порт 9080)
- Автоматическая установка и настройка systemd сервисов
- Сбор системных логов из
/var/log/*.log
🔧 Требования
Локальные требования
- Terraform >= 1.0
- SSH ключ для доступа к VM (
~/.ssh/id_rsaпо умолчанию) - Доступ к Proxmox API
Требования к Proxmox
- Proxmox VE 6.x или 7.x
- API токен с правами для создания VM
- Ubuntu 20.04 шаблон с поддержкой cloud-init и DHCP
- Настроенное хранилище (по умолчанию
local-lvm) - Сетевой мост (по умолчанию
vmbr0)
🚀 Быстрый старт
1. Клонируйте репозиторий
git clone https://git.mscsrv.ru/your-username/terraform-grafana-loki.git
cd terraform-grafana-loki
2. Настройте переменные
Создайте файл terraform.tfvars на основе примера:
cp terraform.tfvars.example terraform.tfvars
Отредактируйте terraform.tfvars и заполните необходимые значения:
proxmox_api_url = "https://your-proxmox-host:8006/api2/json"
proxmox_api_token_id = "terraform-user@pve!token-id"
proxmox_api_token_secret = "your-secret-token"
target_node = "pve"
vm_template = "ubuntu-20.04-template"
3. Инициализируйте Terraform
terraform init
4. Проверьте план развертывания
terraform plan
5. Примените конфигурацию
terraform apply
Подтвердите создание ресурсов, введя yes.
6. Получите информацию о созданной VM
После успешного развертывания Terraform выведет:
- IP адрес VM
- URL для доступа к Loki
- URL для доступа к Promtail
- Команду для SSH подключения
terraform output
📁 Структура проекта
terraform-grafana-loki/
├── providers.tf # Конфигурация провайдеров Terraform
├── variables.tf # Определение переменных
├── main.tf # Основной код: ресурс VM и provisioners
├── outputs.tf # Выходные данные (IP, URLs)
├── terraform.tfvars.example # Пример файла с переменными
├── .gitignore # Исключения для Git
└── README.md # Документация проекта
⚙️ Переменные
Обязательные переменные
| Переменная | Описание |
|---|---|
proxmox_api_url |
URL адрес Proxmox API |
proxmox_api_token_id |
ID токена для API |
proxmox_api_token_secret |
Секретный токен |
Опциональные переменные
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
target_node |
pve |
Имя узла Proxmox |
vm_name |
grafana-loki |
Имя VM |
vm_template |
ubuntu-20.04-template |
Шаблон для клонирования |
vm_cores |
2 |
Количество CPU ядер |
vm_memory |
4096 |
Память в MB |
vm_disk_size |
40G |
Размер диска |
loki_version |
2.9.1 |
Версия Loki |
loki_port |
3100 |
HTTP порт Loki |
promtail_port |
9080 |
HTTP порт Promtail |
🔐 Настройка Proxmox API токена
- Войдите в веб-интерфейс Proxmox
- Перейдите в Datacenter → Permissions → API Tokens
- Создайте новый токен для пользователя (например,
terraform-user@pve) - Сохраните Token ID и Secret
- Убедитесь, что у пользователя есть необходимые права (PVEVMAdmin или Administrator)
🖥️ Подготовка Ubuntu шаблона
Шаблон VM должен соответствовать следующим требованиям:
- Ubuntu 20.04 LTS (или новее)
- Установлен и настроен cloud-init
- Настроено получение IP через DHCP
- Включен qemu-guest-agent
- Добавлен ваш публичный SSH ключ
📊 Проверка работы сервисов
После развертывания подключитесь к VM:
ssh ubuntu@<VM_IP>
Проверьте статус сервисов:
# Статус Loki
sudo systemctl status loki
# Статус Promtail
sudo systemctl status promtail
# Логи Loki
sudo journalctl -u loki -f
# Логи Promtail
sudo journalctl -u promtail -f
Проверьте доступность Loki API:
curl http://localhost:3100/ready
curl http://localhost:3100/metrics
🔍 Интеграция с Grafana
Для визуализации логов в Grafana:
- Установите Grafana (отдельно или на той же VM)
- Добавьте Loki как Data Source:
- URL:
http://<VM_IP>:3100 - Access: Server (по умолчанию)
- URL:
- Создайте дашборды для визуализации логов
🗑️ Удаление ресурсов
Для удаления созданной VM:
terraform destroy
📝 Примечания
- VM создается с использованием DHCP, IP адрес назначается автоматически
- Loki хранит данные локально в
/var/loki/ - Promtail собирает логи из
/var/log/*.log - Оба сервиса настроены на автоматический запуск при старте системы
🐛 Устранение неполадок
Ошибка подключения SSH
Убедитесь, что:
- SSH ключ правильно настроен в шаблоне VM
- Путь к приватному ключу корректен (
ssh_private_key_path) - VM получила IP адрес (проверьте в Proxmox)
Loki не запускается
Проверьте логи:
sudo journalctl -u loki -n 100
Проверьте конфигурацию:
cat /etc/loki-config.yaml
Promtail не отправляет логи
Проверьте подключение к Loki:
curl http://localhost:3100/ready
Проверьте конфигурацию Promtail:
cat /etc/promtail-config.yaml
📚 Дополнительные ресурсы
📄 Лицензия
Этот проект распространяется свободно для использования и модификации.
🤝 Вклад
Предложения и улучшения приветствуются! Создавайте Issue или Pull Request.