Дефолтный таймаут на уровне провайдера. Составляет 1 час для всех ресурсов.
Переменная окружения CLOUDRU_TERRAFORM_TIMEOUT переопределяет дефолтный таймаут.
Пример использования:
CLOUDRU_TERRAFORM_TIMEOUT=30m terraform apply
Чтобы посмотреть какое значение применилось можно в режиме дебага запустить:
TF_LOG=DEBUG CLOUDRU_TERRAFORM_TIMEOUT=30m terraform apply
Данный таймаут самый приоритетный и он переопределяет как дефолтный таймаут, так и таймаут переменной окружения CLOUDRU_TERRAFORM_TIMEOUT.
resource "cloudru_evolution_compute_disk" "resource_disk" {project_id = var.project_idzone = {id = local.demo_az.id}name = "test-disk"description = "test disk"size = 10readonly = falseshared = falseencrypted = falsebootable = falsedisk_type = {id = local.disk_type.id}image = {id = local.demo_image.id}timeouts {create = "60m"update = "30m"delete = "5m"}# Если вы хотите, чтобы изменения в таймаутах постоянно не всплывали в стейте, то можно# указать, чтобы они игнорировались, но нужно учитывать, что таймаут для метода delete# берет свое значение из стейта и если изменения игнорируются, то не удастся поменять# значение для delete и других методов в стейте.lifecycle {ignore_changes = [timeouts]}}
Пример для датасорса:
data "cloudru_evolution_compute_zone_collection" "zone_demo_collection" {# Обязательный параметрproject_id = var.project_id# Опциональный параметр# page_size = 100# Опциональный параметр# filter = "test"timeouts {read = "10s"}}
Также можно указывать не все таймауты уровня ресурса и тогда они будут использовать дефолтный таймаут или таймаут переменной окружения CLOUDRU_TERRAFORM_TIMEOUT.
В логе можно поискать значение «Timeout value is:»
Пример того как это выглядить в логе:
provider.terraform-provider-cloud_2.1.1_darwin_arm64: Timeout value is: 60s
Чтобы установить бесконечный таймаут есть 2 варианта:
В случае, если не используется таймаут уровня ресурса, то можно указать через переменную окружения таким образом
CLOUDRU_TERRAFORM_TIMEOUT=0s terraform apply
Тогда дефолтный таймаут будет переопределен и таймаут не будет работать. Будет Бескнечным.
Также можно указать бесконечный таймаут уровня ресурса.
Пример:
timeouts {create = "0s"update = "0s"delete = "0s"}
Тогда для указанных операций таймаут станет бесконечным, но только в рамках этого ресурса. Даже, если установлен CLOUDRU_TERRAFORM_TIMEOUT=0s, то таймаут уровня ресурса выше по приоритету и будет учитываться именно он.
В случае бесконечного таймаута можно увидеть такое сообщение:
provider.terraform-provider-cloud_2.1.1_darwin_arm64: timeout: Deadline wasn’t set
Также в логах можной найти такое значение
provider.terraform-provider-cloud_2.1.1_darwin_arm64: Timeout value is: 0s
Мы сознательно не добавили таймаут для метода Read для ресурса, так как значение этого таймаута хранится в стейте. Если установить слишком маленькое значение, то провайдер просто не будет работать и исправить это можно будет только ручным изменением стейта.