Рабочие пространства
Каждая конфигурация OpenTofu связана с бэкендом, который определяет, как OpenTofu выполняет операции и где хранит постоянные данные, например состояние.
Постоянные данные, хранящиеся в бэкенде, относятся к рабочему пространству. Изначально в бэкенде есть только одно рабочее пространство, содержащее одно состояние OpenTofu, связанное с этой конфигурацией. Некоторые бэкенды поддерживают несколько именованных рабочих пространств, что позволяет связать несколько состояний с одной конфигурацией. У конфигурации по-прежнему только один бэкенд, но вы можете развернуть несколько отдельных экземпляров этой конфигурации, не настраивая новый бэкенд и не меняя учетные данные для аутентификации.
Бэкенды, поддерживающие несколько рабочих пространств
Следующие бэкенды поддерживают несколько рабочих пространств:
Использование рабочих пространств
Рабочие пространства не подходят для разделения систем на компоненты или развертываний, требующих отдельных учетных данных и средств управления доступом. Подробную информацию и рекомендуемые альтернативы см. в разделе Варианты использования документации OpenTofu CLI.
OpenTofu начинает работу с единственного рабочего пространства по умолчанию с именем default, которое нельзя удалить. Если вы не создавали новое рабочее пространство, вы используете рабочее пространство по умолчанию в рабочем каталоге OpenTofu.
При запуске tofu plan в новом рабочем пространстве OpenTofu не обращается к существующим ресурсам в других рабочих пространствах. Эти ресурсы по-прежнему физически существуют, но для управления ими необходимо переключиться на соответствующее рабочее пространство.
Полную информацию о создании и использовании рабочих пространств см. в документации по рабочим пространствам OpenTofu CLI.
Интерполяция текущего рабочего пространства
В конфигурации OpenTofu можно указать имя текущего рабочего пространства с помощью последовательности интерполяции ${terraform.workspace}. Ее можно использовать везде, где разрешены интерполяции.
Ссылка на текущее рабочее пространство полезна для изменения поведения в зависимости от рабочего пространства. Например, для рабочих пространств, отличных от рабочего пространства по умолчанию, может быть полезно запускать кластеры меньшего размера. Например:
resource "aws_instance" "example" {
count = "${terraform.workspace == "default" ? 5 : 1}"
# ... other arguments
}Еще один популярный вариант использования — использовать имя рабочего пространства при именовании или добавлении тегов:
resource "aws_instance" "example" {
tags = {
Name = "web - ${terraform.workspace}"
}
# ... other arguments
}
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/state/workspaces/