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-decort/wiki/4.7.0/05.02-Работа-с-таймаутами.md

101 lines
6.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Terraform провайдер DECORT поддерживает тонкую настройку таймаутов выполнения запросов к платформе. Таймауты необходимы для определения максимального времени выполнения запроса. При превышении этого времени соединение рвется и запрос считается невыполненным.
Таймауты применяются при работе с _resource_ функциями провайдера. _Data source_ функции по-умолчанию имеют таймаут в 20 минут и изменяться не может.
## Стандартные таймауты terraform
| Операция | Время | Описание |
| --- | --- | --- |
| create | 20 минут | Создание ресурса |
| read | 20 минут | Чтение ресурса |
| update | 20 минут | Обновление ресурса |
| delete | 20 минут | Удаление ресурса |
| default | 20 минут | Значение по умолчанию. Устанавливает значение для всех операций |
## Стандартные таймауты провайдера DECORT
В провайдере DECORT таймауты переопределены для того, чтобы уменьшить нагрузку на платформу.
| Операция | Время | Описание |
| --- | --- | --- |
| create | 10 минут | Создание ресурса |
| read | 5 минут | Чтение ресурса |
| update | 5 минут | Обновление ресурса |
| delete | 5 минут | Удаление ресурса |
| default | 5 минут | Значение по умолчанию. Устанавливает значение для всех операций |
## Установка таймаутов
Все таймауты можно установить самостоятельно для каждого ресурса.
Для этого используется блок _timeouts_, который имеется в каждом ресурсе провайдера.
Пример:
```terraform
resource "decort_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 с заданным таймаутом:
```bash
timeout <time> terraform <cmd>
```
Где:
- time - время таймаута, например, 1h, 10m, и так далее
- cmd - команда terraform, например, apply, plan и так далее
## Заключение
Таймауты - мощный механизм terraform провайдера, который позволяет более тонко настраивать время выполнения операций.
Как и любой подобный механизм тонкой настройки, он требует внимательного и аккуратного использования.