{"componentChunkName":"component---src-templates-blog-template-js","path":"/uk/blog/introducing-the-psono-terraform-provider","result":{"data":{"markdownRemark":{"html":"<h1>Знайомство з Terraform-провайдером Psono</h1>\n<p>Ми раді оголосити, що бета-версія Terraform-провайдера Psono вже доступна у відкритому\n<a href=\"https://registry.terraform.io/providers/psono/psono/latest\">Terraform Registry</a>.</p>\n<p>Тепер інфраструктурні команди можуть керувати окремими ключами у вже створених записах Psono Environment Variables у рамках\nсвого робочого процесу Terraform. Провайдер дозволяє зберігати існуючі значення, генерувати нові паролі, змінювати (ротувати) керовані значення, зберігати зовнішньо надані значення та читати секрети через ефемерні ресурси Terraform.</p>\n<h2>Секрети без їх зберігання у стані Terraform</h2>\n<p>Обробка секретів у інфраструктурному коді потребує особливої уваги. Позначка sensitive приховує значення у стандартному CLI-виводі,\nале це не обов'язково захищає значення від потрапляння у стан Terraform. Провайдер Psono використовує можливості Terraform для роботи у режимах «тільки запис» і ефемерності, щоб уникнути цієї проблеми, і вимагає Terraform 1.11 або новішої версії.</p>\n<p>Провайдер підтримує три основні сценарії роботи:</p>\n<ul>\n<li>Згенерувати значення у Psono без його повернення через керований ресурс.</li>\n<li>Надати значення через аргумент тільки для запису (write-only), щоб Terraform не записував його у план чи стан.</li>\n<li>Отримати існуюче значення через ефемерний ресурс та передати його лише в інший ефемерний або тільки для запису контекст.</li>\n</ul>\n<p>Це дозволяє включати операції з життєвим циклом секретів у Terraform, зберігаючи самі значення безпосередньо в Psono.</p>\n<h2>Обмежений доступ і локальне шифрування</h2>\n<p>Провайдер використовує обмежений API-ключ Psono. Ви обираєте лише ті записи Environment Variables, до яких потрібен доступ Terraform, і надаєте дозвіл на читання для всіх операцій. Для створення, оновлення, ротації або видалення ключів потрібен також дозвіл на запис.\nПровайдер не потребує безмежного API-ключа і не може створювати записи сховища, папки чи сховища даних.</p>\n<p>Шифрування та розшифрування виконуються локально у провайдері. Вимкнути перевірку SSL-сертифікатів неможливо, а приватні центри сертифікації можна додавати через PEM CA bundle. Для продуктивних систем слід завжди використовувати HTTPS-адресу 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='REPLACE_WITH_API_KEY_ID'\nexport PSONO_API_SECRET_KEY='REPLACE_WITH_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 Environment Variables:</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>Якщо ключ вже існує, провайдер підхоплює його без зміни значення. Якщо не існує — генерує і зберігає нове значення в Psono. Згенероване значення не повертається керованим ресурсом і не потрапляє у стан Terraform.</p>\n<p>Змінюйте <code>rotation_version</code>, якщо потрібно згенерувати нове значення. Це також замінює значення, які були імпортовані або підхоплені, тож такі ротації слід переглядати перед застосуванням.</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>, якщо потрібно записати нове значення.</p>\n<h2>Безпечне видалення за замовчуванням</h2>\n<p>При знищенні керованого ресурсу ключ у Psono за замовчуванням зберігається. Це захищає значення, які були підхоплені Terraform, але не створені ним. Встановіть <code>deletion_policy = \"Delete\"</code> тільки якщо дійсно потрібно видаляти ключ із Psono під час знищення чи заміни ресурсу.</p>\n<h2>Доступно вже зараз</h2>\n<p>Провайдер є відкритим ПЗ та вже доступний:</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\">Прочитайте гайд щодо Terraform Provider для Psono</a></li>\n<li><a href=\"https://gitlab.com/esaqa/psono/psono-terraform-provider\">Перегляньте вихідний код на GitLab</a></li>\n</ul>\n<p>Бета-версія спеціально зосереджена на entries типу Environment Variables та обмежених API-ключах. Це обмежує рівень дозволів, уникає безконтрольного доступу до сховища і забезпечує надійну та практичну основу для безпечного управління операційними секретами з Terraform.</p>","frontmatter":{"date":"August 22, 2026","slug":"introducing-the-psono-terraform-provider","title":"Знайомство з Terraform-провайдером Psono","description":"Керуйте згенерованими, тільки для запису і ефемерними значеннями в Psono прямо з Terraform без зберігання секретів у стані Terraform.","author":"Sascha Pfeiffer","featuredImage":null}}},"pageContext":{"slug":"introducing-the-psono-terraform-provider","lang":"uk","langPathPrefix":"/uk"}},"staticQueryHashes":["2149092236","3128451518","3192060438"]}