Write-only аргументы
Тема дорожной карты · Terraform
Write-only аргументы — возможность Terraform 1.11, позволяющая передать секрет (пароль, токен, ключ) в управляемый ресурс, не сохраняя его ни в state, ни в plan. Это аргументы ресурса с суффиксом _wo (например, password_wo), которые можно только записать, но нельзя прочитать обратно. В отличие от эфемерных ресурсов (которые принимают только эфемерные значения), write-only аргументы принимают и эфемерные, и обычные значения. Поскольку значение нигде не хранится, Terraform не может отследить его изменение — поэтому к каждому write-only аргументу идёт парный *_wo_version (например, password_wo_version): инкремент версии сигналит провайдеру применить новое значение.
Как это работает
Пара «аргумент + версия»:
ephemeral "random_password" "db" {
length = 20
}
resource "aws_db_instance" "example" {
username = "app"
password_wo = ephemeral.random_password.db.result
password_wo_version = 1 # ++ чтобы протолкнуть новый пароль
}
Terraform передаёт password_wo провайдеру во время apply, но не пишет его в state — там остаётся только номер версии. Чтобы обновить секрет, вы меняете значение и увеличиваете password_wo_version с 1 до 2; без инкремента версии Terraform не увидит diff и ничего не применит. Поддержка — на стороне провайдера: у AWS это aws_db_instance.password_wo, aws_secretsmanager_secret_version.secret_string_wo, у Azure — azurerm_key_vault_secret.value_wo и др. Полный список ищите в документации конкретного провайдера в Registry.
Когда применять
- Пароли БД, ключи API, строки подключения, которые раньше «протекали» в state через обычные аргументы.
- Связка с эфемерными ресурсами: сгенерировать/прочитать секрет эфемерно → отдать в
_wo-аргумент. Секрет не появляется ни в одном артефакте Terraform. - Управляемая ротация секретов через инкремент
*_wo_versionв CI.
Типичные ошибки
- Забыть инкрементировать
*_wo_versionпри смене секрета — новое значение просто не применится. - Ожидать, что write-only есть у любого аргумента: поддержку добавляет провайдер, у старых ресурсов её может не быть.
- Одновременно задавать и обычный
password, иpassword_woу одного ресурса — используйте что-то одно.
Связанные понятия
Полезные ресурсы
Проверить знания (2)
Загрузка вопросов…