Короткий ответ
IaC описывает инфраструктуру декларативным кодом, который хранится в репозитории, проходит review и применяется автоматически; при ClickOps инженер вносит изменения вручную через UI, и эти изменения нигде не зафиксированы как код.
Как это работает подробнее
Terraform читает конфигурацию в HCL, строит граф зависимостей ресурсов, запрашивает текущее состояние через API провайдера и вычисляет план изменений, необходимых для перехода к описанному в коде состоянию.
Пример кода
main.tf
resource "aws_s3_bucket" "logs" {
bucket = "my-app-logs-bucket"
tags = {
Environment = "dev"
}
}Что использовать на практике
- Практика. код хранится в git, его можно просмотреть в Pull Request, повторно применить для создания идентичного окружения (например, staging как копия prod) и восстановить инфраструктуру после потери. ClickOps подходит для быстрых экспериментов, но не оставляет истории изменений и не гарантирует повторяемость.
Подводные камни
- Ошибка. считать, что после внедрения Terraform ручные правки в консоли становятся технически невозможны — это не так, их просто не стоит делать, иначе возникнет расхождение (drift) между кодом и реальностью. Вторая ошибка — хранить .tf файлы только локально на ноутбуке инженера без системы контроля версий.