Оригинальный пост Опубликовано здесь: Лучшие практики террафора
Terraform-это инструмент с открытым исходным кодом, который позволяет вам определять инфраструктуру для различных облачных провайдеров (например, AWS, Azure, Google Cloud, DigitaloCean и т. Д.) Используя простой, декларативный язык программирования.
Это руководство предполагает, что у вас есть основное представление о террафоре. Я принял примеры террафора с AWS поставщиком. Концепции будут похожи на другие поставщики.
Я буду пользоваться этим репо, чтобы объяснить все примеры: Террафор-примеры
Всегда используйте новейшую версию Terraform ( Текущая версия Terraform V0.12.x)
Мы всегда должны выбирать новейшую версию Terraform. Причина в том, что иногда террафору не имеет обратной совместимости. Вы всегда будете застрять с выбранной версией.
Всегда используйте VAR-файл для плана террафора
Мы всегда должны использовать VAR-файл для переменных. Это будет легко поддерживать разные переменные для различных сред и модулей. Существуют разные методы, которые можно использовать для переменных, таких как назначить значение строки для переменной VAR, переменной среды, VAR-файл. Оформить заказ Это руководство для всех вариантов Руководство по входным переменным Оформить этот пример Переменный пример
Управляйте Backend S3 для файлов TFstate
Всякий раз, когда мы создаем любой ресурс с террафом (Terraform Apply), он поддерживает состояние в файле TFState. Попробуйте запустить Переменный пример Отказ Это создаст файл TFstate в локальном. Если мы изменим любой ресурс или добавление, TFState будет изменен после того, как примените к каждой террафом. В команде несколько членов команды будут изменять код Terraform. Таким образом, мы должны поддерживать TFstate в системе управления версиями (пример: S3). Оформить этот пример S3 Backend Пример
Используйте Dynamo DB для блокировки модификации TFState
Несколько членов команды будут применяться Terraform в то же время, которые могут создавать проблемы. Мы должны использовать Dynamo DB для блокировки. Это не позволит другим террафом применить процесс для изменения Tfstate до выхода блокировки. Оформить этот пример S3 Backend Пример
Включить контроль версий на файловых файлах штата Terraform
Во-первых, мы должны использовать дистанционное хранение S3 для управления TFstate. Мы должны включить контроль версии на этом удаленном S3. Причина: если какой-либо проблема поставляется с текущей TFstate в производстве, мы всегда можем вернуться к предыдущей версии. Оформить этот пример Переменный пример
Используйте импорт террафора для существующих ресурсов
Предположим, мы создали ресурсы ранее. Теперь мы хотим использовать его с террафором. Это возможно с Terraform Import
Отказ Это сделает эти ресурсы как часть террафора. Оформить этот пример Пример импорта
Используйте общие модули
Terraform Community имеет общие общие модули на реестре Terraform, таких как ECS-Fargate, ECS-Service, создание ведра S3. Реестр модуля Оформить этот пример Пример модуля акций
Используйте модули террафора для барангинга различных сред (DEV/Stage/Prod)
Модуль — это контейнер для нескольких ресурсов, которые используются вместе. Мы должны использовать модули террафора для управления кодом между различной средой. Каждая конфигурация Terraform имеет свой корневой модуль, который состоит из ресурсов, определенных в файлах .tf в главном рабочем каталоге. Мы обертываем общие ресурсы в модулях, поэтому его можно повторно использовать для другой среды. Мы можем использовать систему GIT версию для модулей. Пример модулей Checkout Share. Он размещен на GitHub, и мы напрямую используем его. Оформить заказ Этот пример для модулей Структура: Пример модуля
Если вы хотите подробно изучить террафору, посмотрите книгу ниже:
Террафом подробно
Оригинал: «https://dev.to/cryptic022/terraform-best-practices-2a1n»