From 618cd09eac32883c077849bd63c1363f669949a0 Mon Sep 17 00:00:00 2001 From: Melinda Fekete Date: Thu, 7 Nov 2024 17:56:16 +0100 Subject: [PATCH] Terraform provider docs (#8598) --- website/docs/how-to/how-to-add-sso-google.md | 2 +- website/docs/how-to/how-to-import-export.mdx | 2 +- website/docs/reference/terraform.mdx | 76 +++++++ .../using-unleash/deploy/email-service.md | 2 +- website/sidebars.ts | 188 +++++++++--------- 5 files changed, 174 insertions(+), 96 deletions(-) create mode 100644 website/docs/reference/terraform.mdx diff --git a/website/docs/how-to/how-to-add-sso-google.md b/website/docs/how-to/how-to-add-sso-google.md index 9693c2c8719e..7a495a920db4 100644 --- a/website/docs/how-to/how-to-add-sso-google.md +++ b/website/docs/how-to/how-to-add-sso-google.md @@ -1,5 +1,5 @@ --- -title: '[Deprecated] How to add SSO with Google' +title: 'How to add SSO with Google' --- :::caution Deprecation notice diff --git a/website/docs/how-to/how-to-import-export.mdx b/website/docs/how-to/how-to-import-export.mdx index 2ed1ffa0327a..24c7e90e7f41 100644 --- a/website/docs/how-to/how-to-import-export.mdx +++ b/website/docs/how-to/how-to-import-export.mdx @@ -1,5 +1,5 @@ --- -title: '[Deprecated] Import & Export' +title: 'Import & Export' --- import ApiRequest from '@site/src/components/ApiRequest' diff --git a/website/docs/reference/terraform.mdx b/website/docs/reference/terraform.mdx new file mode 100644 index 000000000000..8f2411565898 --- /dev/null +++ b/website/docs/reference/terraform.mdx @@ -0,0 +1,76 @@ +--- +title: Using Unleash through Terraform +description: "Set up and configure your Unleash instance using infastructure as code." +--- + +:::note Availability + +**Version**: `5.6+` + +::: + + +## Overview + +The [Unleash Terraform provider](https://github.com/Unleash/terraform-provider-unleash) enables you to manage and configure Unleash programmatically, leveraging infrastructure as code (IaC) for automated and scalable configuration. + +This provider is designed to help you with the **initial setup and configuration** of an instance. The provider does not support managing feature flags through Terraform. Since most [feature flags are short-lived](/topics/feature-flags/feature-flag-best-practices#7-make-flags-short-lived), we recommend managing them through the Unleash Admin UI. + +For a detailed video tutorial, check out [Managing Unleash through Terraform](https://www.youtube.com/watch?v=B4OIBC1u1ns). +For more examples of specific resources and data sources, visit the [Terraform registry](https://registry.terraform.io/providers/Unleash/unleash/latest/docs/data-sources/permission). + +## Manage Terraform access + +The permissions of the API token you use with Terraform and your Unleash [plan](https://www.getunleash.io/pricing) determine which objects Terraform can manage: +- For [Open Source](https://www.getunleash.io/pricing) and [Pro](../availability#plans), use [personal access tokens](/reference/api-tokens-and-client-keys#personal-access-tokens). +- For [Enterprise](https://www.getunleash.io/pricing), use [service accounts](/reference/service-accounts). For larger teams, we recommend multiple service accounts with different permissions and separate Terraform repositories for each team under their respective projects. + +## Resources + +### API tokens + +- `unleash_api_token`: Manage access and maintain secure communication with verified integrations. + +Example usage: +```hcl +resource "unleash_api_token" "client_token" { + token_name = "client_token" + type = "client" + expires_at = "2024-12-31T23:59:59Z" + project = "default" + environment = "development" +} +``` + +### Projects + +- `unleash_project`: Create and manage projects. +- `unleash_project_access`: Assign access roles and users to specific project resources. + +### Users and roles + +- `unleash_role`: Define permissions systematically. +- `unleash_user`: Automate user management. Use `send_email = true` to generate an invitation link. + +### Service accounts + +- `unleash_service_account`: Define and manage service accounts for secure automated access. +- `unleash_service_account_token`: Generate tokens associated with service accounts. + +### Single sign-on protocols + +- `unleash_oidc`: Manage your [OpenID Connect configuration](../how-to/how-to-add-sso-open-id-connect). +- `unleash_saml`: Manage your [SAML configuration](../how-to/sso). + +For example usage and schemas, visit the resources documentation of the [Unleash Terraform provider](https://github.com/Unleash/terraform-provider-unleash/tree/main/docs/resources). + +## Data sources + +You can use the following data sources to fetch resources from Unleash: + +- `unleash_project` +- `unleash_user` +- `unleash_role` +- `unleash_permission` + +For example usage and schemas, visit the data sources documentation of the [Unleash Terraform provider](https://github.com/Unleash/terraform-provider-unleash/tree/main/docs/data-sources). \ No newline at end of file diff --git a/website/docs/using-unleash/deploy/email-service.md b/website/docs/using-unleash/deploy/email-service.md index 1778d70394a4..edfc3dae0cec 100644 --- a/website/docs/using-unleash/deploy/email-service.md +++ b/website/docs/using-unleash/deploy/email-service.md @@ -1,5 +1,5 @@ --- -title: Email service +title: Email Service --- :::note Availability diff --git a/website/sidebars.ts b/website/sidebars.ts index 36891126a7a0..e0e6d3a57d2b 100644 --- a/website/sidebars.ts +++ b/website/sidebars.ts @@ -445,7 +445,7 @@ const sidebars: SidebarsConfig = { ], }, { - label: 'Integrations', + label: 'Integrations and automation', type: 'category', link: { type: 'doc', id: 'reference/integrations/index' }, items: [ @@ -461,9 +461,100 @@ const sidebars: SidebarsConfig = { ], }, 'reference/integrations/slack-app', - 'reference/integrations/slack', 'reference/integrations/teams', 'reference/integrations/webhook', + { + type: 'doc', + label: 'Terraform', + id: 'reference/terraform', + }, + ], + }, + { + type: 'category', + link: { + type: 'generated-index', + title: 'Self-Hosting Unleash', + description: + 'All you need to learn how to deploy and manage your own Unleash instance.', + slug: '/using-unleash/deploy', + }, + label: 'Self-hosting', + items: [ + 'using-unleash/deploy/getting-started', + 'using-unleash/deploy/configuring-unleash', + 'using-unleash/deploy/database-setup', + 'using-unleash/deploy/database-backup', + 'using-unleash/deploy/email-service', + 'using-unleash/deploy/google-auth-hook', + 'using-unleash/deploy/upgrading-unleash', + 'using-unleash/deploy/securing-unleash', + 'using-unleash/deploy/license-keys', + ], + }, + { + label: 'Single sign-on', + items: [ + 'how-to/how-to-add-sso-open-id-connect', + 'how-to/how-to-add-sso-saml', + 'how-to/how-to-add-sso-saml-keycloak', + 'how-to/how-to-add-sso-azure-saml', + 'how-to/how-to-setup-sso-keycloak-group-sync', + ], + type: 'category', + link: { + type: 'generated-index', + title: 'How-to: Single sign-on', + description: 'Single sign-on guides.', + slug: '/how-to/sso', + }, + }, + { + label: 'Automatic provisioning', + items: [ + 'how-to/how-to-setup-provisioning-with-okta', + 'how-to/how-to-setup-provisioning-with-entra', + ], + type: 'category', + link: { + type: 'generated-index', + title: 'How to: Provisioning', + description: 'Provisioning how-to guides.', + slug: '/how-to/provisioning', + }, + }, + { + type: 'category', + label: 'Unleash Edge', + collapsed: true, + link: { + type: 'doc', + id: 'generated/unleash-edge', + }, + items: [ + 'generated/unleash-edge/concepts', + 'generated/unleash-edge/deploying', + ], + }, + 'generated/unleash-proxy', + { + label: 'Troubleshooting', + type: 'category', + link: { + type: 'generated-index', + title: 'How-to: troubleshooting', + description: + 'Troubleshooting common problems. If you want to suggest new items, please phrase the title as a concrete problem', + slug: '/using-unleash/troubleshooting', + }, + items: [ + 'using-unleash/troubleshooting/cors', + 'using-unleash/troubleshooting/https', + 'using-unleash/troubleshooting/email-service', + 'using-unleash/troubleshooting/feature-not-available', + 'using-unleash/troubleshooting/flag-exposure', + 'using-unleash/troubleshooting/flag-not-returned', + 'using-unleash/troubleshooting/flag-abn-test-unexpected-result', ], }, { @@ -539,7 +630,6 @@ const sidebars: SidebarsConfig = { slug: '/how-to/env', }, items: [ - 'how-to/how-to-import-export', 'how-to/how-to-environment-import-export', ], }, @@ -560,97 +650,9 @@ const sidebars: SidebarsConfig = { 'Users and permission how-to guides.', slug: '/how-to/users-and-permissions', }, - }, - { - label: 'Single sign-on SSO', - items: [ - 'how-to/how-to-add-sso-open-id-connect', - 'how-to/how-to-add-sso-saml', - 'how-to/how-to-add-sso-saml-keycloak', - 'how-to/how-to-add-sso-azure-saml', - 'how-to/how-to-setup-sso-keycloak-group-sync', - 'how-to/how-to-add-sso-google', - ], - type: 'category', - link: { - type: 'generated-index', - title: 'How-to: Single sign-on', - description: 'Single sign-on guides.', - slug: '/how-to/sso', - }, - }, - { - label: 'Automatic provisioning', - items: [ - 'how-to/how-to-setup-provisioning-with-okta', - 'how-to/how-to-setup-provisioning-with-entra', - ], - type: 'category', - link: { - type: 'generated-index', - title: 'How to: Provisioning', - description: 'Provisioning how-to guides.', - slug: '/how-to/provisioning', - }, - }, + } ], - }, - { - type: 'category', - link: { - type: 'generated-index', - title: 'Self-Hosting Unleash', - description: - 'All you need to learn how to deploy and manage your own Unleash instance.', - slug: '/using-unleash/deploy', - }, - label: 'Self-Hosting Unleash', - items: [ - 'using-unleash/deploy/getting-started', - 'using-unleash/deploy/configuring-unleash', - 'using-unleash/deploy/database-setup', - 'using-unleash/deploy/database-backup', - 'using-unleash/deploy/email-service', - 'using-unleash/deploy/google-auth-hook', - 'using-unleash/deploy/upgrading-unleash', - 'using-unleash/deploy/securing-unleash', - 'using-unleash/deploy/license-keys', - ], - }, - { - label: 'Troubleshooting', - type: 'category', - link: { - type: 'generated-index', - title: 'How-to: troubleshooting', - description: - 'Troubleshooting common problems. If you want to suggest new items, please phrase the title as a concrete problem', - slug: '/using-unleash/troubleshooting', - }, - items: [ - 'using-unleash/troubleshooting/cors', - 'using-unleash/troubleshooting/https', - 'using-unleash/troubleshooting/email-service', - 'using-unleash/troubleshooting/feature-not-available', - 'using-unleash/troubleshooting/flag-exposure', - 'using-unleash/troubleshooting/flag-not-returned', - 'using-unleash/troubleshooting/flag-abn-test-unexpected-result', - ], - }, - { - type: 'category', - label: 'Unleash Edge', - collapsed: true, - link: { - type: 'doc', - id: 'generated/unleash-edge', - }, - items: [ - 'generated/unleash-edge/concepts', - 'generated/unleash-edge/deploying', - ], - }, - 'generated/unleash-proxy', + }, ], }, {