4.9.6 and 4.10.2
This commit is contained in:
100
4.9.6/05.02-Работа-с-таймаутами.md
Normal file
100
4.9.6/05.02-Работа-с-таймаутами.md
Normal file
@@ -0,0 +1,100 @@
|
||||
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 провайдера, который позволяет более тонко настраивать время выполнения операций.
|
||||
Как и любой подобный механизм тонкой настройки, он требует внимательного и аккуратного использования.
|
||||
Reference in New Issue
Block a user