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 провайдера, который позволяет более тонко настраивать время выполнения операций.
Как и любой подобный механизм тонкой настройки, он требует внимательного и аккуратного использования.