You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraform-provider-dynamix/wiki/1.2.1/05.02-Работа-с-таймаутами.md

6.6 KiB

Terraform провайдер DYNAMIX поддерживает тонкую настройку таймаутов выполнения запросов к платформе. Таймауты необходимы для определения максимального времени выполнения запроса. При превышении этого времени соединение рвется и запрос считается невыполненным.
Таймауты применяются при работе с resource функциями провайдера. Data source функции по-умолчанию имеют таймаут в 20 минут и изменяться не может.

Стандартные таймауты terraform

Операция Время Описание
create 20 минут Создание ресурса
read 20 минут Чтение ресурса
update 20 минут Обновление ресурса
delete 20 минут Удаление ресурса
default 20 минут Значение по умолчанию. Устанавливает значение для всех операций

Стандартные таймауты провайдера DYNAMIX

В провайдере DYNAMIX таймауты переопределены для того, чтобы уменьшить нагрузку на платформу.

Операция Время Описание
create 10 минут Создание ресурса
read 5 минут Чтение ресурса
update 5 минут Обновление ресурса
delete 5 минут Удаление ресурса
default 5 минут Значение по умолчанию. Устанавливает значение для всех операций

Установка таймаутов

Все таймауты можно установить самостоятельно для каждого ресурса.
Для этого используется блок timeouts, который имеется в каждом ресурсе провайдера. Пример:

resource "dynamix_res" "res_name" {
  timeouts {
    create = "10m"
    update = "1m"
    delete = "2m"
    read = "7m"
    #default = "15m"
  }
}

Где:

  • create - операция создания ресурса
  • read - операция чтения ресурса
  • update - операция обновления ресурса
  • delete - операция удаления ресурса
  • default - установит заданное время для всех операций

Формат установления времени

Как видно из примера выше, провайдер принимает на вход строку вида:

"<time-num><time-val>"

Где:

  • time-num - число
  • time-val - сокращенная запись значения временного отрезка.

Таблица с временными отрезками:

Отрезок Значение
n наносекунда
ms миллисекунда
s секунда
m минута
h час

Примеры:

"10m"  
"1s"  
"1h10m" 

И так далее

Работа с таймером через .tf-файл

В .tf-файле, в блоке ресурса можно задавать таймауты для операций над ресурсом, однако, при работе с таймаутом, следует помнить о правиле:
В случае изменения таймаутов в .tf-файле, операции с новыми таймаутами будут производиться только после apply/plan/destroy
То есть, если изменить таймауты и выполнить операцию, то она выполнится со старыми таймаутами, а сл. операция уже будет выполнена с новыми таймаутами.
Это объясняется тем, что значения таймаутов считываются из файла состояний .tfstate при выполнении операции, и новые значения таймаутов попадут туда только при успешно выполненной операции.

Ошибки при работе с таймаутом

context deadline exceeded

Если время таймаута слишком короткое, то можно получить сл. ошибку:

context deadline exceeded

Которая говорит, что было выполнено прерывание работы программы из-за истечения времени на операцию. Для исправления можно увеличить размер окна таймаута и выполнить успешный запрос (например, с помощью терминала), чтобы новое значения таймаутов было добавлено в .tfstate. В противном случае, файл состояния придется править в ручную, либо удалить его и импортировать ресурс для формирования .tfstate.

504 ошибка

Данная ошибка говорит о том, что сервер принудительно разорвал соединения из-за истечения времени на ответ.
В случае получения данной ошибки, обратитесь в службу технической поддержки.

Работа с таймаутами через терминал

Сл. команда выполнит операцию terraform с заданным таймаутом:

timeout <time> terraform <cmd>

Где:

  • time - время таймаута, например, 1h, 10m, и так далее
  • cmd - команда terraform, например, apply, plan и так далее

Заключение

Таймауты - мощный механизм terraform провайдера, который позволяет более тонко настраивать время выполнения операций.
Как и любой подобный механизм тонкой настройки, он требует внимательного и аккуратного использования.