# Мост форматов конфигурации: TOML / INI / HCL / .env / Nix / dotenv / Kubernetes ConfigMap / Secret

Преобразует конфигурации между dotenv .env, TOML, INI, Java .properties, YAML, JSON, HCL (нативный синтаксис Terraform/Vagrant) и атрибутными множествами Nix, а также генерирует манифесты Kubernetes ConfigMap / Secret; сохраняет плейсхолдеры ${VAR} / {{var}} и envsubst-интерполяцию, фиксирует происхождение вывода типов (string/int/float/bool/list), сворачивает метки HCL-блоков во вложенные ключи, а двусторонний diff подсвечивает неэквивалентные настройки (потерянные ключи, смены типов, переписанные значения); YAML дружелюбен к патчам Kustomize.

> Каноническая страница: https://elysiatools.com/ru/tools/toml-ini-hcl-envfile-nix-dotenv-kubernetes-configmap-secret-config-format-bridge

- **Категория:** Format Conversion

- **Ключевые слова:** конвертер конфигураций, dotenv, TOML, INI, HCL, Terraform, Nix, ConfigMap, Secret, properties, YAML, envsubst

## Обзор

Все форматы сначала разбираются в типизированное промежуточное дерево: скалярные типы (string/int/float/bool/null), списки, вложенные объекты, метки HCL-блоков и плейсхолдеры интерполяции с указанием происхождения. Значения dotenv всегда строки (их настоящая семантика); значения без кавычек в INI/.properties выводятся как int/float/bool и помечаются как «выведенные», взятые в кавычки остаются строками; HCL-выражения (функции, ссылки) сохраняются буквально; Nix поддерживает let … in, inherit, точечные пути атрибутов и индентированные строки ''…'', лямбды и внешние ссылки помечаются. Манифесты ConfigMap/Secret используют stringData (сервер объединяет; base64 в Secret накладывает Kubernetes), ключи очищаются по правилам K8s (буквенно-цифровые, -, _, .). Двусторонний diff заново разбирает вывод и сравнивает поключево с исходным деревом, сообщая о четырёх классах различий (dropped/added/type/value) — именно тот список, который нужно проверять при реальной миграции.

## Входные данные

- **Исходная конфигурация (вставьте файл)** (textarea): DATABASE_HOST=localhost DATABASE_PORT=5432 …
- **Формат источника** (select)
- **Целевой формат** (select)
- **Имя манифеста (для Kubernetes)** (text): my-app-config
- **Выполнить двусторонний diff** (checkbox)

## Когда использовать

- Перенос локальных переменных из файла .env в манифесты Kubernetes ConfigMap или Secret.
- Миграция конфигураций между форматами экосистем, например из HCL (Terraform) в Nix или из TOML в YAML/JSON.
- Проверка корректности типов и целостности ключей при конвертации конфигураций через встроенный diff.

## Как это работает

- Синтаксический анализатор разбирает исходный текст в промежуточное типизированное дерево, сохраняя плейсхолдеры `${VAR}` и `{{var}}`.
- Генератор целевого формата преобразует дерево в выбранный синтаксис, нормализуя имена ключей для Kubernetes или сворачивая метки блоков HCL.
- Модуль валидации повторно разбирает полученный результат и сопоставляет его с исходным деревом, выводя отчет о различиях и потерях данных.

## Сценарии использования

- Генерация манифеста Kubernetes ConfigMap из существующего рабочего файла .env для деплоя сервиса.
- Трансляция конфигураций виртуальных машин и переменных из HCL в атрибутные множества Nix.
- Преобразование устаревших файлов настроек Java .properties или INI в современный формат TOML или YAML.

## Частые вопросы

### Как обрабатываются плейсхолдеры переменных окружения вроде ${DB_PASS}?

Плейсхолдеры сохраняются дословно без принудительной подстановки, что позволяет использовать результат в пайплайнах с envsubst или Kustomize.

### Почему при генерации Kubernetes Secret используется поле stringData?

Поле stringData позволяет вставлять незакодированные строки, а кодирование в Base64 выполняет сам API-сервер Kubernetes при применении манифеста.

### Как инструмент обрабатывает неоднозначные типы в INI и .properties?

Значения без кавычек автоматически приводятся к boolean, integer или float с пометкой вывода, а значения в кавычках сохраняются как строки.

### Что показывает двусторонний diff?

Diff заново парсит сгенерированный результат и выявляет удаленные ключи, добавленные поля, изменения типов и модификации значений.

### Как преобразуются блоки HCL с метками?

Метки блоков HCL (например, resource или variable) трансформируются в иерархические вложенные ключи целевого формата.

## Связанные инструменты

- [Конвертер YAML-JSON](https://elysiatools.com/ru/tools/yaml-json-converter): Преобразует между форматами YAML и JSON
- [Мост конфигураций WireGuard/OpenVPN для Clash и sing-box](https://elysiatools.com/ru/tools/wireguard-openvpn-to-clash-singbox-bridge): Преобразует вставленный текст клиента WireGuard или OpenVPN в YAML Mihomo/Clash или JSON sing-box и отмечает секретные поля; не передавайте приватные ключи
- [Студия запросов и преобразований JSONata](https://elysiatools.com/ru/tools/jsonata-query-transform-studio): Просматривайте запросы и преобразования в стиле JSONata, сравнивайте результаты и экспортируйте JSON, CSV, YAML или Markdown.
- [Конвертер HCL-JSON](https://elysiatools.com/ru/tools/hcl-json-converter): Преобразует между HashiCorp Configuration Language (HCL) и форматами JSON для конфигураций Terraform
- [Text to Excel Converter](https://elysiatools.com/ru/tools/text-to-excel): Convert various text formats to Excel with customizable parsing and formatting options
- [Конвертер Текста в JSON](https://elysiatools.com/ru/tools/text-to-json): Преобразует различные форматы текста в JSON с настраиваемыми опциями парсинга
- [Конвертер TOML-JSON](https://elysiatools.com/ru/tools/toml-json-converter): Преобразует между форматами TOML и JSON с поддержкой комментариев и сложных структур данных
- [Семантическое сравнение конфигураций](https://elysiatools.com/ru/tools/config-file-semantic-diff): Сравнивает конфигурации JSON, YAML, TOML и dotenv по путям ключей, игнорируя порядок и шум форматирования.

## Примеры

- [Примеры Kubernetes YAML](https://elysiatools.com/ru/samples/kubernetes-yaml): Полные YAML манифесты Kubernetes для Deployment, Service, ConfigMap, Secret, Ingress и других необходимых ресурсов
- [Примеры Распределенного Трейсинга](https://elysiatools.com/ru/samples/distributed-tracing-samples): Комплексные примеры распределенного трейсинга с использованием Jaeger, OpenTelemetry и современных инструментов
- [Примеры Docker и Kubernetes](https://elysiatools.com/ru/samples/docker-kubernetes): Основные примеры оркестрации контейнеров, включая Dockerfiles, Docker Compose и манифесты Kubernetes для современного развертывания приложений
- [Примеры OpenAPI/Swagger](https://elysiatools.com/ru/samples/openapi-swagger): Комплексные примеры документации API с использованием OpenAPI 3.0 и спецификаций Swagger для RESTful сервисов
