kb/providers
Provider'ы, это плагины, которые превращают HCL в API-вызовы. Здесь, provider-блок и его опции, AWS provider с credentials chain и default_tags, LocalStack endpoints для учебного sandbox без реального облака.
Три провайдера для получения данных снаружи Terraform. `archive`, упаковка файлов в zip (lambda code, layers). `external`, вызов любого скрипта с JSON I/O. `http`. GET-запрос к URL, парс ответа. Все три, data sources, читают, не пишут. Полезны где declarative HCL не доходит.
AWS-провайдер ищет credentials в нескольких местах подряд: env-переменные, ~/.aws/credentials, IAM-роль инстанса. Чаще всего достаточно `aws configure` локально или роль на EC2, больше ничего не настраивать.
Provider `cloudinit` собирает multi-part MIME для `user_data` EC2. `data "cloudinit_config"` принимает несколько `part` (cloud-config YAML, shell-script, jinja и т.п.) и упаковывает их в один blob. Заменяет ручной base64-encoding одной строки и позволяет компоновать конфиг из кусков.
LocalStack эмулирует AWS API локально, в Docker-контейнере. Terraform думает что работает с настоящим AWS, но никаких реальных ресурсов не создаётся и денег не тратится. Идеально для учёбы и тестов.
Блок provider настраивает плагин: в какой регион AWS обращаться, какие endpoints использовать, какие credentials брать. Один такой блок на провайдера в большинстве случаев хватит.
Провайдеры, которые не управляют облаком, а помогают HCL. `random`, генерация ID/паролей. `time`, задержки и timestamp-метки. `null`, устаревший «нерессурс» для триггеров. `terraform_data`, современная замена `null_resource`, встроена в Terraform. Каждый снимает конкретное ограничение деклеаративного подхода.