{"componentChunkName":"component---src-templates-blog-template-js","path":"/ru/blog/introducing-the-psono-terraform-provider","result":{"data":{"markdownRemark":{"html":"<h1>Представляем провайдер Psono для Terraform</h1>\n<p>Мы рады сообщить, что бета-версия провайдера Psono для Terraform теперь доступна в публичном\n<a href=\"https://registry.terraform.io/providers/psono/psono/latest\">Terraform Registry</a>.</p>\n<p>Теперь инфраструктурные команды могут управлять отдельными ключами внутри заранее созданных записей переменных окружения Psono в рамках\nсвоего рабочего процесса Terraform. Провайдер может сохранять существующие значения, генерировать новые пароли, вращать управляемые значения, записывать\nвнешне предоставленные значения и читать секреты с помощью эфемерных ресурсов Terraform.</p>\n<h2>Секреты без их хранения в состоянии Terraform</h2>\n<p>Работа с секретами в подходе \"инфраструктура как код\" требует особого внимания. Флаг sensitive может скрыть значение из обычного вывода CLI,\nно это не гарантирует, что значение не попадёт в состояние Terraform. Провайдер Psono использует возможности записи только для чтения и\nэфемерные возможности Terraform, чтобы избежать этой проблемы, и требует Terraform версии 1.11 или новее.</p>\n<p>Провайдер поддерживает три распространённых рабочих процесса:</p>\n<ul>\n<li>Генерировать значение в Psono без возврата его через управляемый ресурс.</li>\n<li>Передавать значение через аргумент \"только для записи\", чтобы Terraform не сохранял его ни в плане, ни в состоянии.</li>\n<li>Читать существующее значение через эфемерный ресурс и передавать его только в другой эфемерный или доступный только для записи контекст.</li>\n</ul>\n<p>Это позволяет включать операции управления жизненным циклом секретов в Terraform, храня реальные значения только в Psono.</p>\n<h2>Ограниченный доступ и локальное шифрование</h2>\n<p>Провайдер использует ограниченный API-ключ Psono. Вы назначаете только те записи переменных окружения, которые нужны Terraform, и\nдаёте разрешение на чтение для всех операций. Для создания, обновления, ротации или удаления ключей дополнительно требуется разрешение запись.\nПровайдеру не нужен неограниченный API-ключ, и он не может создавать записи в хранилище, папки или хранилища данных.</p>\n<p>Шифрование и дешифрование происходят локально в провайдере. Проверку сертификатов HTTPS отключить невозможно, а\nсобственные центры сертификации могут быть добавлены через PEM CA bundle. В производственных системах всегда используйте HTTPS-URL Psono.</p>\n<h2>Начало работы</h2>\n<p>Требуется Terraform версии 1.11 или новее. Добавьте провайдер в вашу конфигурацию Terraform:</p>\n<pre><code class=\"language-hcl\">terraform {\n  required_version = \">= 1.11.0\"\n\n  required_providers {\n    psono = {\n      source  = \"psono/psono\"\n      version = \"~> 1.0\"\n    }\n  }\n}\n\nprovider \"psono\" {}\n</code></pre>\n<p>Передавайте учётные данные через переменные окружения, а не помещайте их в файлы Terraform:</p>\n<pre><code class=\"language-bash\">export PSONO_SERVER_URL='https://psono.example.com/server'\nexport PSONO_API_KEY_ID='ЗАМЕНИТЕ_НА_API_KEY_ID'\nexport PSONO_API_SECRET_KEY='ЗАМЕНИТЕ_НА_API_SECRET_KEY'\n</code></pre>\n<p>Затем инициализируйте рабочую директорию:</p>\n<pre><code class=\"language-bash\">terraform init\n</code></pre>\n<p>Terraform скачает подписанный релиз провайдера и проверит подпись его контрольной суммы.</p>\n<h2>Генерация и ротация значений</h2>\n<p>Следующий ресурс управляет <code>DB_PASSWORD</code> в существующей записи переменных окружения Psono:</p>\n<pre><code class=\"language-hcl\">resource \"psono_environment_variable\" \"database_password\" {\n  secret_id = var.psono_environment_variables_secret_id\n  name      = \"DB_PASSWORD\"\n\n  length      = 32\n  min_lower   = 4\n  min_upper   = 4\n  min_numeric = 4\n  min_special = 4\n\n  rotation_version = 1\n}\n</code></pre>\n<p>Если ключ уже существует, провайдер возьмёт его под управление без изменения значения. Если он отсутствует — провайдер сгенерирует\nи сохранит новое значение в Psono. Сгенерированное значение не возвращается управляемым ресурсом и не попадает в состояние Terraform.</p>\n<p>Увеличивайте значение <code>rotation_version</code>, когда Terraform должен сгенерировать новое значение. Это также заменит значения,\nкоторые были изначально импортированы или взяты под управление, поэтому изменения ротации следует тщательно проверять перед их применением.</p>\n<h2>Запись внешне предоставленного значения</h2>\n<p>Эфемерное значение из другого провайдера можно записать в Psono с помощью <code>value_wo</code>:</p>\n<pre><code class=\"language-hcl\">ephemeral \"random_password\" \"database\" {\n  length = 32\n}\n\nresource \"psono_environment_variable\" \"database_password\" {\n  secret_id        = var.psono_environment_variables_secret_id\n  name             = \"DB_PASSWORD\"\n  value_wo         = ephemeral.random_password.database.result\n  value_wo_version = 1\n}\n</code></pre>\n<p>Значение доступно во время выполнения Terraform, но не сохраняется в плане или состоянии. Увеличьте <code>value_wo_version</code>,\nкогда Terraform должен записать новое значение.</p>\n<h2>Безопасное удаление по умолчанию</h2>\n<p>При уничтожении управляемого ресурса его ключ в Psono по умолчанию сохраняется. Это защищает значения, которые Terraform взял под управление, но не создавал.\nУстановите <code>deletion_policy = \"Delete\"</code> только если Terraform должен явно удалять ключ из Psono при удалении или\nзамене ресурса.</p>\n<h2>Уже доступно</h2>\n<p>Провайдер является open source и доступен уже сейчас:</p>\n<ul>\n<li><a href=\"https://registry.terraform.io/providers/psono/psono/latest\">Установить провайдер из Terraform Registry</a></li>\n<li><a href=\"https://doc.psono.com/user/developer/terraform-provider.html\">Прочитать руководство по Psono Terraform Provider</a></li>\n<li><a href=\"https://gitlab.com/esaqa/psono/psono-terraform-provider\">Посмотреть исходный код на GitLab</a></li>\n</ul>\n<p>Бета-версия специально сфокусирована на записях переменных окружения и ограниченных API-ключах. Это сужает права,\nизбегает неограниченного доступа к хранилищу и обеспечивает безопасную основу для управления операционными секретами\nиз Terraform.</p>","frontmatter":{"date":"August 22, 2026","slug":"introducing-the-psono-terraform-provider","title":"Представляем провайдер Psono для Terraform","description":"Управляйте генерируемыми, доступными только для записи и эфемерными значениями в Psono прямо из Terraform, не храня секреты в состоянии Terraform.","author":"Sascha Pfeiffer","featuredImage":null}}},"pageContext":{"slug":"introducing-the-psono-terraform-provider","lang":"ru","langPathPrefix":"/ru"}},"staticQueryHashes":["2149092236","3128451518","3192060438"]}