diff --git a/content/terraform-docs-common/data/cloud-docs-nav-data.json b/content/terraform-docs-common/data/cloud-docs-nav-data.json index 2756fa112b..86b4952537 100644 --- a/content/terraform-docs-common/data/cloud-docs-nav-data.json +++ b/content/terraform-docs-common/data/cloud-docs-nav-data.json @@ -1,11 +1,11 @@ [ { "heading": "HCP Terraform" }, { "title": "Overview", "path": "" }, - { "title": "Plans and Features", + { "title": "Plans and Features", "routes": [ { "title": "Overview", - "path": "overview" + "path": "overview" }, { "title": "Estimate HCP Terraform Cost", @@ -359,8 +359,8 @@ "routes": [ {"title": "Overview","path": "users-teams-organizations/organizations"}, { - "title": "Manage reserved tag keys", - "path": "users-teams-organizations/organizations/manage-reserved-tags" + "title": "Manage reserved tag keys", + "path": "users-teams-organizations/organizations/manage-reserved-tags" }, { "title": "VCS Status Checks", "path": "users-teams-organizations/organizations/vcs-status-checks" }, { "title": "Automatically cancel plan-only runs", "path": "users-teams-organizations/organizations/vcs-speculative-plan-management" } @@ -493,6 +493,25 @@ "title": "Configuration Designer", "path": "registry/design" } + ] + }, + { "title": "Public Registry Namespaces", "routes": [ + { + "title": "Overview", + "path": "public-namespace" + }, + { + "title": "Create or claim a namespace", + "path": "public-namespace/create_or_claim" + }, + { + "title": "Manage namespaces", + "path": "public-namespace/manage" + }, + { + "title": "Manage namespace artifacts", + "path": "public-namespace/artifacts" + } ] }, { @@ -509,13 +528,13 @@ ] }, { - "title": "Policy enforcement", + "title": "Policy Enforcement", "routes": [ - { - "title": "Overview", - "path": "policy-enforcement" + { + "title": "Overview", + "path": "policy-enforcement" }, - { + { "title": "Define policies", "routes": [ { @@ -529,8 +548,8 @@ { "title": "OPA policies", "path": "policy-enforcement/define-policies/opa" - } - ] + } + ] }, { "title": "Create and manage policy sets", @@ -552,7 +571,7 @@ { "title": "Run pre-written Sentinel policies", "path": "policy-enforcement/prewritten-sentinel" - }, + }, { "title": "Test Sentinel policies", "path": "policy-enforcement/test-sentinel" @@ -581,33 +600,33 @@ "title": "Overview", "path": "policy-enforcement/import-reference" }, - { - "title": "tfconfig", - "path": "policy-enforcement/import-reference/tfconfig" + { + "title": "tfconfig", + "path": "policy-enforcement/import-reference/tfconfig" }, { "title": "tfconfig/v2", "path": "policy-enforcement/import-reference/tfconfig-v2" }, - { - "title": "tfplan", - "path": "policy-enforcement/import-reference/tfplan" + { + "title": "tfplan", + "path": "policy-enforcement/import-reference/tfplan" }, { "title": "tfplan/v2", "path": "policy-enforcement/import-reference/tfplan-v2" }, - { - "title": "tfstate", - "path": "policy-enforcement/import-reference/tfstate" + { + "title": "tfstate", + "path": "policy-enforcement/import-reference/tfstate" }, { "title": "tfstate/v2", "path": "policy-enforcement/import-reference/tfstate-v2" }, - { - "title": "tfrun", - "path": "policy-enforcement/import-reference/tfrun" + { + "title": "tfrun", + "path": "policy-enforcement/import-reference/tfrun" } ] } @@ -626,7 +645,7 @@ "title": "Integrations", "routes": [ { - "title": "Overview", + "title": "Overview", "path": "integrations" }, { @@ -687,7 +706,7 @@ "title": "Service Graph Connector for Terraform", "routes": [ { - "title": "Overview", + "title": "Overview", "path": "integrations/service-now/service-graph" }, { diff --git a/content/terraform-docs-common/data/docs-nav-data.json b/content/terraform-docs-common/data/docs-nav-data.json index 3e7431ae81..5db044c819 100644 --- a/content/terraform-docs-common/data/docs-nav-data.json +++ b/content/terraform-docs-common/data/docs-nav-data.json @@ -15,6 +15,36 @@ "title": "Integration Program", "path": "partnerships" }, - { "title": "Terraform Tools", "path": "terraform-tools" }, + { + "title": "Terraform Tools", + "routes": [ + { + "title": "Overview", + "path": "tools" + }, + { + "title": "Terraform MCP server", + "badge": { + "text": "BETA", + "type": "outlined", + "color": "neutral" + }, + "routes": [ + { + "title": "Overview", + "path": "tools/mcp-server" + }, + { + "title": "Deploy server", + "path": "tools/mcp-server/deploy" + }, + { + "title": "Prompt model", + "path": "tools/mcp-server/prompt" + } + ] + } + ] + }, { "title": "Glossary", "path": "glossary" } ] diff --git a/content/terraform-docs-common/docs/cloud-docs/api-docs/workspaces.mdx b/content/terraform-docs-common/docs/cloud-docs/api-docs/workspaces.mdx index 4ae065a1e6..0a1c7f8263 100644 --- a/content/terraform-docs-common/docs/cloud-docs/api-docs/workspaces.mdx +++ b/content/terraform-docs-common/docs/cloud-docs/api-docs/workspaces.mdx @@ -175,12 +175,10 @@ _With Key/Value Tags_ "type": "workspaces", "relationships": { "tag-bindings": { - { "data": [{ "type": "tag-bindings", "attributes": { "key": "env", "value": "test"} }] - } } } } diff --git a/content/terraform-docs-common/docs/cloud-docs/migrate/tf-migrate/index.mdx b/content/terraform-docs-common/docs/cloud-docs/migrate/tf-migrate/index.mdx index 128a3d847e..8d06376913 100644 --- a/content/terraform-docs-common/docs/cloud-docs/migrate/tf-migrate/index.mdx +++ b/content/terraform-docs-common/docs/cloud-docs/migrate/tf-migrate/index.mdx @@ -29,7 +29,7 @@ If your Terraform files are stored in GitHub, you must configure an API token th If your Terraform files are stored in GitLab Cloud, you must configure an API token that meets the following requirements: -- The token must be a personal access token. Refer to the [GitHub documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) for additional information. +- The token must be a personal access token. Refer to the [GitLab documentation](https://docs.gitlab.com/user/profile/personal_access_tokens) for additional information. - The token must be have `read_repository` and `write_repository` scopes. ## Install @@ -101,7 +101,6 @@ To configure your API token, set the `TF_GIT_PAT_TOKEN` environment variable $ export TF_GIT_PAT_TOKEN= ``` - ## Supported backends The `tf-migrate` tool supports migrating state from the following backends to HCP Terraform or Terraform Enterprise: @@ -119,6 +118,20 @@ The `tf-migrate` tool supports migrating state from the following backends to HC `tf-migrate` does not support migrating state from an existing `cloud` integration or `remote` backend. +## Supported workspace workflows + +Versions 1.1.0 and newer of `tf-migrate` can create CLI- or VCS-driven HCP Terraform workspaces. + +The `tf-migrate` tool will only prompt you to create a VCS-driven workspace if you meet the following requirements: + +- Your local configuration is a Git repository. +- Your local Git repository has either GitHub or GitLab configured as a remote. +- Your HCP Terraform organization has at least one VCS OAuth connection configured for GitHub or GitLab. + +If your HCP Terraform organization has more than one VCS connection configured, `tf-migrate` will ask you to choose which VCS connection to use. + +If your local configuration does not meet all of the above requirements, `tf-migrate` automatically creates a CLI-driven workspace instead. + ## Enable logging You can enable detailed logging by setting the `TF_MIGRATE_ENABLE_LOG` environment variable to `true`. When you enable this setting, `tf-migrate` writes the logs to the following locations, depending on your operating system: diff --git a/content/terraform-docs-common/docs/cloud-docs/migrate/tf-migrate/reference/prepare.mdx b/content/terraform-docs-common/docs/cloud-docs/migrate/tf-migrate/reference/prepare.mdx index d695179f99..423c1a39f4 100644 --- a/content/terraform-docs-common/docs/cloud-docs/migrate/tf-migrate/reference/prepare.mdx +++ b/content/terraform-docs-common/docs/cloud-docs/migrate/tf-migrate/reference/prepare.mdx @@ -21,6 +21,7 @@ The `tf-migrate prepare` command prompts you for the following information: - The HCP Terraform or Terraform Enterprise organization to migrate your state to. - If you would like to create a new branch named `hcp-migrate-` where `` is the name of the branch you currently have checked out. - If you would like it to automatically create a pull request with the updated code change when the migration is complete. +- If you would like to create a CLI or VCS-driven workspace. Refer to [supported workspace workflows](/terraform/cloud-docs/migrate/tf-migrate#supported-workspace-workflows) for the requirements your configuration must meet to support a VCS-driven workspace. The `tf-migrate prepare` command generates a new Terraform configuration in the `_hcp-migrate-configs` directory to perform the migration. This configuration creates the following resources: @@ -29,7 +30,7 @@ The `tf-migrate prepare` command generates a new Terraform configuration in the - A new local git branch if you responded to the prompt to create a new branch with `yes`. - A new pull request in the remote git repository if you responded to the prompt to create a pull request with `yes`. -The `tf-migrate` CLI tool adds the generated configuration to the `.gitignore` file so that the configuration is not committed to source control. +The `tf-migrate` tool adds the generated configuration to the `.gitignore` file so that the configuration is not committed to source control. The `tf-migrate` tool creates the following structure in HCP Terraform or Terraform Enterprise depending on your local configuration: @@ -61,6 +62,22 @@ $ tf-migrate prepare └────────────────────────────┘ Enter the name of the HCP Terraform organization to migrate to: my-org-1 ✓ You have selected organization my-org-1 for migration + +Current repository was found on github.com. Do you want to create VCS-driven workspaces ... ? + +Enter a value: yes + +✓ Found 4 VCS providers +┌────────────────────────────┬──────────────────┬─────────────────┐ +│ Available VCS Providers │ Service Provider │ OAuth Client ID │ +├────────────────────────────┤──────────────────┤─────────────────┤ +│ github-dev │ GitHub │ oc-ABC123DEF456 │ +│ github-internal │ GitHub │ oc-GHI789JKL012 │ +└───────────────────────────────────────────────┴─────────────────┘ + +Enter the OAuth client ID of the VCS provider from the above list to create the VCS-driven workspace: oc-ABC123DEF456 + +✓ You have selected VCS provider GitHub for migration ✓ Found 2 directories with Terraform files ┌────────────────────────────────┐ │ Terraform File Directories │ diff --git a/content/terraform-docs-common/docs/cloud-docs/public-namespace/artifacts.mdx b/content/terraform-docs-common/docs/cloud-docs/public-namespace/artifacts.mdx new file mode 100644 index 0000000000..a6daee7f92 --- /dev/null +++ b/content/terraform-docs-common/docs/cloud-docs/public-namespace/artifacts.mdx @@ -0,0 +1,97 @@ +--- +page_title: Manage namespace artifacts +description: Learn to manage a public namespace’s available modules, and providers. +tfc_only: true +--- + +# Manage namespace artifacts + +Namespaces let you connect a GitHub account to an HCP Terraform organization, letting organization members collectively manage that GitHub account’s existing and future public registry artifacts. + + + +Namespaces do not support publishing or managing [policy libraries](/terraform/registry/policy-libraries/publishing) in the public registry. To publish or manage policy libraries with a namespace, continue to use the [existing registry workflows](/terraform/registry/policy-libraries/publishing#publishing-to-the-registry). + + + +## Requirements + +The following permissions are necessary to manage a namespace's artifacts: +- Organization owners or members with [**Manage public modules** permissions](/terraform/cloud-docs/users-teams-organizations/permissions#manage-public-registry) can manage modules in the public registry +- Organization owners or members with [**Manage public providers** permissions](/terraform/cloud-docs/users-teams-organizations/permissions#manage-public-registry) can manage providers in the public registry + +## Publish artifacts + +You can publish new modules and providers to the public registry under your organization’s claimed namespace. The following workflow should be familiar to existing public registry users: + +1. Set up a GitHub repository following the conventions and instructions outlined for the type of artifact you want to publish. + - For [modules](/terraform/registry/modules/publish), ensure your repository meets the [requirements](/terraform/registry/modules/publish#requirements). + - For [providers](/terraform/registry/providers/publishing), follow all of the steps up to the [Publishing to the Registry](/terraform/registry/providers/publishing#publishing-to-the-registry) section. + - If you have not installed the [Terraform Cloud GitHub App](/terraform/cloud-docs/vcs/github-app) globally in your GitHub account, install the app in the repository you want to publish. +1. Sign in to [HCP Terraform](https://app.terraform.io/) and navigate to your organization, then select **Registry** in the sidebar, then **Public namespaces** and select the namespace you want to publish from. +1. Click **Publish** and select the type of artifact, provider or module, you want to publish. +1. Select the repository you want to publish. +1. If you are publishing a provider, choose a **Category.** +1. Check the box to agree to the terms of service. +1. Click **Publish provider** or **Publish module.** + +HCP Terraform then displays a list of all the versions of your provider or module currently in your repository, and the status of each version that the public registry creates. If you navigate away from this page before processing is complete, it continues in the background. + +## Publish new artifact versions + +You can create new versions of public registry artifacts using the same workflow as individual GitHub accounts. Add a properly formatted tag for modules, or release for providers, to your artifact's GitHub repository. GitHub notifies HCP Terraform that a new version or release is available and instructs the public registry to create a new version. + +Once the public registry creates the new version it appears in your namespace in HCP Terraform. You can view artifact versions by clicking the ellipsis **…** next to an artifact and selecting **View version history**. New versions are also visible on your artifact's page in the public registry. + +If the new version creates errors, a notification appears on your organization's **Public namespaces** page. The notification includes an error, and after you fix the problem we recommend [creating a new tag or release](/terraform/registry/faq#how-do-i-correct-bugs-in-published-versions). + +## View artifacts + +On the **Public namespaces** page, you can click the ellipsis **…** next to an artifact to list the available actions you can take on that artifact: + +- **View in public registry** links to the artifact’s page on [`https://registry.terraform.io`](https://registry.terraform.io). +- **View downloads** has the download metrics for the selected artifact. + - View the number of times users have downloaded multiple versions, or select a single version to view the number of times users have downloaded it. + - You can also download a CSV file that summarizes the monthly downloads of each artifact version. +- **View version history** lists the artifact's published versions. +- **Add to private library** adds the artifact to your organization’s [private registry](/terraform/cloud-docs/registry). + +## Delete artifacts or artifact versions + +On the **Public namespaces** page, you can delete modules, providers, and module and provider versions if you have the [correct permissions](#requirements) and an artifact meets specific deletion requirements. + +### Deletion requirements + +To delete a provider, module, or a provider or module version, one of the following must be true: + +- Someone published the artifact less than 48 hours ago. +- No version of the artifact was downloaded by users more than 100 times. + +### Delete a module or provider + +If your provider or module meets [the deletion requirements](#deletion-requirements), you delete it by doing the following: + +- Clicking on the ellipsis **…** next to the artifact and choosing **Delete.** +- Confirm by entering `delete` and click **Delete.** + +### Delete a module or provider version + +If your provider or module meets [the deletion requirements](#deletion-requirements), you delete a version by doing the following: + +- Clicking on the ellipsis **…** next to the artifact and choosing to **Delete version.** +- Entering the exact version of the provider or module to delete. +- Confirm by entering `delete` and click **Delete version.** + +## Resync artifacts + +Resyncing an artifact checks for discrepancies between the versions of an artifact on GitHub and the versions available within the public registry. Resyncing attempts to reconcile any differences by changing versions available in the public registry to match GitHub. + +If an artifact version exists in GitHub but not in the registry, HCP Terraform attempts to create new versions in the registry. If an artifact version exists in the registry but not in GitHub, HCP Terraform deletes the registry versions that [meet the deletion requirements](#deletion-requirements). + +To resync an artifact: + +1. Click the ellipsis **…** next to the artifact you want to resync. +1. Select **Resync**. +1. HCP Terraform lists the versions it intends to create or delete, click **Resync** to confirm. + +You can then see the public registry's progress as it performs each operation. If you navigate away from this page before processing is complete it continues in the background diff --git a/content/terraform-docs-common/docs/cloud-docs/public-namespace/create_or_claim.mdx b/content/terraform-docs-common/docs/cloud-docs/public-namespace/create_or_claim.mdx new file mode 100644 index 0000000000..3e0f5e867f --- /dev/null +++ b/content/terraform-docs-common/docs/cloud-docs/public-namespace/create_or_claim.mdx @@ -0,0 +1,48 @@ +--- +page_title: Create or claim namespaces in HCP Terraform +description: Create a new namespace or claim an existing one to allow organization members to collectively manage that namespace's public registry artifacts. +tfc_only: true +--- + +# Create or claim a namespace + +Organizations can create or claim a GitHub account’s public registry namespace to allow its members to manage the public registry artifacts in that account. + +When an organization claims a namespace, the only way to manage that claimed namespace is through HCP Terraform, meaning you can no longer manage that namespace through the [public registry](https://registry.terraform.io/). + + + +Namespaces do not support publishing or managing [policy libraries](/terraform/registry/policy-libraries/publishing) in the public registry. To publish or manage policy libraries, continue to use the [existing registry workflows](/terraform/registry/policy-libraries/publishing#publishing-to-the-registry). + + + + +## Requirements + +You must meet the following requirements to claim a namespace for an organization: + +* Be a member of the [owners](/terraform/cloud-docs/users-teams-organizations/permissions#organization-owners) team in your HCP Terraform organization. +* If the namespace you want to claim has existing public registry artifacts, you must: + * Have `write` access to each artifact’s corresponding repository. + * Each repository must have the [Terraform Cloud GitHub App](/terraform/cloud-docs/vcs/github-app) installed. + +### Install the GitHub App + +You must install the [Terraform Cloud GitHub App](/terraform/cloud-docs/vcs/github-app) into the GitHub account with the namespace you want to claim. To install a GitHub app, you must own your account or receive administrator approval for your [organization](https://docs.github.com/en/organizations/collaborating-with-groups-in-organizations/about-organizations#organizations-and-enterprise-accounts) account. + +During the Terraform Cloud GitHub App installation process, you can choose to install the app in specific repositories or globally in every repository in your account. We recommend installing the Terraform Cloud GitHub App globally into every repository in your account to simplify claiming a namespace with existing public registry artifacts and publishing future artifacts. + +## Workflow + +To create or claim a namespace: +1. Sign in to [HCP Terraform](https://app.terraform.io/) and navigate to the organization where you want to create or claim a namespace. +1. In the sidebar navigate to **Registry**, then **Public namespaces**. +1. Click **New Namespace**. +1. HCP Terraform lists accounts where you installed the [Terraform Cloud GitHub App](/terraform/cloud-docs/vcs/github-app). Choose the account you want to create or claim the namespace of. +1. After selecting an account, HCP Terraform verifies if you qualify to claim that namespace. + - If the namespace already exists and contains artifacts, then HCP Terraform ensures you have `write` access to each artifact’s corresponding repository. +1. Click **Create Namespace** or **Claim Namespace** to finalize your organization’s public namespace ownership. + +After claiming or creating a new namespace, the **Public namespace** page lists any artifacts your organization now controls under that namespace. + +If HCP Terraform does not list the GitHub account you want to claim on the **New namespace** page, click **Add GitHub Account** and follow the prompts to [reinstall the application](https://docs.github.com/en/apps/using-github-apps/installing-a-github-app-from-a-third-party). After reinstalling, sign into GitHub as a user with access to the account you want to claim and try again. For more information on any specific error codes you encounter, [refer to the GitHub documentation](https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization#repository-roles-for-organizations). diff --git a/content/terraform-docs-common/docs/cloud-docs/public-namespace/index.mdx b/content/terraform-docs-common/docs/cloud-docs/public-namespace/index.mdx new file mode 100644 index 0000000000..f0f1ba26b0 --- /dev/null +++ b/content/terraform-docs-common/docs/cloud-docs/public-namespace/index.mdx @@ -0,0 +1,41 @@ +--- +page_title: Namespace overview for HCP Terraform +description: Create a namespace for a linked Github account, letting organization members collectively manage that account’s public registry artifacts. +tfc_only: true +--- + +# Namespace overview + +Namespaces let you connect a GitHub account to an HCP Terraform organization, letting organization members collectively manage that GitHub account’s public registry artifacts. + +Every artifact in the [public Terraform registry](https://registry.terraform.io/) connects to a namespace that matches the name of the GitHub account that published that artifact. For example, the `iam` [provider](https://registry.terraform.io/modules/terraform-aws-modules/iam/aws/latest) is published by the `terraform-aws-modules` [namespace](https://registry.terraform.io/namespaces/terraform-aws-modules), which corresponds to an [Github organization](https://docs.github.com/en/organizations/collaborating-with-groups-in-organizations/about-organizations) account with the same name. + +You can claim a namespace in HCP Terraform by linking a GitHub account to an organization, claiming that account’s namespace. Each GitHub account namespace can belong to one HCP Terraform organization. + + +## The public and private registries + +The [Terraform registry](https://registry.terraform.io/) is a public interactive resource for discovering integrations and configuration packages. Anyone can publish and consume the artifacts in the public registry. An organization in HCP Terraform has a [private registry](/terraform/cloud-docs/registry) that allows members to share modules and providers privately with other members of their organization. + +An organization's private registry is separate from its public registry artifacts and workflows. For example, an organization owner can publish a new module to the public registry from one of their organization's claimed namespaces, and that module is not automatically included in that organization's private registry. If an organization member wants to use the newly published module, they must follow the the usual steps to [add that module to their private registry](/terraform/cloud-docs/registry/add). + +## Manage namespaces and registry artifacts + + + +Namespaces do not support publishing or managing [policy libraries](/terraform/registry/policy-libraries/publishing) in the public registry. To publish or manage policy libraries with a namespace, continue to use the [existing registry workflows](/terraform/registry/policy-libraries/publishing#publishing-to-the-registry). + + + +Linking a GitHub account to an HCP Terraform organization lets organization members collectively manage the linked GitHub account’s [public registry artifacts](/terraform/cloud-docs/public-namespace/artifacts) and the namespace itself. + +Organization owners can manage claimed namespaces and specify which team members can interact with an organization's namespaces by setting [organization-level permissions](/terraform/cloud-docs/users-teams-organizations/permissions#manage-public-registry) to either **Manage public modules** or **Manage public providers**. + +Organization owners and teams with **Manage public modules** and **Manage public providers** permissions can perform the following actions for every namespaces in their organization: + +* [Publish new providers or modules](/terraform/cloud-docs/public-namespace/artifacts#publish-artifacts) to the public registry under a namespace +* [Publish new versions](/terraform/cloud-docs/public-namespace/artifacts#publish-new-artifact-versions) of existing public registry artifacts +* [Add GPG keys](/terraform/cloud-docs/public-namespace/manage#manage-gpg-keys) to a namespace +* [Resync](/terraform/cloud-docs/public-namespace/artifacts#resync-artifacts) a namespace’s public registry artifacts +* [View usage metrics](/terraform/cloud-docs/public-namespace/artifacts#view-artifacts) for public registry artifacts +* [Delete an artifact or an artifact version](/terraform/cloud-docs/public-namespace/artifacts#delete-artifacts-or-artifact-versions) diff --git a/content/terraform-docs-common/docs/cloud-docs/public-namespace/manage.mdx b/content/terraform-docs-common/docs/cloud-docs/public-namespace/manage.mdx new file mode 100644 index 0000000000..13d871ca97 --- /dev/null +++ b/content/terraform-docs-common/docs/cloud-docs/public-namespace/manage.mdx @@ -0,0 +1,41 @@ +--- +page_title: Manage namespaces +description: Learn how to administer an organization namespace by managing its GPG keys or releasing it. +tfc_only: true +--- + +# Manage namespaces + +After an HCP Terraform organization claims a namespace, you can configure that namespace’s GPG keys or release your organization's claim on the namespace. + +## Requirements + +The following permissions are necessary to manage a namespace: + +- Organization owners or members with [**Manage public providers** permissions](/terraform/cloud-docs/users-teams-organizations/permissions#manage-public-registry) can add or remove GPG keys. +- Organization [owners](/terraform/cloud-docs/users-teams-organizations/permissions#organization-owners) can release an organization’s claim on a namespace. + +## Manage GPG keys + +A namespace uses its GPG keys to [sign releases for a namespace’s providers](/terraform/registry/providers/publishing#preparing-and-adding-a-signing-key). A namespace’s settings page lists its current GPG keys. + +To add a new GPG key to the namespace: +1. Sign in to [HCP Terraform](https://app.terraform.io/) and navigate to your organization, then select **Registry** in the sidebar, then **Public namespaces**. +1. Choose the namespace you want to manage from the dropdown list and click **Settings** in the upper-right corner. +1. Click **New GPG Key**, which only appears to those with [**Manage public providers** permissions](/terraform/cloud-docs/users-teams-organizations/permissions#manage-public-registry). +1. Paste the ASCII-armored text for your public GPG key in the modal window, including both `-----BEGIN PGP PUBLIC KEY BLOCK-----` and `-----END PGP PUBLIC KEY BLOCK-----`. +1. Click **Add GPG key**. + +If successful, HCP Terraform lists your new key in your namespace's list of GPG keys. + +## Release namespace claim + +A namespace can only have one owner. If you want to move a namespace from one organization to another, you must first release your ownership claim before reclaiming that namespace in another organization. + +To release a namespace claim: +1. Sign in to [HCP Terraform](https://app.terraform.io/) and navigate to your organization, then select **Registry** in the sidebar, then **Public namespaces**. +1. Choose the namespace you want to release from the dropdown list and click **Settings** in the upper-right corner. +1. Click **Release** under the **Release claim** section. +1. Confirm by typing the word "release" and then click **Release**. + +After releasing ownership of a namespace, you can [claim that namespace](/terraform/cloud-docs/public-namespace/create_or_claim) under another organization. diff --git a/content/terraform-docs-common/docs/cloud-docs/registry/index.mdx b/content/terraform-docs-common/docs/cloud-docs/registry/index.mdx index 1d5603936a..4a830bcdac 100644 --- a/content/terraform-docs-common/docs/cloud-docs/registry/index.mdx +++ b/content/terraform-docs-common/docs/cloud-docs/registry/index.mdx @@ -13,6 +13,8 @@ HCP Terraform's private registry works similarly to the [public Terraform Regist [Public modules and providers](/terraform/cloud-docs/registry/add) are hosted on the public Terraform Registry and HCP Terraform can automatically synchronize them to an organization's private registry. This lets you clearly designate which public providers and modules are recommended for the organization and makes their supporting documentation and examples centrally accessible. +For more information about publishing artifacts to the public registry with an HCP Terraform organization, refer to [Namespaces](/terraform/cloud-docs/public-namespace). + -> **Note:** Your Terraform Enterprise instance must allow access to `registry.terraform.io` and `https://yy0ffni7mf-dsn.algolia.net/`. ## Private Providers and Modules diff --git a/content/terraform-docs-common/docs/cloud-docs/users-teams-organizations/permissions.mdx b/content/terraform-docs-common/docs/cloud-docs/users-teams-organizations/permissions.mdx index cd222dcad8..f1693e076e 100644 --- a/content/terraform-docs-common/docs/cloud-docs/users-teams-organizations/permissions.mdx +++ b/content/terraform-docs-common/docs/cloud-docs/users-teams-organizations/permissions.mdx @@ -38,6 +38,9 @@ Permissions for the owners team include: - Manage policy overrides (refer to [Organization Permissions][] below) - Manage VCS settings (refer to [Organization Permissions][] below) - Manage the private registry (refer to [Organization Permissions][] below) + +- Manage the public registry (refer to [Organization Permissions][] below) + - Manage Membership (refer to [Organization Permissions][] below; invite or remove users from the organization itself, and manage the membership of its teams) - View all secret teams (refer to [Organization Permissions][] below) - Manage agents (refer to [Organization Permissions][] below) @@ -316,6 +319,14 @@ This permission implicitly grants access to read all workspaces, which is necess Allows members to publish and delete providers, modules, or both providers and modules in the organization's [private registry](/terraform/cloud-docs/registry). These permissions are otherwise only available to organization owners. + + +### Manage Public Registry + +Allows members to publish and delete providers, modules, or both providers and modules using an organization's [claimed namespaces](/terraform/cloud-docs/registry/public-namespace) in the [public registry](https://registry.terraform.io/). These permissions are otherwise only available to organization owners. + + + ### Team Management Permissions HCP Terraform has three levels of team management permissions: manage membership, manage teams, and manage organization access. Each permission level grants users the ability to perform specific actions and each progressively requires prerequisite permissions. diff --git a/content/terraform-docs-common/docs/cloud-docs/workspaces/settings/vcs.mdx b/content/terraform-docs-common/docs/cloud-docs/workspaces/settings/vcs.mdx index dc36790767..e83c6141c5 100644 --- a/content/terraform-docs-common/docs/cloud-docs/workspaces/settings/vcs.mdx +++ b/content/terraform-docs-common/docs/cloud-docs/workspaces/settings/vcs.mdx @@ -63,7 +63,7 @@ This option instructs Terraform to begin a run when changes are pushed to any fi This option instructs Terraform to begin new runs only for changes that affect specified files and directories. This behavior also applies to [speculative plans](/terraform/cloud-docs/run/remote-operations#speculative-plans) on pull requests. You can use trigger patterns and trigger prefixes in the **Add path** field to specify groups of files and directories. -- **Trigger Patterns:** (Recommended) Use glob patterns to specify the files that should trigger a new run. For example, `/submodule/**/*.tf`, specifies all files with the `.tf` extension that are nested below the `submodule` directory. You can also use more complex patterns like `/**/networking/**/*`, which specifies all files that have a `networking` folder in their file path. (e.g., `/submodule/service-1/networking/private/main.tf`). Refer to [Glob Patterns for Automatic Run Triggering](#glob-patterns-for-automatic-run-triggering) for details. +- **Trigger Patterns:** (Recommended) Use glob patterns to specify the files that should trigger a new run. For example, `/submodule/**/*.tf`, specifies all files with the `.tf` extension that are nested below the `submodule` directory. You can also use more complex patterns like `/**/networking/**/*`, which specifies all files that have a `networking` folder in their file path. (e.g., `/submodule/service-1/networking/private/main.tf`). Note, the glob patterns match hidden files and directories (names starting with `.`). Refer to [Glob Patterns for Automatic Run Triggering](#glob-patterns-for-automatic-run-triggering) for details. - **Trigger Prefixes:** HCP Terraform will queue runs for changes in any of the specified trigger directories matching the provided prefixes (including the working directory). For example, if you use a top-level `modules` directory to share Terraform code across multiple configurations, changes to the shared modules are relevant to every workspace that uses that repository. You can add `modules` as a trigger directory for each workspace to track changes to shared code. -> **Note:** HCP Terraform triggers runs on all attached workspaces if it does not receive a list of changed files or if that list is too large to process. When this happens, HCP Terraform may show several runs with completed plans that do not result in infrastructure changes. diff --git a/content/terraform-docs-common/docs/docs/terraform-tools.mdx b/content/terraform-docs-common/docs/docs/tools/index.mdx similarity index 97% rename from content/terraform-docs-common/docs/docs/terraform-tools.mdx rename to content/terraform-docs-common/docs/docs/tools/index.mdx index 5175f07380..a291f67b3c 100644 --- a/content/terraform-docs-common/docs/docs/terraform-tools.mdx +++ b/content/terraform-docs-common/docs/docs/tools/index.mdx @@ -16,6 +16,7 @@ Terraform is part of a rich infrastructure and DevOps ecosystem. The tools below |[Visual Studio Code Extension](https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform) | HashiCorp | Enable syntax highlighting and other editing features in VS Code using the Terraform Language Server.| | |[Language Server](https://github.com/hashicorp/terraform-ls) | HashiCorp | Add support for the Terraform configuration language to editors that use the [Language Server Protocol](https://microsoft.github.io/language-server-protocol/), like Sublime Text, vim, emacs, etc.| | |[console](/terraform/cli/commands/console) | HashiCorp | Evaluate Terraform expressions and explore your Terraform project's state. The console helps you develop and debug your configuration, especially when working with complex state data and Terraform expressions.| [Develop Configuration with the Console](/terraform/tutorials/cli/console) | +| [Terraform MCP server](/terraform/docs/tools/mcp-server) | HashiCorp | Helps you use an AI or LLM to write Terraform configuration by retrieving data directly from the Terraform registry. | | ## Manage Infrastructure diff --git a/content/terraform-docs-common/docs/docs/tools/mcp-server/deploy.mdx b/content/terraform-docs-common/docs/docs/tools/mcp-server/deploy.mdx new file mode 100644 index 0000000000..41d4e09f02 --- /dev/null +++ b/content/terraform-docs-common/docs/docs/tools/mcp-server/deploy.mdx @@ -0,0 +1,105 @@ +--- +page_title: Deploy the Terraform model context protocol (MCP) server +description: |- + Learn how to deploy the Terraform MCP server, which helps you write configuration using LLM responses sourced from the Terraform registry. +--- + +# Deploy the Terraform MCP server + +This topic describes how to deploy the Terraform model context protocol (MCP) server in a Docker container on your local workstation. The Terraform MCP server connects to a client so that your LLM can use data stored in the Terraform registry to help you write Terraform configuration. Refer to the [overview](/terraform/docs/terraform-tools/mcp-server) for additional information about the Terraform MCP server. + +@include 'beta.mdx' + +## Overview + +Complete the following steps to deploy the Terraform MCP server: + +1. Pull the Docker image +1. Connect your client to the MCP server +1. Configure your client + +## Requirements + +One of the following Docker distributions is required: + +- Docker Engine v20.10.21+ +- Docker Desktop v4.14.0+ + +Refer to the [Docker documentation](https://docs.docker.com/desktop) for installation instructions. + +The following MCP clients are supported: + +- VS Code with CoPilot. Refer to the [VS Code documentation](https://code.visualstudio.com/docs) for installation instructions. +- Cursor. Refer to the [Cursor website](https://www.cursor.com) for more information. +- Anthropic Claude Desktop. Refer to the [Anthropic Claude Desktop documentation](https://support.anthropic.com/en/articles/10065433-installing-claude-for-desktop) for installation instructions. + +## Enable MCP in your client + +Refer to your client's documentation for instructions on enabling MCP: + +- [VS Code](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) +- [Cursor](https://docs.cursor.com/context/model-context-protocol#configuring-mcp-servers) +- [Anthropic Claude Desktop](https://modelcontextprotocol.io/quickstart/user) + +## Install the server + +For VS Code, create an `mcp.json` file in the `.vscode` or `.cursor` directory of your local workspace and add the following configuration: + +```json +{ +"servers": { + "terraform-mcp-server": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "hashicorp/terraform-mcp-server:0.1.0" + ] + } +} +} +``` + +For Claude Desktop MCP clients, create an `mcp.json` file and add the following configuration: + + ```json + { + "mcpServers": { + "servers": { + "hcp-terraform": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "hashicorp/terraform-mcp-server:0.1.0" + ] + } + } + } + } + ``` + + +## Configure your MCP client + +Complete the following steps if you are using Copilot in VS Code: + +1. Open the chat interface and choose **Agent** from the mode settings. +1. Click the tools icon to verify that the Terraform MCP server tools are enabled. + +Complete the following steps if you are using Cursor: + +1. Open the chat pane and choose **Chat Settings** from the ellipses menu. +1. Choose **Agent from the **Default new chat mode** drop-down menu. +1. Choose **MCP** from the **Cursor Settings** sidebar to verify that the Terraform MCP server tools are enabled. + +Complete the following steps if you are using Claude Desktop: + +1. Open the chat pane and choose the **search and tools** slider icon to the bottom left of the chat pane. +1. Click **terraform-mcp-server** to verify that all the tools are enabled. + +## Next steps + +After downloading the Terraform MCP server and connecting it to your client, you can begin prompting your model about your Terraform configuration code. Refer to [Prompt an AI model](/terraform/docs/tools/mcp-server/prompt) for more information. \ No newline at end of file diff --git a/content/terraform-docs-common/docs/docs/tools/mcp-server/index.mdx b/content/terraform-docs-common/docs/docs/tools/mcp-server/index.mdx new file mode 100644 index 0000000000..0ea17fba72 --- /dev/null +++ b/content/terraform-docs-common/docs/docs/tools/mcp-server/index.mdx @@ -0,0 +1,40 @@ +--- +page_title: Terraform MCP server overview +description: Learn about the Terraform model context protocol (MCP) server and how it can help you write Terraform configuration using AI. +--- + +# Terraform MCP server overview + +This topic provides an overview of the Terraform model context protocol (MCP) server, which helps you write Terraform configuration using an AI or LLM. The server requests information directly from the Terraform registry so that your model can formulate responses using provider code and documentation as the source of truth. + +@include 'beta.mdx' + +## Introduction + +MCP standardizes how AI models can discover and interact with external tools, applications, and data sources. You can configure MCP clients, such as an AI or LLM chat, to send requests through an MCP server so that the model can provide answers to prompts that it may not have been trained on. Refer to the [MCP documentation](https://modelcontextprotocol.io/introduction) for details about how MCP works. + +You can configure your AI model to connect to the Terraform MCP server so that it can request information about providers, modules, and other objects from data stored in the Terraform registry. When the Terraform MCP is available to your AI client, the model retrieves information from the most up-to-date source code stored in the registry, instead of relying on outdated training data. As a result, you can get more accurate and actionable information. + +Note that to use the server, your questions must pertain to provider configuration from the registry. The LLM uses other sources, such as content from the internet, to respond to general questions about Terraform configuration or requests to generate code. + +## Workflow + +- [Deploy the Terraform MCP server](/terraform/docs/tools/mcp-server/deploy) +- [Prompt your model](/terraform//docs/tools/mcp-server/prompt) + +## Terraform MCP server tools + +The Terraform MCP server runs in a Docker container on your local workstation and exposes functionality to clients using tools. The Terraform MCP server includes a set of tools that retrieve different types of information from the Terraform registry: + +- `resolveProviderDocID`: Queries the Terraform Registry to find and list available documentation for a specific provider. This tool uses `serviceSlug` to return a list of provider document IDs with their titles and categories for resources, data sources, functions, or guides. +- `getProviderDocs`: Fetches the complete documentation content for a specific provider resource, data source, or function using a document ID obtained from the `resolveProviderDocID` tool. Returns the raw documentation in markdown format. +- `searchModules`: Searches the Terraform Registry for modules based on the specified `moduleQuery` with pagination. Returns a list of module IDs with their names, descriptions, download counts, verification status, and publish dates. +- `moduleDetails`: Retrieves detailed documentation for a module using a module ID obtained from the `searchModules` tool, including inputs, outputs, configuration, submodules, and examples. + +## Release notes + +For information about new releases, refer to the [Terraform MCP server repository](https://github.com/hashicorp/terraform-mcp-server/releases). + +## Provide feedback + +We want to hear from you. Complete the [Terraform MCP server feedback form](https://docs.google.com/forms/d/e/1FAIpQLSem_F9Spg89vQEq33-vjeXk-qZn930Dn3XSvcB2dBORgMHddA/viewform) to provide to help us improve this feature. \ No newline at end of file diff --git a/content/terraform-docs-common/docs/docs/tools/mcp-server/prompt.mdx b/content/terraform-docs-common/docs/docs/tools/mcp-server/prompt.mdx new file mode 100644 index 0000000000..48b2eff0aa --- /dev/null +++ b/content/terraform-docs-common/docs/docs/tools/mcp-server/prompt.mdx @@ -0,0 +1,357 @@ +--- +page_title: Prompt an AI model connected to the Terraform MCP server +description: |- + Learn how to prompt your AI model connected to the Terraform MCP server to answer questions about Terraform configuration using code stored in the Terraform registry +--- + +# Prompt a model connected to the Terraform MCP server + +This topic provides example prompts for helping you write Terraform configuration after installing the Terraform model context protocol (MCP) server. Refer to [Deploy the Terraform MCP server](/terraform/docs/tools/mcp-server/install) for instructions on how to deploy the server. + +@include 'beta.mdx' + +## Overview + +To trigger the MCP server tools, ask your LLM questions about your provider configuration or general questions about Terraform providers and modules. Note that for your LLM to use the server, your questions must pertain to provider configuration from the registry. The LLM uses other sources, such as content from the internet, to respond to general questions about Terraform configuration or requests to generate code. + +## Requirements + +Verify that you have deployed the Terraform MCP server and configured your client. Refer to [Deploy the Terraform MCP server](/terraform/docs/tools/mcp-server/deploy) for instructions. + +## Prompt your MCP client + +Your model may still decide to use other resources to formulate responses, but you can use the following guidelines to help you create prompts that are more likely to be routed through the server: + +- Include the names of specific providers or provider modules. For example, use `google_compute_disk` in your prompt instead of `the compute disk`. +- Use the full Terraform resource address in your query. Refer to [Resource Address Reference](/terraform/cli/state/resource-addressing) in the Terraform CLI documentation for additional information about resource addresses. +- Ask for the latest information about the provider or module. + +## Examples + +You can use the following set of prompts as a guide to help you write your own configuration. The following responses are returned from the server using ChatGPT 4.1 in GitHub Copilot on VS Code. Your responses may vary. + +### Get AI-related resources from the Google provider + +The following prompt runs the [`resolveProviderDocID`](/terraform/docs/tools/mcp-server#resolveproviderdocid) tool, which obtains a list of related provider document IDs so that you can decide which resources to create: + +> "I need help understanding what resources are available in the Google provider that are for AI" + + +#### Response + +The server sends the following request payload to the registry: + +```json + { + "providerDataType": "resources", + "providerName": "google", + "providerNamespace": "hashicorp", + "providerVersion": "latest", + "serviceSlug": "ai" +} +``` + +The server retrieves the following response from the registry. The response is truncated in this example: + +```markdown +Available Documentation (top matches) for resources in Terraform provider hashicorp/google version: 6.35.0 + +Each result includes: +- providerDocID: tfprovider-compatible identifier +- Title: Service or resource name +- Category: Type of document +For best results, select libraries based on the serviceSlug match and category of information requested. + +--- +- providerDocID: 8925589 +- Title: vertex_ai_endpoint_iam +- Category: resources +--- +- providerDocID: 8925590 +- Title: vertex_ai_feature_group +- Category: resources +--- +- providerDocID: 8925591 +- Title: vertex_ai_feature_group_feature +- Category: resources + +. . . +``` + +The client prints the following response using the context acquired from the MCP server: + +> The Google Terraform provider offers several resources related to AI, primarily under the Vertex AI and Document AI services. Here are the main AI-related resources available: +> +> **Vertex AI Resources** +> +> - `vertex_ai_dataset` +> - `vertex_ai_deployment_resource_pool` +> - `vertex_ai_endpoint` +> - `vertex_ai_endpoint_iam` +> - `vertex_ai_feature_group` +> - `vertex_ai_featurestore` +> - `vertex_ai_index` +> - `vertex_ai_metadata_store` +> - `vertex_ai_tensorboard` +> - `document_ai_processor` +> - `document_ai_warehouse_document_schema` +> +> These resources allow you to manage datasets, endpoints, feature stores, indexes, metadata, and more for AI/ML workflows on Google Cloud, as well as Document AI processors and schemas. +> +> If you want details or documentation for any specific resource, let me know which one(s) you're interested in! + +### Get information about storage buckets in Azure + +The following prompt runs the [`resolveProviderDocID`](/terraform/docs/tools/mcp-server#resolveproviderdocid) tool, which gets a list of provider documentation IDs. Next, the [`getProviderDocs`](/terraform/docs/tools/mcp-server#getproviderdocs) tool calls the appropriate documentation for the use case: + +> "I need help setting up storage buckets in the azure provider" + +#### Response + +The server sends a request payload for each tool: + + + +```json +{ + "providerDataType": "resources", + "providerName": "azurerm", + "providerNamespace": "hashicorp", + "providerVersion": "latest", + "serviceSlug": "storage_account" +} +``` + + + + + +```json +{ + "providerDocID": "8957547" +} +``` + + + + + + +```json +{ + "providerDocID": "8957555" +} +``` + + + +The server retrieves the following responses to each tool from the registry. The responses are truncated in this example: + + + +```` +Available Documentation (top matches) for resources in Terraform provider hashicorp/azurerm version: 4.29.0 + +Each result includes: +- providerDocID: tfprovider-compatible identifier +- Title: Service or resource name +- Category: Type of document +For best results, select libraries based on the serviceSlug match and category of information requested. + +--- + +- providerDocID: 8956759 +- Title: backup_container_storage_account +- Category: resources +--- +- providerDocID: 8957097 +- Title: key_vault_managed_storage_account +- Category: resources +--- +- providerDocID: 8957098 +- Title: key_vault_managed_storage_account_sas_token_definition +- Category: resources +--- +- providerDocID: 8957145 +- Title: log_analytics_linked_storage_account +- Category: resources +... + +```` + + + + + +```` +--- +subcategory: "Storage" +layout: "azurerm" +page_title: "Azure Resource Manager: azurerm_storage_account" +description: |- + Manages a Azure Storage Account. +--- + +# azurerm_storage_account + +Manages an Azure Storage Account. + +## Example Usage + +```hcl +resource "azurerm_resource_group" "example" { + name = "example-resources" + location = "West Europe" +} + +resource "azurerm_storage_account" "example" { + name = "storageaccountname" + resource_group_name = azurerm_resource_group.example.name + location = azurerm_resource_group.example.location + account_tier = "Standard" + account_replication_type = "GRS" + + tags = { + environment = "staging" + } +} +``` + +## Example Usage with Network Rules + +... + +```` + + + + + +```` + +--- +subcategory: "Storage" +layout: "azurerm" +page_title: "Azure Resource Manager: azurerm_storage_container" +description: |- + Manages a Container within an Azure Storage Account. +--- + +# azurerm_storage_container + +Manages a Container within an Azure Storage Account. + +## Example Usage + +```hcl +resource "azurerm_resource_group" "example" { + name = "example-resources" + location = "West Europe" +} + +resource "azurerm_storage_account" "example" { + name = "examplestoraccount" + resource_group_name = azurerm_resource_group.example.name + location = azurerm_resource_group.example.location + account_tier = "Standard" + account_replication_type = "LRS" + + tags = { + environment = "staging" + } +} + +resource "azurerm_storage_container" "example" { + name = "vhds" + storage_account_id = azurerm_storage_account.example.id + container_access_type = "private" +} +``` + +## Argument Reference + +... + +```` + + + + +The client prints the following response using the context acquired from the MCP server: + +> To set up storage buckets in Azure using the Terraform azurerm provider, you need to use the azurerm_storage_account resource. Here’s a quick guide and example configuration: +> +> 1. Terraform Resource for Azure Storage Account +> +> ```hcl +> resource "azurerm_resource_group" "example" { +> name = "example-resources" +> location = "West Europe" +> } +> +> resource "azurerm_storage_account" "example" { +> name = "storageaccountname" # must be globally unique, lowercase +> resource_group_name = azurerm_resource_group.example.name +> location = azurerm_resource_group.example.location +> account_tier = "Standard" # or "Premium" +> account_replication_type = "GRS" # or "LRS", "RAGRS", "ZRS", etc. +> +> tags = { + > environment = "staging" +> } +> } +> ``` + +### Get help creating an IBM VM + +The following prompt runs the [`searchModules`](/terraform/docs/tools/mcp-server#searchmodules) tool, which gets a list of modules: + +> "Is there a module to help with setting up an IBM VM?" + +#### Response + +The server sends the following request payload: + +```json +{ + "moduleQuery": "ibm vm" +} +``` + +The server retrieves the following response from the registry: + +```` +Available Terraform Modules (top matches) for ibm vm + + Each result includes: +- moduleID: The module ID (format: namespace/name/provider-name/module-version) +- Name: The name of the module +- Description: A short description of the module +- Downloads: The total number of times the module has been downloaded +- Verified: Verification status of the module +- Published: The date and time when the module was published + + +--- + +- moduleID: intel/ibm-vm/intel/1.2.2 +- Name: ibm-vm +- Description: Intel Cloud Optimization Module - IBM VM +- Downloads: 15 +- Verified: false +- Published: 2024-09-25 20:31:58.951109 +0000 UTC +--- +```` + + +The client prints the following response using the context acquired from the MCP server: + +> Yes, there is a Terraform module to help with setting up an IBM VM: +> - IBM VM Module +> - ID: intel/ibm-vm/intel/1.2.2 +> - Description: Intel Cloud Optimization Module - IBM VM +> - Module Version: 1.2.2 +> - Namespace: intel +> - Source: GitHub - intel/terraform-intel-ibm-vm +> +> You can use this module to set up and manage IBM VMs with Terraform. If you need more details or usage examples, let me know. \ No newline at end of file diff --git a/content/terraform-docs-common/docs/partials/beta.mdx b/content/terraform-docs-common/docs/partials/beta.mdx new file mode 100644 index 0000000000..eab9d4c9a7 --- /dev/null +++ b/content/terraform-docs-common/docs/partials/beta.mdx @@ -0,0 +1,6 @@ + + + +This feature is currently in beta. Do not use beta functionality in production environments. + + \ No newline at end of file diff --git a/content/terraform-docs-common/docs/registry/faq.mdx b/content/terraform-docs-common/docs/registry/faq.mdx index 3efb8e55aa..a2201faa8a 100644 --- a/content/terraform-docs-common/docs/registry/faq.mdx +++ b/content/terraform-docs-common/docs/registry/faq.mdx @@ -132,3 +132,7 @@ Artifacts in the Public Registry that were originally published by a GitHub user > The GitHub user that published this artifact no longer exists. See the FAQ for more information. If you are the owner of such an artifact, or for other artifact ownership issues, please [reach out to us](/terraform/registry#getting-help). + +## Can I manage my public registry artifacts with HCP Terraform? + +If you are an HCP Terraform user and want to publish and manage modules or providers in the public registry, you can connect a GitHub account to an HCP Terraform organization, letting members collectively manage that account’s public registry artifacts. Refer to [Namespaces](/terraform/cloud-docs/public-namespace) for more information. diff --git a/content/terraform-docs-common/docs/registry/index.mdx b/content/terraform-docs-common/docs/registry/index.mdx index 8077b15962..2b5759bf3d 100644 --- a/content/terraform-docs-common/docs/registry/index.mdx +++ b/content/terraform-docs-common/docs/registry/index.mdx @@ -22,10 +22,12 @@ The registry has a number of different categories for modules, providers, and po ## User Account -Anyone interested in publishing can use a GitHub account to sign in to the Terraform Registry. Click the **Sign-in** button, and follow the login prompts to authorize the use of your GitHub account and sign in. Refer to the specific instructions for publishing [modules](/terraform/registry/modules/publish), [providers](/terraform/registry/providers/publishing), and [policy libraries](/terraform/registry/policy-libraries/publishing). +Individuals interested in publishing can use a GitHub account to sign in to the Terraform Registry. Click the **Sign-in** button, and follow the login prompts to authorize the use of your GitHub account and sign in. Refer to the specific instructions for publishing [modules](/terraform/registry/modules/publish), [providers](/terraform/registry/providers/publishing), and [policy libraries](/terraform/registry/policy-libraries/publishing). ![screenshot: terraform registry sign in](/img/docs/user-account.png) +If you are an HCP Terraform user and want to publish and manage modules or providers in the public registry, you can connect a GitHub account to an HCP Terraform organization, letting members collectively manage that account’s public registry artifacts. Refer to [Namespaces](/terraform/cloud-docs/public-namespace) for more information. + ## Getting Help The providers, modules, and policies available on the Terraform Registry are maintained either directly by HashiCorp, by trusted HashiCorp partners, or members of the Terraform community Refer to [Provider Tiers and Namespaces](/terraform/registry/providers#provider-tiers-amp-namespaces) for details. To create issues and contributions in GitHub, click the **Report an issue** link on the provider, module, or policy library's details page: diff --git a/content/terraform-docs-common/img/docs/terraform-mcp-server-flow-dk.png b/content/terraform-docs-common/img/docs/terraform-mcp-server-flow-dk.png new file mode 100644 index 0000000000..a99ebaa3e9 Binary files /dev/null and b/content/terraform-docs-common/img/docs/terraform-mcp-server-flow-dk.png differ diff --git a/content/terraform-docs-common/img/docs/terraform-mcp-server-flow-lt.png b/content/terraform-docs-common/img/docs/terraform-mcp-server-flow-lt.png new file mode 100644 index 0000000000..e87feda1de Binary files /dev/null and b/content/terraform-docs-common/img/docs/terraform-mcp-server-flow-lt.png differ diff --git a/content/terraform-docs-common/redirects.jsonc b/content/terraform-docs-common/redirects.jsonc index 232182ef37..6c3cfdfff3 100644 --- a/content/terraform-docs-common/redirects.jsonc +++ b/content/terraform-docs-common/redirects.jsonc @@ -305,4 +305,10 @@ "destination": "/terraform/cloud-docs/overview", "permanent": true }, + // Update tools section + { + "source": "/terraform/docs/terraform-tools", + "destination": "/terraform/docs/tools", + "permanent": true + }, ] \ No newline at end of file