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.

Когда применять

Типичные ошибки

Связанные понятия

Полезные ресурсы

Проверить знания (2)

Загрузка вопросов…