Ответ
Terraform сам не выполняет команды на серверах. Он взаимодействует с API облачных провайдеров или систем управления через провайдеров (providers). Конфигурация провайдера указывает, где и как создавать ресурсы.
Пример для AWS:
provider "aws" {
region = "eu-west-1"
# Аутентификация через переменные окружения AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY
}
resource "aws_instance" "app_server" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Как это работает:
- Провайдер: Блок
providerнастраивает клиент для работы с API конкретной платформы (AWS, Azure, GCP, Kubernetes и т.д.). - Аутентификация: Указывается через параметры в конфигурации, переменные окружения, IAM-роли (в облаке) или конфигурационные файлы (например,
~/.aws/credentials). - Состояние (State): Файл
terraform.tfstateхранит сопоставление ресурсов в коде с реальными ID объектов в облаке. Terraform использует его для понимания, что нужно создать, обновить или удалить. - Локальное выполнение: Команды
terraform applyилиplanвыполняются на той машине, где запущен Terraform CLI. Они лишь генерируют и отправляют план изменений в API облачного провайдера, который уже выполняет операции на своих серверах.
Для локальных команд: Если используется provisioner local-exec, команды выполняются на машине, где запускается Terraform.