Terraform CI a533a8816f Добавлен .terraform.lock.hcl для фиксации версий провайдеров
- Проверена конфигурация проекта: ошибка дублирования required_providers отсутствует
- Блок required_providers определен только в providers.tf (правильная конфигурация)
- Выполнен terraform init - инициализация прошла успешно
- Добавлен .terraform.lock.hcl для гарантии использования одинаковых версий провайдеров всеми участниками проекта
2025-11-11 09:33:58 +00:00

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 токена

  1. Войдите в веб-интерфейс Proxmox
  2. Перейдите в DatacenterPermissionsAPI Tokens
  3. Создайте новый токен для пользователя (например, terraform-user@pve)
  4. Сохраните Token ID и Secret
  5. Убедитесь, что у пользователя есть необходимые права (PVEVMAdmin или Administrator)

🖥️ Подготовка Ubuntu шаблона

Шаблон VM должен соответствовать следующим требованиям:

  1. Ubuntu 20.04 LTS (или новее)
  2. Установлен и настроен cloud-init
  3. Настроено получение IP через DHCP
  4. Включен qemu-guest-agent
  5. Добавлен ваш публичный 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:

  1. Установите Grafana (отдельно или на той же VM)
  2. Добавьте Loki как Data Source:
    • URL: http://<VM_IP>:3100
    • Access: Server (по умолчанию)
  3. Создайте дашборды для визуализации логов

🗑️ Удаление ресурсов

Для удаления созданной 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.

Description
Terraform скрипт для развертывания виртуальной машины на Proxmox с Grafana Loki и Promtail
Readme 33 KiB
Languages
HCL 100%