🚀 Terraform Setup for Zabbix Configuration

Этот проект предоставляет Terraform-конфигурации для автоматизированного развертывания и настройки компонентов Zabbix.

🔗 Репозиторий: GitHub

📌 Обзор

Terraform-конфигурация упрощает управление Zabbix, автоматизируя следующие задачи:

1️⃣ Настройка сервера Zabbix: Конфигурирование сервера Zabbix с необходимыми шаблонами и группами хостов.
2️⃣ Управление хостами: Добавление или обновление отслеживаемых хостов с предопределёнными параметрами.
3️⃣ Интеграция: Автоматическая привязка Zabbix к внешним инструментам визуализации, таким как Grafana.


🛠 Требования

Перед использованием этой конфигурации убедитесь, что:

✔️ Сервер Zabbix развернут и доступен (рекомендуемая версия: 6.0+).
✔️ Доступ к API Zabbix включен, и у вас есть действительный токен.
✔️ Terraform установлен (рекомендуемая версия: 1.3+).


🔧 Переменные

Terraform использует следующие переменные для конфигурации:

variable "zabbix_api_url" {
  description = "URL API Zabbix"
  type        = string
}

variable "zabbix_api_user" {
  description = "Имя пользователя API Zabbix"
  type        = string
}

variable "zabbix_api_password" {
  description = "Пароль для API Zabbix"
  type        = string
}

variable "hosts" {
  description = "Список хостов, управляемых Zabbix"
  type        = list(object({
    hostname    = string
    ip_address  = string
    templates   = list(string)
    groups      = list(string)
  }))
}

⚙️ Конфигурация Terraform

📦 Providers

Используйте Zabbix-провайдер для взаимодействия с API Zabbix:

terraform {
  required_providers {
    zabbix = {
      source  = "djmitche/zabbix"
      version = "~> 0.3.0"
    }
  }
}

provider "zabbix" {
  url      = var.zabbix_api_url
  user     = var.zabbix_api_user
  password = var.zabbix_api_password
}

📌 Пример ресурсов

Добавление нового хоста в Zabbix

resource "zabbix_host" "example_host" {
  name       = var.hosts[0].hostname
  interfaces = [{
    type    = "1"
    main    = true
    ip      = var.hosts[0].ip_address
    dns     = ""
    port    = "10050"
  }]
  groups    = var.hosts[0].groups
  templates = var.hosts[0].templates
}

🚀 Использование

🔹 1. Экспорт переменных окружения

export TF_VAR_zabbix_api_url="https://zabbix.example.com/api_jsonrpc.php"
export TF_VAR_zabbix_api_user="Admin"
export TF_VAR_zabbix_api_password="zabbix"

🔹 2. Инициализация Terraform

Запустите следующую команду для загрузки необходимых провайдеров:

terraform init

🔹 3. Планирование изменений

Чтобы увидеть, какие изменения будут применены, выполните:

terraform plan

🔹 4. Применение конфигурации

Запустите следующую команду для создания ресурсов:

terraform apply

🔹 5. Удаление ресурсов (при необходимости)

Чтобы удалить все ресурсы, управляемые Terraform:

terraform destroy

🎯 Заключение

Эта Terraform-конфигурация автоматизирует управление Zabbix, обеспечивая консистентность и масштабируемость мониторинга.

Вы можете настроить переменные и ресурсы в соответствии с вашей инфраструктурой, а также легко интегрировать Zabbix с другими инструментами.🚀