website: Edits to updated Registry documentation
- Edits to registry overview - Add index link as 'overview' (header links are semi-invisible) - move providers/overview.html to providers/index.html - Edits to providers overview - fix filename of os-arch - edits to provider publishing
This commit is contained in:
parent
cde98a3172
commit
7bc75a1804
|
@ -8,28 +8,28 @@ description: |-
|
||||||
|
|
||||||
# Terraform Registry
|
# Terraform Registry
|
||||||
|
|
||||||
The [Terraform Registry](https://registry.terraform.io) is an interactive resource for discovering a wide selection of integrations (Providers) and configuration packages (Modules) for use with Terraform. The Registry includes solutions developed by HashiCorp, Third-party vendors, and those created by our Terraform community. The Registry aims to connect our users with solutions, and to help new users get started with Terraform more quickly, by sharing examples of how Terraform is written, and find pre-made modules for infrastructure components you require.
|
The [Terraform Registry](https://registry.terraform.io) is an interactive resource for discovering a wide selection of integrations (providers) and configuration packages (modules) for use with Terraform. The Registry includes solutions developed by HashiCorp, third-party vendors, and our Terraform community. Our goal with the Registry is to provide plugins to manage any infrastructure API, pre-made modules to quickly configure common infrastructure components, and examples of how to write quality Terraform code.
|
||||||
|
|
||||||
![screenshot: terraform registry landing page](./images/registry1.png)
|
![screenshot: terraform registry landing page](./images/registry1.png)
|
||||||
|
|
||||||
The Terraform Registry is integrated [directly into Terraform](https://www.terraform.io/docs/configuration/providers.html) to make consuming Providers and modules easy. Anyone can publish both Providers and Modules on the Registry – you may use the [Public Registry](https://registry.terraform.io) for viewing and publishing public providers and modules; For private modules, you can use a [Private Registry](https://www.terraform.io/docs/registry/private.html), or [reference repositories and other sources directly](https://www.terraform.io/docs/modules/sources.html).
|
The Terraform Registry is integrated [directly into Terraform](/docs/configuration/provider-requirements.html) to make it easy to use providers and modules. Anyone can publish and consume providers and modules on the public [Terraform Registry](https://registry.terraform.io). (To publish private modules within your organization, you can use a [private registry](/docs/registry/private.html) or [reference repositories and other sources directly](/docs/modules/sources.html).)
|
||||||
|
|
||||||
Use the navigation to the left to learn more about using the registry.
|
Use the navigation to the left to learn more about using the Terraform Registry.
|
||||||
|
|
||||||
## Navigating the Registry
|
## Navigating the Registry
|
||||||
|
|
||||||
As the Terraform Ecosystem continues to grow, the Registry is designed to make it easy to discover and search through integrations and solutions across dozens of categories. Select a Provider or Module card to learn more, use filters to select the tier (see tiers), or use the search at the top of the Registry to find what you’re looking for. Note that search supports keyboard navigation:
|
As the Terraform ecosystem continues to grow, the Registry is designed to make it easy to discover integrations and solutions across dozens of categories. Select a provider or module card to learn more, filter results to a [specific tier](./providers/index.html#provider-tiers-amp-namespaces), or use the search field at the top of the Registry to find what you’re looking for. (Note that search supports keyboard navigation.)
|
||||||
|
|
||||||
![screenshot: terraform registry browse](./images/registry2.png)
|
![screenshot: terraform registry browse](./images/registry2.png)
|
||||||
|
|
||||||
## User Account
|
## User Account
|
||||||
|
|
||||||
Anyone interested in publishing a Provider or Module can create an account and sign in to the Terraform Registry using a GitHub account. Choose Sign-in, and follow the login prompts. Once you have authorized the use of your GitHub account and are signed in, you are able to publish both Providers and Modules, directly from one of the Repositories you manage. To learn more, see [Publishing to the Registry](https://www.terraform.io/docs/registry/providers/publishing.html).
|
Anyone interested in publishing a provider or module can create an account and sign in to the Terraform Registry using a GitHub account. Click the "Sign-in" button, and follow the login prompts. Once you have authorized the use of your GitHub account and are signed in, you can publish both providers and modules directly from one of the repositories you manage. To learn more, see [Publishing to the Registry](/docs/registry/providers/publishing.html).
|
||||||
|
|
||||||
![screenshot: terraform registry sign in](./images/user-account.png)
|
![screenshot: terraform registry sign in](./images/user-account.png)
|
||||||
|
|
||||||
## Getting Help
|
## Getting Help
|
||||||
|
|
||||||
We welcome any feedback you have throughout the process and encourage you to reach out if you have any questions or issues with the Terraform Registry by sending us an [email](mailto:terraform-registry-beta@hashicorp.com). The providers and modules in The Terraform Registry are published and maintained either directly by HashiCorp, by trusted HashiCorp partners and the Terraform Community ([see tiers & namespaces](./providers/overview.html#provider-tiers-amp-namespaces)). If you run into issues or have additional contributions to make to a provider or module, you can submit a GitHub issue by selecting the "Report an issue" link on the detail view:
|
We welcome any feedback about using or publishing to the Registry. Please reach out if you have any questions or issues with the Terraform Registry by sending us an [email](mailto:terraform-registry-beta@hashicorp.com). The providers and modules in The Terraform Registry are published and maintained either directly by HashiCorp, by trusted HashiCorp partners, or by members of the Terraform community ([see tiers & namespaces](./providers/index.html#provider-tiers-amp-namespaces)). If you run into issues or have additional contributions to make to a provider or module, you can submit a GitHub issue by selecting the "Report an issue" link on the detail view:
|
||||||
|
|
||||||
![Provider report issue link](./images/registry-issue.png)
|
![Provider report issue link](./images/registry-issue.png)
|
||||||
|
|
|
@ -7,11 +7,23 @@ description: |-
|
||||||
|
|
||||||
# Overview
|
# Overview
|
||||||
|
|
||||||
The Registry offers both a place for users to find Providers, and also acts as the Public origin source for Terraform, meaning that all published providers are directly available from within the Terraform CLI. Providers are how Terraform integrates with any upstream API, whether another HashiCorp technology, or the many hundreds of third-party services that Terraform integrates with today. Creating a Provider is designed to be easy and intuitive, and the Registry is here to help you share it with the rest of the community.
|
Providers are how Terraform integrates with any upstream API.
|
||||||
|
|
||||||
|
The Terraform Registry is the main source for publicly available Terraform providers. It offers a browsable and searchable interface for finding providers, and makes it possible for Terraform CLI to automatically install any of the providers it hosts.
|
||||||
|
|
||||||
|
If you want Terraform to support a new infrastructure service, you can create your own provider using Terraform's Go SDK. Once you've developed a provider, you can use the Registry to share it with the rest of the community.
|
||||||
|
|
||||||
|
## Using Providers From the Registry
|
||||||
|
|
||||||
|
The Registry is directly integrated with Terraform. To use any provider from the Registry, all you need to do is require it within your Terraform configuration; Terraform can then automatically install that provider when initializing a working directory, and your configuration can take advantage of any resources implemented by that provider.
|
||||||
|
|
||||||
|
For more information, see:
|
||||||
|
|
||||||
|
- [Configuration Language: Provider Requirements](/docs/configuration/provider-requirements.html)
|
||||||
|
|
||||||
## Provider Tiers & Namespaces
|
## Provider Tiers & Namespaces
|
||||||
|
|
||||||
Terraform Providers are published and maintained by a variety of sources, including HashiCorp, HashiCorp Technology Partners, and the Terraform Community. Tiers and Badges are used in the Registry to denote the source of the Provider. Additionally, namespaces are used to help users identify the organization or publisher responsible for the integration, as shown in the table below.
|
Terraform providers are published and maintained by a variety of sources, including HashiCorp, HashiCorp Technology Partners, and the Terraform community. The Registry uses tiers and badges to denote the source of a provider. Additionally, namespaces are used to help users identify the organization or publisher responsible for the integration, as shown in the table below.
|
||||||
|
|
||||||
<table border="0" style="border-collapse: collapse; width: 100%;">
|
<table border="0" style="border-collapse: collapse; width: 100%;">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -22,23 +34,23 @@ Terraform Providers are published and maintained by a variety of sources, includ
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="height: 21px;">
|
<tr style="height: 21px;">
|
||||||
<td style="width: 12.4839%; height: 21px;"><img src="./images/official-tier.png" alt="" /></td>
|
<td style="width: 12.4839%; height: 21px;"><img src="./images/official-tier.png" alt="" /></td>
|
||||||
<td style="width: 55.7271%; height: 21px;"><i><span style="font-weight: 400;">Official Providers are owned and maintained by HashiCorp </span></i></td>
|
<td style="width: 55.7271%; height: 21px;"><i><span style="font-weight: 400;">Official providers are owned and maintained by HashiCorp </span></i></td>
|
||||||
<td style="width: 31.7889%; height: 21px;"><code><span style="font-weight: 400;">HashiCorp</span></code></td>
|
<td style="width: 31.7889%; height: 21px;"><code><span style="font-weight: 400;">hashicorp</span></code></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="height: 21px;">
|
<tr style="height: 21px;">
|
||||||
<td style="width: 12.4839%; height: 21px;"><img src="./images/verified-tier.png" alt="" /></td>
|
<td style="width: 12.4839%; height: 21px;"><img src="./images/verified-tier.png" alt="" /></td>
|
||||||
<td style="width: 55.7271%; height: 21px;"><i><span style="font-weight: 400;">Verified Providers are owned and maintained by third-party technology partners. Providers in this tier indicate HashiCorp has verified the authenticity of the Provider’s publisher, and that the partner is a member of the </span></i><a href="https://www.hashicorp.com/ecosystem/become-a-partner/"><i><span style="font-weight: 400;">HashiCorp Technology Partner Program</span></i></a><i><span style="font-weight: 400;">.</span></i></td>
|
<td style="width: 55.7271%; height: 21px;"><i><span style="font-weight: 400;">Verified providers are owned and maintained by third-party technology partners. Providers in this tier indicate HashiCorp has verified the authenticity of the Provider’s publisher, and that the partner is a member of the </span></i><a href="https://www.hashicorp.com/ecosystem/become-a-partner/"><i><span style="font-weight: 400;">HashiCorp Technology Partner Program</span></i></a><i><span style="font-weight: 400;">.</span></i></td>
|
||||||
<td style="width: 31.7889%; height: 21px;"><span style="font-weight: 400;">Third Party Organization, e.g. </span><code><span style="font-weight: 400;">mongodb/mongodbatlas</span></code></td>
|
<td style="width: 31.7889%; height: 21px;"><span style="font-weight: 400;">Third-party organization, e.g. </span><code><span style="font-weight: 400;">mongodb/mongodbatlas</span></code></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="height: 21px;">
|
<tr style="height: 21px;">
|
||||||
<td style="width: 12.4839%; height: 21px;"><img src="./images/community-tier.png" alt="" /></td>
|
<td style="width: 12.4839%; height: 21px;"><img src="./images/community-tier.png" alt="" /></td>
|
||||||
<td style="width: 55.7271%; height: 21px;">Community Providers are published to the Terraform Registry by individual maintainers, groups of maintainers, or other members of the Terraform Community.</td>
|
<td style="width: 55.7271%; height: 21px;">Community providers are published to the Terraform Registry by individual maintainers, groups of maintainers, or other members of the Terraform community.</td>
|
||||||
<td style="width: 31.7889%; height: 21px;"><br />Maintainer’s individual or organization, e.g. <code>DeviaVir/gsuite</code></td>
|
<td style="width: 31.7889%; height: 21px;"><br />Maintainer’s individual or organization account, e.g. <code>DeviaVir/gsuite</code></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="height: 21px;">
|
<tr style="height: 21px;">
|
||||||
<td style="width: 12.4839%; height: 21px;"><img src="./images/archived-tier.png" alt="" /></td>
|
<td style="width: 12.4839%; height: 21px;"><img src="./images/archived-tier.png" alt="" /></td>
|
||||||
<td style="width: 55.7271%; height: 21px;">Archived Providers are Official or Verified Providers that are no longer maintained by HashiCorp or the community. This may occur if an API is deprecated or interest was low.</td>
|
<td style="width: 55.7271%; height: 21px;">Archived Providers are Official or Verified Providers that are no longer maintained by HashiCorp or the community. This may occur if an API is deprecated or interest was low.</td>
|
||||||
<td style="width: 31.7889%; height: 21px;"><code>HashiCorp</code> or Third-Party</td>
|
<td style="width: 31.7889%; height: 21px;"><code>hashicorp</code> or third-party</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -46,4 +58,4 @@ Terraform Providers are published and maintained by a variety of sources, includ
|
||||||
|
|
||||||
## Verified Provider Development Program
|
## Verified Provider Development Program
|
||||||
|
|
||||||
For any organization interested in joining our Provider Development Program, indicated with a `Verified` badge on published providers or modules, please take a look at our [Program Details](https://www.terraform.io/guides/terraform-provider-development-program.html) for further information.
|
If your organization is interested in joining our Provider Development Program (which sets the standards for publishing providers and modules with a `Verified` badge), please take a look at our [Program Details](/guides/terraform-provider-development-program.html) for further information.
|
|
@ -8,20 +8,23 @@ description: |-
|
||||||
|
|
||||||
# Publishing Providers
|
# Publishing Providers
|
||||||
|
|
||||||
Anyone can instantly publish and share a provider by signing into the Registry using their GitHub account and following a few easy steps. First we will walk through how to prepare a [Terraform Provider](https://www.terraform.io/docs/plugins/provider.html) for publishing, and then provide the steps to have it published live on the Registry.
|
Anyone can publish and share a provider by signing into the Registry using their GitHub account and following a few easy steps.
|
||||||
|
|
||||||
|
This page describes how to prepare a [Terraform Provider](/docs/plugins/provider.html) for publishing, and how to publish a prepared provider using the Registry's interface.
|
||||||
|
|
||||||
## Preparing your Provider
|
## Preparing your Provider
|
||||||
|
|
||||||
### Writing a Provider
|
### Writing a Provider
|
||||||
|
|
||||||
Providers published to the Terraform Registry are written and built in the same way as other Terraform Providers. A variety of resources are available to help our contributors build a quality integration:
|
Providers published to the Terraform Registry are written and built in the same way as other Terraform providers. A variety of resources are available to help our contributors build a quality integration:
|
||||||
|
|
||||||
* Writing a custom provider – [Full Tutorial](https://learn.hashicorp.com/tutorials/terraform/provider-setup)
|
- [Writing a custom provider – full tutorial](https://learn.hashicorp.com/tutorials/terraform/provider-setup)
|
||||||
* How-to build a provider – [Live video](https://www.youtube.com/watch?v=2BvpqmFpchI)
|
- [How to build a provider – Video](https://www.youtube.com/watch?v=2BvpqmFpchI)
|
||||||
* Sample provider developed by [partner](https://blog.container-solutions.com/write-terraform-provider-part-1)
|
- [Sample provider developed by a HashiCorp partner](https://blog.container-solutions.com/write-terraform-provider-part-1)
|
||||||
* Example providers for reference: [AWS](https://github.com/terraform-providers/terraform-provider-aws), [AzureRM](https://github.com/terraform-providers/terraform-provider-azurerm)
|
- Example providers for reference:
|
||||||
* [Contributing to Terraform guidelines](https://www.terraform.io/docs/extend/community/contributing.html)
|
- [AWS](https://github.com/terraform-providers/terraform-provider-aws)
|
||||||
|
- [AzureRM](https://github.com/terraform-providers/terraform-provider-azurerm)
|
||||||
|
- [Contributing to Terraform guidelines](/docs/extend/community/contributing.html)
|
||||||
|
|
||||||
~> **Important:** In order to be detected by the Terraform Registry, all provider repositories on GitHub must match the pattern `terraform-provider-{NAME}`, and the repository must be public.
|
~> **Important:** In order to be detected by the Terraform Registry, all provider repositories on GitHub must match the pattern `terraform-provider-{NAME}`, and the repository must be public.
|
||||||
|
|
||||||
|
@ -39,14 +42,14 @@ Terraform CLI and the Terraform Registry follow the Semantic Versioning specific
|
||||||
|
|
||||||
We have a list of [recommend OS / architecture combinations](/docs/registry/providers/os-arch.html) for which we suggest most providers create binaries.
|
We have a list of [recommend OS / architecture combinations](/docs/registry/providers/os-arch.html) for which we suggest most providers create binaries.
|
||||||
|
|
||||||
~> **Important:** Avoid modifying or replacing an already-released version of a Provider, as this will cause checksum errors for users when attempting to download the plugin. Instead, if changes are necessary, please release as a new version.
|
~> **Important:** Avoid modifying or replacing an already-released version of a provider, as this will cause checksum errors for users when attempting to download the plugin. Instead, if changes are necessary, please release as a new version.
|
||||||
|
|
||||||
#### Using GoReleaser locally
|
#### Using GoReleaser locally
|
||||||
|
|
||||||
GoReleaser is a tool for building Go projects for multiple platforms, creating a checksums file, and signing the release. It can also upload your release to GitHub Releases.
|
GoReleaser is a tool for building Go projects for multiple platforms, creating a checksums file, and signing the release. It can also upload your release to GitHub Releases.
|
||||||
|
|
||||||
1. Install [GoReleaser](https://goreleaser.com) using the [installation instructions](https://goreleaser.com/install/).
|
1. Install [GoReleaser](https://goreleaser.com) using the [installation instructions](https://goreleaser.com/install/).
|
||||||
1. Copy the [.goreleaser.yml file](https://github.com/hashicorp/terraform-provider-scaffolding/blob/master/.goreleaser.yml) from the hashicorp/scaffolding provider repository.
|
1. Copy the [.goreleaser.yml file](https://github.com/hashicorp/terraform-provider-scaffolding/blob/master/.goreleaser.yml) from the [hashicorp/terraform-provider-scaffolding](https://github.com/hashicorp/terraform-provider-scaffolding) repository.
|
||||||
1. Cache the password for your GPG private key with `gpg --armor --detach-sign` (see note below).
|
1. Cache the password for your GPG private key with `gpg --armor --detach-sign` (see note below).
|
||||||
1. Set your `GITHUB_TOKEN` to a [Personal Access Token](https://github.com/settings/tokens) that has the **public_repo** scope.
|
1. Set your `GITHUB_TOKEN` to a [Personal Access Token](https://github.com/settings/tokens) that has the **public_repo** scope.
|
||||||
1. Tag your version with `git tag v1.2.3`.
|
1. Tag your version with `git tag v1.2.3`.
|
||||||
|
@ -75,9 +78,9 @@ The release must meet the following criteria:
|
||||||
|
|
||||||
Before publishing a provider, you must first sign in to the Terraform Registry with a GitHub account (see [Signing into the Registry](/docs/registry/index.html#creating-an-account)). The GitHub account used must have the following permission scopes on the provider repository you’d like to publish. Permissions can be verified by going to your [GitHub Settings](https://github.com/settings/connections/applications/) and selecting the Terraform Registry Application under Authorized OAuth Apps.
|
Before publishing a provider, you must first sign in to the Terraform Registry with a GitHub account (see [Signing into the Registry](/docs/registry/index.html#creating-an-account)). The GitHub account used must have the following permission scopes on the provider repository you’d like to publish. Permissions can be verified by going to your [GitHub Settings](https://github.com/settings/connections/applications/) and selecting the Terraform Registry Application under Authorized OAuth Apps.
|
||||||
|
|
||||||
![screenshot: terraform registry github oauth required permissions](./images/github-oauth-permissions.png)
|
![screenshot: terraform registry github oauth required permissions](./images/github-oauth-permissions.png)
|
||||||
|
|
||||||
### Prepare and Add a Signing Key
|
### Preparing and Adding a Signing Key
|
||||||
|
|
||||||
All provider releases are required to be signed, thus you must provide HashiCorp with the public key for the GPG keypair that you will be signing releases with. The Terraform Registry will validate that the release is signed with this key when publishing each version, and Terraform will verify this during `terraform init`.
|
All provider releases are required to be signed, thus you must provide HashiCorp with the public key for the GPG keypair that you will be signing releases with. The Terraform Registry will validate that the release is signed with this key when publishing each version, and Terraform will verify this during `terraform init`.
|
||||||
|
|
||||||
|
@ -95,10 +98,10 @@ If you would like to publish a provider under your username (not a GitHub organi
|
||||||
|
|
||||||
In order to publish a provider under a GitHub organization, your public key must be added to the Terraform Registry by a HashiCorp employee. You can email it to terraform-registry@hashicorp.com, or your HashiCorp contact person (if you have one).
|
In order to publish a provider under a GitHub organization, your public key must be added to the Terraform Registry by a HashiCorp employee. You can email it to terraform-registry@hashicorp.com, or your HashiCorp contact person (if you have one).
|
||||||
|
|
||||||
### Publish Your Provider
|
### Publishing Your Provider
|
||||||
|
|
||||||
In the top-right navigation, select [Publish > Provider](https://registry.terraform.io/publish/provider) to begin the publishing process. Follow the prompts to select the organization and repository you would like to publish.
|
In the top-right navigation, select [Publish > Provider](https://registry.terraform.io/publish/provider) to begin the publishing process. Follow the prompts to select the organization and repository you would like to publish.
|
||||||
|
|
||||||
#### Terms of Use
|
#### Terms of Use
|
||||||
|
|
||||||
Anything published to the Terraform Registry is subject to our Terms of use. A copy of the terms are available for viewing at https://registry.terraform.io/terms
|
Anything published to the Terraform Registry is subject to our terms of use. A copy of the terms are available for viewing at https://registry.terraform.io/terms
|
||||||
|
|
|
@ -3,11 +3,15 @@
|
||||||
<h4><a href="/docs/registry/index.html">Terraform Registry</a></h4>
|
<h4><a href="/docs/registry/index.html">Terraform Registry</a></h4>
|
||||||
|
|
||||||
<ul class="nav docs-sidenav">
|
<ul class="nav docs-sidenav">
|
||||||
|
<li>
|
||||||
|
<a href="/docs/registry/index.html">Overview</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="#">Providers</a>
|
<a href="#">Providers</a>
|
||||||
<ul class="nav nav-auto-expand">
|
<ul class="nav nav-auto-expand">
|
||||||
<li<%= sidebar_current("docs-registry-provider-overview") %>>
|
<li<%= sidebar_current("docs-registry-provider-overview") %>>
|
||||||
<a href="/docs/registry/providers/overview.html">Overview</a>
|
<a href="/docs/registry/providers/index.html">Overview</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li<%= sidebar_current("docs-registry-provider-publishing") %>>
|
<li<%= sidebar_current("docs-registry-provider-publishing") %>>
|
||||||
|
@ -21,7 +25,7 @@
|
||||||
<li<%= sidebar_current("docs-registry-provider-os-arch") %>>
|
<li<%= sidebar_current("docs-registry-provider-os-arch") %>>
|
||||||
<a href="/docs/registry/providers/os-arch.html">Recommended OS and Architecture</a>
|
<a href="/docs/registry/providers/os-arch.html">Recommended OS and Architecture</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="/guides/terraform-provider-development-program.html">Provider Development Program</a>
|
<a href="/guides/terraform-provider-development-program.html">Provider Development Program</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
Loading…
Reference in New Issue