[Документация Yandex Cloud](../../../../index.md) > [Yandex Compute Cloud](../../../index.md) > [Концепции](../../index.md) > [Группы виртуальных машин](../index.md) > [Политики](index.md) > Политика развертывания

# Политика развертывания

При создании группы виртуальных машин можно выбрать, каким образом будут развертываться ВМ в группе.

Политика развертывания представляет собой набор ограничений и определяется в YAML-файле, в ключе `deploy_policy`. Каждое ограничение задается в собственном ключе, в виде пары `ключ:значение`.

Пример записи в YAML-файле:

```yaml
...
deploy_policy:
    max_creating: 10
    max_deleting: 10
    max_unavailable: 10
    max_expansion: 0
    startup_duration: 30s
...
```

Где:

Ключ | Значение
----- | -----
`max_creating` | Максимальное количество одновременно запускаемых ВМ.<br>Допустимые значения — от 0 до 100. Значение 0 — любое количество ВМ в рамках допустимых значений.
`max_deleting` | Максимальное количество одновременно останавливаемых ВМ.<br>Допустимые значения — от 0 до 100. Значение 0 — любое количество ВМ в рамках допустимых значений.
`max_unavailable` | Максимальное количество ВМ в статусе `RUNNING`, на которое можно уменьшить целевой размер группы.<br>Допустимые значения — от 0 до 100.
`max_expansion` | Максимальное количество ВМ, на которое можно превысить целевой размер группы^1^. Если ключ `max_unavailable` не указан или равен нулю, ключу `max_expansion` должно быть установлено ненулевое значение.<br>Допустимые значения — от 0 до 100.
`startup_duration` | Время запуска ВМ в группе. ВМ начнет получать нагрузку только после того, как истечет время запуска, и будут пройдены все проверки состояния.<br>Допустимые значения — от 0 до 3600 секунд.

^1^ В дальнейшем, при приведении количества ВМ в группе к целевому значению, созданные по квоте `max_expansion` ВМ могут остаться в группе, в то время как ВМ, существовавшие в группе до этого, могут быть удалены.

## Стратегии остановки виртуальных машин {#strategy}

В Instance Groups есть две стратегии остановки ВМ при обновлении или [автоматическом масштабировании](../scale.md#auto-scale) группы: автоматическая (`PROACTIVE`) и ручная (`OPPORTUNISTIC`).

Если выбрана автоматическая стратегия, Instance Groups самостоятельно выбирает, какие ВМ остановить.

При ручной стратегии Instance Groups не останавливает ВМ, а ожидает выполнения хотя бы одного из условий:
* Пользователь [остановил](../../../operations/vm-control/vm-stop-and-start.md#stop) ВМ в сервисе Compute Cloud.
* Приложение или пользователь остановили ВМ изнутри.
* ВМ не прошла [проверку](../autohealing.md#functional-healthcheck) состояния приложения.

Например, вы создали группу ВМ с автоматическим масштабированием по [пользовательской метрике](../scale.md#custom-metrics), где метрикой является количество задач в очереди. Instance Groups создает группу ВМ, которая выполняет задачи из очереди. Как только в очереди закончились задачи, Instance Groups должен уменьшить размер группы с фактического до целевого согласно [политике масштабирования](scale-policy.md).
  * При этом, если выбрана автоматическая остановка, Instance Groups изменит целевой размер группы и уменьшит фактическое количество ВМ в группе до целевого.
  * При ручной стратегии Instance Groups изменит целевой размер группы, но не остановит ВМ до момента самостоятельной остановки или остановки пользователем.

Пример записи в YAML-файле:

```yaml
...
deploy_policy:
    strategy: OPPORTUNISTIC
...
```

Где:

Ключ | Значение
----- | -----
`strategy` | Стратегия остановки ВМ в группе.<br>Возможные значения:<ul><li>`PROACTIVE` — Instance Groups самостоятельно выбирает, какие ВМ остановить.</li><li>`OPPORTUNISTIC` — Instance Groups ожидает, когда ВМ остановятся самостоятельно или будут остановлены пользователем.</li></ul> Значение по умолчанию: `PROACTIVE`.

## Минимальные действия для обновления ВМ {#minimal-action}

По умолчанию Instance Groups при обновлении ВМ принимает решение о перезапуске или пересоздании согласно [правилам](../deploy/instance.md). Однако вы можете также указать минимальное действие для обновления ВМ самостоятельно. Оно будет выполнено даже в том случае, если того не требуют правила. Это может быть необходимо для очистки оперативной памяти при обновлении, удаления данных на дисках или повторного развертывания ВМ.

При этом правила обновления имеют приоритет перед минимальными действиями. Например, если минимальным действием выбран перезапуск, то ВМ может быть и удалена, если требуют правила.

Управление минимальным действием для обновления ВМ доступно с помощью [CLI](../../../../cli/quickstart.md) и [API](../../../api-ref/index.md).

Пример записи в YAML-файле:

```yaml
...
deploy_policy:
    minimal_action: RESTART
...
```

Где:

Ключ | Значение
----- | -----
`minimal_action` | Минимальное действие для обновления виртуальных машин. Возможные значения:<ul><li>`LIVE_UPDATE` — обновление ВМ без остановки.</li><li>`RESTART` — обновление ВМ с перезапуском.</li><li>`RECREATE` — обновление ВМ с пересозданием.</li></ul> Значение по умолчанию: `LIVE_UPDATE`.

## Примеры использования {#examples}

* [Автоматическое масштабирование группы виртуальных машин для обработки сообщений из очереди Yandex Message Queue](../../../tutorials/autoscale-monitoring.md)

#### Полезные ссылки {#see-also}

* [Политика восстановления](healing-policy.md)
* [Политика масштабирования](scale-policy.md)
* [Политика распределения](allocation-policy.md)