From b5cabfc8dbf117bf84cd42d07b6262cda236d1c1 Mon Sep 17 00:00:00 2001 From: Chris Griggs Date: Fri, 2 Feb 2018 10:17:30 -0800 Subject: [PATCH 1/9] Website Update provider name (#17270) * edit prvoider name --- website/docs/providers/index.html.markdown | 2 +- website/docs/providers/type/network-index.html.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/providers/index.html.markdown b/website/docs/providers/index.html.markdown index 2652e6a66..6cd5cfb4c 100644 --- a/website/docs/providers/index.html.markdown +++ b/website/docs/providers/index.html.markdown @@ -104,7 +104,7 @@ down to see all providers. Packet PagerDuty - PANOS + Palo Alto Networks PostgreSQL diff --git a/website/docs/providers/type/network-index.html.markdown b/website/docs/providers/type/network-index.html.markdown index 40b2d818a..fd9e4537f 100644 --- a/website/docs/providers/type/network-index.html.markdown +++ b/website/docs/providers/type/network-index.html.markdown @@ -29,7 +29,7 @@ in close collaboration with HashiCorp, and are tested by HashiCorp. [NS1](/docs/providers/ns1/index.html) -[PANOS](/docs/providers/panos/index.html) +[Palo Alto Networks](/docs/providers/panos/index.html) [PowerDNS](/docs/providers/powerdns/index.html) From 178cca7d014ad21f258f75799f0a280a167d9ee8 Mon Sep 17 00:00:00 2001 From: Chris Griggs Date: Tue, 6 Feb 2018 15:35:12 -0800 Subject: [PATCH 2/9] Website: Restructure Community providers list (#17286) * restructure community providers list * add vRA * add Gandi provider * re-organize --- .../type/community-index.html.markdown | 99 ++++++++++--------- 1 file changed, 51 insertions(+), 48 deletions(-) diff --git a/website/docs/providers/type/community-index.html.markdown b/website/docs/providers/type/community-index.html.markdown index 3663be6ff..f6d99560f 100644 --- a/website/docs/providers/type/community-index.html.markdown +++ b/website/docs/providers/type/community-index.html.markdown @@ -17,52 +17,55 @@ please fill out this [community providers form](https://docs.google.com/forms/d/ --- -[ACME/Let's Encrypt](https://github.com/vancluever/terraform-provider-acme) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -[Active Directory](https://github.com/GSLabDev/terraform-provider-ad) - -[Apigee](https://github.com/zambien/terraform-provider-apigee) - -[AVI](https://github.com/avinetworks/terraform-provider-avi) - -[Aviatrix](https://github.com/AviatrixSystems/terraform-provider-aviatrix) - -[CouchDB](https://github.com/nicolai86/terraform-provider-couchdb) - -[Digital Rebar](https://github.com/rackn/terraform-provider-drp/) - -[GoCD](https://github.com/drewsonne/terraform-provider-gocd) - -[Google Calendar](https://github.com/sethvargo/terraform-provider-googlecalendar) - -[Helm](https://github.com/mcuadros/terraform-provider-helm) - -[HTTP File Upload](https://github.com/GSLabDev/terraform-provider-httpfileupload) - -[HP OneView](https://github.com/HewlettPackard/terraform-provider-oneview) - -[Infoblox](https://github.com/sky-uk/terraform-provider-infoblox) - -[Jira](https://github.com/anubhavmishra/terraform-provider-jira) - -[Kafka](https://github.com/Mongey/terraform-provider-kafka) - -[Kibana](https://github.com/ewilde/terraform-provider-kibana) - -[Kong](https://github.com/kevholditch/terraform-provider-kong) - -[LXD](https://github.com/sl1pm4t/terraform-provider-lxd) - -[Sentry](https://github.com/jianyuan/terraform-provider-sentry) - -[Microsoft SCVMM](https://github.com/GSLabDev/terraform-provider-scvmm) - -[Open Day Light](https://github.com/GSLabDev/terraform-provider-odl) - -[Pass](https://github.com/camptocamp/terraform-provider-pass) - -[Puppet CA](https://github.com/camptocamp/terraform-provider-puppetca) - -[PuppetDB](https://github.com/camptocamp/terraform-provider-puppetdb) - -[Runscope](https://github.com/ewilde/terraform-provider-runscope) +
ACME/Let's EncryptActive DirectoryApigee
AVIAviatrixCouchDB
Digital RebarGandiGoCD
Google CalendarHelmHetzner Cloud
HTTP File UploadHP OneViewInfoblox
JiraKafkaKibana
KongLXDOpen Day Light
PassPuppet CAPuppetDB
RunscopeSakuraCloudSentry
SignalFxSCVMMvRealize Automation
From 07c3893653a1ced2a9e7f873ce8e95819fdaf7d1 Mon Sep 17 00:00:00 2001 From: Nick Fagerlund Date: Wed, 7 Feb 2018 09:15:55 -0800 Subject: [PATCH 3/9] website: private module registry documentation --- .../docs/commands/cli-config.html.markdown | 42 +++++++---- website/docs/modules/sources.html.markdown | 36 +++++++++- website/docs/modules/usage.html.markdown | 28 ++++---- website/docs/registry/index.html.md | 2 +- website/docs/registry/modules/publish.html.md | 24 ++++--- website/docs/registry/modules/use.html.md | 37 ++++++++-- website/docs/registry/private.html.md | 69 ++++++++----------- 7 files changed, 153 insertions(+), 85 deletions(-) diff --git a/website/docs/commands/cli-config.html.markdown b/website/docs/commands/cli-config.html.markdown index f70e04669..e63dec699 100644 --- a/website/docs/commands/cli-config.html.markdown +++ b/website/docs/commands/cli-config.html.markdown @@ -7,17 +7,13 @@ description: |- configuration file. --- -# CLI Configuration File +# CLI Configuration File (`.terraformrc`/`terraform.rc`) -The CLI configuration file allows customization of some behaviors of the -Terraform CLI in general. This is separate from -[your infrastructure configuration](/docs/configuration/index.html), and -provides per-user customization that applies regardless of which working -directory Terraform is being applied to. +The CLI configuration file configures per-user settings for CLI behaviors, +which apply across all Terraform working directories. This is separate from +[your infrastructure configuration](/docs/configuration/index.html). -For example, the CLI configuration file can be used to activate a shared -plugin cache directory that allows provider plugins to be shared between -different working directories, as described in more detail below. +## Location The configuration is placed in a single file whose location depends on the host operating system: @@ -52,18 +48,40 @@ disable_checkpoint = true The following settings can be set in the CLI configuration file: -* `disable_checkpoint` - when set to `true`, disables +- `disable_checkpoint` — when set to `true`, disables [upgrade and security bulletin checks](/docs/commands/index.html#upgrade-and-security-bulletin-checks) that require reaching out to HashiCorp-provided network services. -* `disable_checkpoint_signature` - when set to `true`, allows the upgrade and +- `disable_checkpoint_signature` — when set to `true`, allows the upgrade and security bulletin checks described above but disables the use of an anonymous id used to de-duplicate warning messages. -* `plugin_cache_dir` - enables +- `plugin_cache_dir` — enables [plugin caching](/docs/configuration/providers.html#provider-plugin-cache) and specifies, as a string, the location of the plugin cache directory. +- `credentials` — provides credentials for use with Terraform Enterprise's + [private module registry.](/docs/enterprise/registry/index.html) This is + only necessary when running Terraform on the command line; runs managed by + Terraform Enterprise can access private modules automatically. + + This setting is a repeatable block, where the block label is a hostname + (either `app.terraform.io` or the hostname of your private install) and + the block body contains a `token` attribute. Whenever Terraform requests + module data from that hostname, it will authenticate with that token. + + ``` hcl + credentials "app.terraform.io" { + token = "xxxxxx.atlasv1.zzzzzzzzzzzzz" + } + ``` + + ~> **Note:** The credentials hostname must match the hostname in your module + sources. If your Terraform Enterprise instance is available at multiple + hostnames, use one of them consistently. (The SaaS version of Terraform + Enterprise responds to API calls at both its newer hostname, + app.terraform.io, and its historical hostname, atlas.hashicorp.com.) + ## Deprecated Settings The following settings are supported for backward compatibility but are no diff --git a/website/docs/modules/sources.html.markdown b/website/docs/modules/sources.html.markdown index d759762b1..bad5abed6 100644 --- a/website/docs/modules/sources.html.markdown +++ b/website/docs/modules/sources.html.markdown @@ -47,12 +47,16 @@ Updates for file paths are automatic: when "downloading" the module using the [g The [Terraform Registry](https://registry.terraform.io) is an index of modules written by the Terraform community. The Terraform Registry is the easiest -way to get started with Terraform and to find modules to start with. -The registry is integrated directly into Terraform: +way to get started with Terraform and to find modules. + +The registry is integrated directly into Terraform. You can reference any +registry module with a source string of `//`. Each +module's information page on the registry includes its source string. ```hcl module "consul" { source = "hashicorp/consul/aws" + version = "0.1.0" } ``` @@ -60,9 +64,33 @@ The above example would use the [Consul module for AWS](https://registry.terraform.io/modules/hashicorp/consul/aws) from the public registry. +Registry modules support versioning. You can provide a specific version, or use +flexible [version constraints](/docs/modules/usage.html#module-versions). + You can learn more about the registry at the [Terraform Registry documentation](/docs/registry/modules/use.html#using-modules). +## Private Registries + +[Terraform Enterprise](https://www.hashicorp.com/products/terraform) provides a +[private module registry](/docs/enterprise/registry/index.html), to help +you share code within your organization. Other services can also provide +private registries by implementing [Terraform's registry API](/docs/registry/api.html). + +Source strings for private registry modules are similar to public modules, but +also include a hostname. They should follow the format +`///`. + +```hcl +module "vpc" { + source = "app.terraform.io/example_corp/vpc/aws" + version = "0.9.3" +} +``` + +Modules from private registries support versioning, just like modules from the +public Terraform Registry. + ## GitHub Terraform will automatically recognize GitHub URLs and turn them into a link to the specific Git repository. The syntax is simple: @@ -100,7 +128,9 @@ You can use the same parameters to GitHub repositories as you can generic Git re If you need Terraform to fetch modules from private GitHub repos, you must provide Terraform with credentials to authenticate as a user with read access to those repos. - If you run Terraform only on your local machine, you can specify the module source as an SSH URI (like `git@github.com:hashicorp/example.git`) and Terraform will use your default SSH key to authenticate. -- If you use Terraform Enterprise, you can use SSH URIs. You'll need to add an SSH private key to your organization and assign it to any workspace that fetches modules from private repos. [See the Terraform Enterprise docs about SSH keys for cloning modules.](/docs/enterprise/workspaces/ssh-keys.html) +- If you use Terraform Enterprise, consider using the private module registry. It makes handling credentials easier, and provides full versioning support. (See [Private Registries](#private-registries) above for more info.) + + If you need to use modules directly from Git, you can use SSH URIs with Terraform Enterprise. You'll need to add an SSH private key to your organization and assign it to any workspace that fetches modules from private repos. [See the Terraform Enterprise docs about SSH keys for cloning modules.](/docs/enterprise/workspaces/ssh-keys.html) - If you need to run Terraform on a remote machine like a CI worker, you either need to write an SSH key to disk and set the `GIT_SSH_COMMAND` environment variable appropriately during the worker's provisioning process, or create a [GitHub machine user](https://developer.github.com/guides/managing-deploy-keys/#machine-users) with read access to the repos in question and embed its credentials into the modules' `source` parameters: ```hcl diff --git a/website/docs/modules/usage.html.markdown b/website/docs/modules/usage.html.markdown index d49cd776f..64ff092b6 100644 --- a/website/docs/modules/usage.html.markdown +++ b/website/docs/modules/usage.html.markdown @@ -36,9 +36,11 @@ The only required configuration key for a module is the `source` parameter. The value of this tells Terraform where to download the module's source code. Terraform comes with support for a variety of module sources. -The recommended source for external modules is a -[Terraform Registry](/docs/registry/index.html), which provides the full -capabilities of modules such as version constraints. +We recommend using modules from the public [Terraform Registry](/docs/registry/index.html) +or from [Terraform Enterprise's private module registry](/docs/enterprise/registry/index.html). +These sources support version constraints for a more reliable experience, and +provide a searchable marketplace for finding the modules you need. + Registry modules are specified using a simple slash-separated path like the `hashicorp/consul/aws` path used in the above example. The full source string for each registry module can be found from the registry website. @@ -72,11 +74,10 @@ a newer version will be used only if it is within the given constraint. ## Module Versions -It is recommended to explicitly constrain the acceptable version numbers for -each external module so that upstream changes aren't automatically adopted, -since this may result in unexpected or unwanted changes changes. +We recommend explicitly constraining the acceptable version numbers for +each external module to avoid unexpected or unwanted changes. -The `version` attribute within the `module` block is used for this purpose: +Use the `version` attribute in the `module` block to specify versions: ```shell module "consul" { @@ -105,12 +106,13 @@ may be appropriate if a semantic versioning methodology is used consistently or if there is a well-defined release process that avoids unwanted updates. Version constraints are supported only for modules installed from a module -registry, such as the [Terraform Registry](https://registry.terraform.io/). -Other module sources may provide their own versioning mechanisms within the -source string itself, or they may not support versions at all. In particular, -modules whose sources are local file paths do not support `version` because -they are constrained to share the same version as their caller by being -obtained by the same source repository. +registry, such as the [Terraform Registry](https://registry.terraform.io/) or +[Terraform Enterprise's private module registry](/docs/enterprise/registry/index.html). +Other module sources can provide their own versioning mechanisms within the +source string itself, or might not support versions at all. In particular, +modules sourced from local file paths do not support `version`; since +they're loaded from the same source repository, they always share the same +version as their caller. ## Configuration diff --git a/website/docs/registry/index.html.md b/website/docs/registry/index.html.md index 8ae94ad59..ac7e942bd 100644 --- a/website/docs/registry/index.html.md +++ b/website/docs/registry/index.html.md @@ -9,7 +9,7 @@ description: |- # Terraform Registry The [Terraform Registry](https://registry.terraform.io) is a repository -of modules written by the Terraform community. The registry can be used to +of modules written by the Terraform community. The registry can help you get started with Terraform more quickly, see examples of how Terraform is written, and find pre-made modules for infrastructure components you require. diff --git a/website/docs/registry/modules/publish.html.md b/website/docs/registry/modules/publish.html.md index b53e578d0..f7a870fd0 100644 --- a/website/docs/registry/modules/publish.html.md +++ b/website/docs/registry/modules/publish.html.md @@ -29,28 +29,30 @@ Meeting the requirements for publishing a module is extremely easy. The list may appear long only to ensure we're detailed, but adhering to the requirements should happen naturally. -* **GitHub.** The module must be on GitHub and must be a public repo. +- **GitHub.** The module must be on GitHub and must be a public repo. This is only a requirement for the [public registry](https://registry.terraform.io). If you're using a private registry, you may ignore this requirement. -* **Repository name.** The repository name must be `terraform-PROVIDER-NAME` -where PROVIDER is the primary provider to associate with the module and -NAME is a unique name for the module. The name may contain hyphens. Example: -`terraform-aws-consul` or `terraform-google-vault`. +- **Named `terraform--`.** Module repositories must use this +three-part name format, where `` reflects the type of infrastructure the +module manages and `` is the main provider where it creates that +infrastructure. The `` segment can contain additional hyphens. Examples: +`terraform-google-vault` or `terraform-aws-ec2-instance`. -* **Repository description.** The GitHub repository description is used +- **Repository description.** The GitHub repository description is used to populate the short description of the module. This should be a simple one sentence description of the module. -* **Standard Module Structure.** The module must adhere to the +- **Standard module structure.** The module must adhere to the [standard module structure](/docs/modules/create.html#standard-module-structure). This allows the registry to inspect your module and generate documentation, track resource usage, and more. -* **Tags for Releases.** Releases are detected by creating and pushing -tags. The tag name must be a semantic version that can optionally be prefixed -with a `v`. Examples are `v1.0.4` and `0.9.2`. To publish a module initially, -at least one release tag must be present. +- **`x.y.z` tags for releases.** The registry uses tags to identify module +versions. Release tag names must be a [semantic version](http://semver.org), +which can optionally be prefixed with a `v`. For example, `v1.0.4` and `0.9.2`. +To publish a module initially, at least one release tag must be present. Tags +that don't look like version numbers are ignored. ## Publishing a Public Module diff --git a/website/docs/registry/modules/use.html.md b/website/docs/registry/modules/use.html.md index 433095c3d..9623d7fb0 100644 --- a/website/docs/registry/modules/use.html.md +++ b/website/docs/registry/modules/use.html.md @@ -21,20 +21,21 @@ terms. On the results page, filters can be used further refine search results. By default, only [verified modules](/docs/registry/modules/verified.html) are shown in search results. Verified modules are reviewed by HashiCorp to -ensure stability and compatibility. By using the filters, you may view unverified +ensure stability and compatibility. By using the filters, you can view unverified modules as well. ## Using Modules The Terraform Registry is integrated directly into Terraform. This makes it easy to reference any module in the registry. The syntax for referencing -a registry module is `namespace/name/provider`. For example: +a registry module is `//`. For example: `hashicorp/consul/aws`. ~> **Note:** Module registry integration was added in Terraform v0.10.6, and full versioning support in v0.11.0. When viewing a module on the registry on a tablet or desktop, usage instructions -are shown on the right side. You can copy and paste this to get started with any module. Some modules may +are shown on the right side. +You can copy and paste this to get started with any module. Some modules have required inputs you must set before being able to use the module. ```hcl @@ -44,6 +45,30 @@ module "consul" { } ``` +The `terraform init` command will download and cache any modules referenced by +a configuration. + +### Private Registry Module Sources + +You can also use modules from a private registry, like the one provided by +Terraform Enterprise. Private registry modules have source strings of the form +`///`. This is the same format as the +public registry, but with an added hostname prefix. + +```hcl +module "vpc" { + source = "app.terraform.io/example_corp/vpc/aws" + version = "0.9.3" +} +``` + +Depending on the registry you're using, you might also need to configure +credentials to access modules. See your registry's documentation for details. +[Terraform Enterprise's private registry is documented here.](/docs/enterprise/registry/index.html) + +Private registry module sources are supported in Terraform v0.11.0 and +newer. + ## Module Versions Each module in the registry is versioned. These versions syntactically must @@ -54,6 +79,6 @@ Terraform since version 0.11 will resolve any provided [module version constraints](/docs/modules/usage.html#module-versions) and using them is highly recommended to avoid pulling in breaking changes. -Terraform from version 10.6 through to 0.11 had partial support for the registry -protocol, however will not honor version constraints and always download the -latest version. +Terraform versions after 0.10.6 but before 0.11 have partial support for the registry +protocol, but always download the latest version instead of honoring version +constraints. diff --git a/website/docs/registry/private.html.md b/website/docs/registry/private.html.md index 16b63cf80..1d7380bde 100644 --- a/website/docs/registry/private.html.md +++ b/website/docs/registry/private.html.md @@ -3,52 +3,43 @@ layout: "registry" page_title: "Terraform Registry - Private Registry" sidebar_current: "docs-registry-private" description: |- - Terraform is capable of loading modules from private registries for private modules via Terraform Enterprise. + Terraform can load private modules from private registries via Terraform Enterprise. --- -# Private Registry +# Private Registries The registry at [registry.terraform.io](https://registry.terraform.io) -may only host public modules. Terraform is capable of loading modules from -private registries for private modules. +only hosts public modules, but most organizations have some modules that +can't, shouldn't, or don't need to be public. -Official private registries are available via [Terraform Enterprise](https://www.hashicorp.com/products/terraform). -There are two tiers: Pro and Enterprise. The Pro version is only available -as a SaaS service whereas the Enterprise version is available for private -install. Both versions fully support private registries. +You can load private modules [directly from version control and other +sources](/docs/modules/sources.html), but those sources don't support [version +constraints](/docs/modules/usage.html#module-versions) or a browsable +marketplace of modules, both of which are important for enabling a +producers-and-consumers content model in a large organization. -Terraform interacts with module registries using [the registry API](/docs/registry/api.html). +If your organization is specialized enough that teams frequently use modules +created by other teams, you will benefit from a private module registry. + +## Terraform Enterprise's Private Registry + +[Terraform Enterprise](https://www.hashicorp.com/products/terraform) (TFE) +includes a private module registry, available at both Pro and Premium tiers. + +It uses the same VCS-backed tagged release workflow as the Terraform Registry, +but imports modules from your private VCS repos (on any of TFE's supported VCS +providers) instead of requiring public GitHub repos. You can seamlessly +reference private modules in your Terraform configurations (just include a +hostname in the module source), and TFE's UI provides a searchable marketplace +of private modules to help your users find the code they need. + +[Terraform Enterprise's private module registry is documented here.](/docs/enterprise/registry/index.html) + +## Other Private Registries + +Terraform can use versioned modules from any service that implements +[the registry API](/docs/registry/api.html). The Terraform open source project does not provide a server implementation, but we welcome community members to create their own private registries by following the published protocol. -Modules can alternatively be referenced -[directly from version control and other sources](/docs/modules/sources.html), -but only registry modules support certain features such as -[version constraints](/docs/modules/usage.html#module-versions). - -## Private Registry Module Sources - -Public Terraform Registry modules have source strings of the form -`namespace/name/provider`. Private registries -- whether integrated into -Terraform Enterprise or via a third-party implementation -- require an -additional hostname prefix: - -```hcl -module "example" { - source = "example.com/namespace/name/provider" -} -``` - -Private registry module sources are supported in Terraform v0.11.0 and -newer. - -## Coming Soon - -Terraform Enterprise will be publicly available for self service signup -soon. In the mean time, if you're interested in private -registries and being part of the beta, please contact us at -[hello@hashicorp.com](mailto:hello@hashicorp.com). - -When Terraform Enterprise is publicly available, Private Registry documentation -will be available here. From 9a3e86104e976bc791b348a1c72b8a77e801fc4f Mon Sep 17 00:00:00 2001 From: Joshua Carp Date: Tue, 13 Feb 2018 15:07:05 -0500 Subject: [PATCH 4/9] Document aws_route53_record importable (#17306) See https://github.com/hashicorp/terraform-website/issues/20 --- website/docs/import/importability.html.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/import/importability.html.md b/website/docs/import/importability.html.md index b8e86d25e..b29ba82a4 100644 --- a/website/docs/import/importability.html.md +++ b/website/docs/import/importability.html.md @@ -88,6 +88,7 @@ To make a resource importable, please see the * aws_redshift_subnet_group * aws_route53_delegation_set * aws_route53_health_check +* aws_route53_record * aws_route53_zone * aws_route_table * aws_s3_bucket From 46754c9917d0ed454852ccaf0397d79525cc4d9d Mon Sep 17 00:00:00 2001 From: Nick Fagerlund Date: Tue, 27 Feb 2018 14:48:04 -0800 Subject: [PATCH 5/9] website: Deprecation notes about "terraform push" Also: - In the getting started guide, the TFE content was all tailored to the older run-locally workflow. I've replaced it with some brief explanation and a link to the dedicated TFE getting started guide. - Fixed a sidebar link glitch in the configuration section. (Both "Terraform" and "Terraform Enterprise" were marked as active if you were on the TFE page.) - Renamed the "Terraform Enterprise" page "Terraform Push." (Some people have gotten confused and landed on this page when trying to set up the `atlas` remote backend.) --- website/docs/commands/push.html.markdown | 10 ++- .../terraform-enterprise.html.md | 34 ++++---- .../getting-started/remote.html.markdown | 84 +++---------------- website/layouts/docs.erb | 4 +- 4 files changed, 37 insertions(+), 95 deletions(-) diff --git a/website/docs/commands/push.html.markdown b/website/docs/commands/push.html.markdown index ee667bce5..0fa68ae2e 100644 --- a/website/docs/commands/push.html.markdown +++ b/website/docs/commands/push.html.markdown @@ -8,11 +8,13 @@ description: |- # Command: push +~> **Important:** The `terraform push` command is deprecated, and only works with [the legacy version of Terraform Enterprise](/docs/enterprise-legacy/index.html). In the current version of Terraform Enterprise, you can upload configurations using the API. See [the docs about API-driven runs](/docs/enterprise/workspaces/run-api.html) for more details. + The `terraform push` command uploads your Terraform configuration to be managed by HashiCorp's [Terraform Enterprise](https://www.hashicorp.com/products/terraform/). -By uploading your configuration to Terraform Enterprise, you can automatically run -Terraform for you, will save all state transitions, will save plans, -and will keep a history of all Terraform runs. +Terraform Enterprise can automatically run +Terraform for you, save all state transitions, save plans, +and keep a history of all Terraform runs. This makes it significantly easier to use Terraform as a team: team members modify the Terraform configurations locally and continue to @@ -127,6 +129,8 @@ or plan), and the `-overwrite` flag tells the push command to update Terraform E ## Remote State Requirement +~> **Important:** This section only refers to the legacy version of Terraform Enterprise. The current version of Terraform Enterprise always manages its own state, and does not support arbitrary remote state backends. + `terraform push` requires that [remote state](/docs/state/remote.html) is enabled. The reasoning for this is simple: `terraform push` sends your diff --git a/website/docs/configuration/terraform-enterprise.html.md b/website/docs/configuration/terraform-enterprise.html.md index e59511f75..603ec467f 100644 --- a/website/docs/configuration/terraform-enterprise.html.md +++ b/website/docs/configuration/terraform-enterprise.html.md @@ -1,36 +1,26 @@ --- layout: "docs" -page_title: "Configuring Terraform Enterprise" -sidebar_current: "docs-config-terraform-enterprise" +page_title: "Configuring Terraform Push" +sidebar_current: "docs-config-push" description: |- - Terraform Enterprise is the ideal way to use Terraform in a team environment. Terraform Enterprise will run Terraform for you, safely handle parallelization across different team members, save run history along with plans, and more. + Terraform's push command was a way to interact with the legacy version of Terraform Enterprise. It is not supported in the current version of Terraform Enterprise. --- -# Terraform Enterprise Configuration +# Terraform Push Configuration -Terraform can be configured to be able to upload to HashiCorp's -[Terraform Enterprise](https://www.hashicorp.com/products/terraform/). This configuration doesn't change -the behavior of Terraform itself, it only configures your Terraform -configuration to support being uploaded to Terraform Enterprise via the -[push command](/docs/commands/push.html). +~> **Important:** The `terraform push` command is deprecated, and only works with [the legacy version of Terraform Enterprise](/docs/enterprise-legacy/index.html). In the current version of Terraform Enterprise, you can upload configurations using the API. See [the docs about API-driven runs](/docs/enterprise/workspaces/run-api.html) for more details. -For more information on the benefits of uploading your Terraform -configuration to Terraform Enterprise, please see the -[push command documentation](/docs/commands/push.html). +The [`terraform push` command](/docs/commands/push.html) uploads a configuration to a Terraform Enterprise (legacy) environment. The name of the environment (and the organization it's in) can be specified on the command line, or as part of the Terraform configuration in an `atlas` block. + +The `atlas` block does not configure remote state; it only configures the push command. For remote state, [use a `terraform { backend "" {...} }` block](/docs/backends/config.html). This page assumes you're familiar with the [configuration syntax](/docs/configuration/syntax.html) already. -~> **Why is this called "atlas"?** Atlas was previously a commercial offering -from HashiCorp that included a full suite of enterprise products. The products -have since been broken apart into their individual products, like **Terraform -Enterprise**. While this transition is in progress, you may see references to -"atlas" in the documentation. We apologize for the inconvenience. - ## Example -Terraform Enterprise configuration looks like the following: +Terraform push configuration looks like the following: ```hcl atlas { @@ -38,6 +28,12 @@ atlas { } ``` +~> **Why is this called "atlas"?** Atlas was previously a commercial offering +from HashiCorp that included a full suite of enterprise products. The products +have since been broken apart into their individual products, like **Terraform +Enterprise**. While this transition is in progress, you may see references to +"atlas" in the documentation. We apologize for the inconvenience. + ## Description The `atlas` block configures the settings when Terraform is diff --git a/website/intro/getting-started/remote.html.markdown b/website/intro/getting-started/remote.html.markdown index b24a04100..ea3cfe0c0 100644 --- a/website/intro/getting-started/remote.html.markdown +++ b/website/intro/getting-started/remote.html.markdown @@ -10,12 +10,14 @@ description: |- We've now seen how to build, change, and destroy infrastructure from a local machine. This is great for testing and development, -however in production environments it is more responsible to run -Terraform remotely and store a master Terraform state remotely. +but in production environments it is more responsible to share responsibility +for infrastructure. The best way to do this is by running Terraform in a remote +environment with shared access to state. -Terraform supports a feature known as [remote backends](/docs/backends) -to support this. Backends are the recommended way to use Terraform in -a team environment. +Terraform supports team-based workflows with a feature known as [remote +backends](/docs/backends). Remote backends allow Terraform to use a shared +storage space for state data, so any member of your team can use Terraform to +manage the same infrastructure. Depending on the features you wish to use, Terraform has multiple remote backend options. You could use Consul for state storage, locking, and @@ -31,7 +33,7 @@ When a proposed change is accepted, the Terraform logs are stored, resulting in a linear history of infrastructure states to help with auditing and policy enforcement. Additional benefits to running Terraform remotely include moving access -credentials off of developer machines and releasing local machines +credentials off of developer machines and freeing local machines from long-running Terraform processes. ## How to Store State Remotely @@ -90,75 +92,15 @@ once again ask if you want to migrate your state back to local. ## Terraform Enterprise -HashiCorp (the makers of Terraform) also provide a commercial solution which -functions as a Terraform backend as well as enabling many other features such -as remote apply, run history, state history, state diffing, and more. +[Terraform Enterprise](https://www.hashicorp.com/products/terraform/?utm_source=oss&utm_medium=getting-started&utm_campaign=terraform) is a commercial solution which combines a predictable and reliable shared run environment with tools to help you work together on Terraform configurations and modules. -This section will guide you through a demo of Terraform Enterprise. Note that -this is commercial software. If you are not interested at this time, you may -skip this section. +Although Terraform Enterprise can act as a standard remote backend to support Terraform runs on local machines, it works even better as a remote run environment. It supports two main workflows for performing Terraform runs: -First, [create an account here](https://atlas.hashicorp.com/account/new?utm_source=oss&utm_medium=getting-started&utm_campaign=terraform) unless you already have one. +- A VCS-driven workflow, in which it automatically queues plans whenever changes are committed to your configuration's VCS repo. +- An API-driven workflow, in which a CI pipeline or other automated tool can upload configurations directly. -Terraform uses your access token to securely communicate with Terraform -Enterprise. To generate a token: select your username in the left side -navigation menu, click "Accounts Settings", "click "Tokens", then click -"Generate". +For a hands-on introduction to Terraform Enterprise, [follow the Terraform Enterprise getting started guide](/docs/enterprise/getting-started/index.html). -For the purposes of this tutorial you can use this token by exporting it to -your local shell session: - -``` -$ export ATLAS_TOKEN=ATLAS_ACCESS_TOKEN -``` - -Replace `ATLAS_ACCESS_TOKEN` with the token generated earlier. Next, -configure the Terraform Enterprise backend: - -```hcl -terraform { - backend "atlas" { - name = "USERNAME/getting-started" - } -} -``` - -Replace `USERNAME` with your Terraform Enterprise username. Note that the -backend name is "atlas" for legacy reasons and will be renamed soon. - -Remember to run `terraform init`. At this point, Terraform is using Terraform -Enterprise for everything shown before with Consul. Next, we'll show you some -additional functionality Terraform Enterprise enables. - -Before you [push](/docs/commands/push.html) your Terraform configuration to -Terraform Enterprise you'll need to start a local version control system with -at least one commit. Here is an example using `git`. - -``` -$ git init -$ git add example.tf -$ git commit -m "init commit" -``` - -Next, [push](/docs/commands/push.html) your Terraform configuration: - -``` -$ terraform push -``` - -This will automatically trigger a `terraform plan`, which you can -review in the [Terraform page](https://atlas.hashicorp.com/terraform). -If the plan looks correct, hit "Confirm & Apply" to execute the -infrastructure changes. - -Running Terraform in Terraform Enterprise creates a complete history of -infrastructure changes, a sort of version control -for infrastructure. Similar to application version control -systems such as Git or Subversion, this makes changes to -infrastructure an auditable, repeatable, -and collaborative process. With so much relying on the -stability of your infrastructure, version control is a -responsible choice for minimizing downtime. ## Next You now know how to create, modify, destroy, version, and diff --git a/website/layouts/docs.erb b/website/layouts/docs.erb index e68f37fd0..c8535b44d 100644 --- a/website/layouts/docs.erb +++ b/website/layouts/docs.erb @@ -52,8 +52,8 @@ Terraform - > - Terraform Enterprise + > + Terraform Push (deprecated) > From 445be03916a2da9a59e524b96756af4446209ef3 Mon Sep 17 00:00:00 2001 From: Chris Griggs Date: Wed, 28 Feb 2018 16:47:56 -0800 Subject: [PATCH 6/9] website: Link to MongoDB Atlas community provider --- .../docs/providers/type/community-index.html.markdown | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/website/docs/providers/type/community-index.html.markdown b/website/docs/providers/type/community-index.html.markdown index f6d99560f..902b66d2d 100644 --- a/website/docs/providers/type/community-index.html.markdown +++ b/website/docs/providers/type/community-index.html.markdown @@ -50,22 +50,27 @@ please fill out this [community providers form](https://docs.google.com/forms/d/ Kong LXD - Open Day Light + MongoDB Atlas + Open Day Light Pass Puppet CA - PuppetDB + PuppetDB Runscope SakuraCloud - Sentry + Sentry SignalFx SCVMM + + vRealize Automation + + From dd3d9e298d22f51231ac3c35c94f5a425663717a Mon Sep 17 00:00:00 2001 From: Chris Griggs Date: Mon, 5 Mar 2018 15:40:08 -0800 Subject: [PATCH 7/9] website: two more community providers --- .../providers/type/community-index.html.markdown | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/website/docs/providers/type/community-index.html.markdown b/website/docs/providers/type/community-index.html.markdown index 902b66d2d..1cc76124c 100644 --- a/website/docs/providers/type/community-index.html.markdown +++ b/website/docs/providers/type/community-index.html.markdown @@ -44,33 +44,33 @@ please fill out this [community providers form](https://docs.google.com/forms/d/ Jira + JumpCloud Kafka - Kibana + Kibana Kong LXD - MongoDB Atlas + Matchbox + MongoDB Atlas Open Day Light + + Pass Puppet CA + PuppetDB - PuppetDB Runscope SakuraCloud + Sentry - Sentry SignalFx SCVMM - - vRealize Automation - - From ddb9af57dc2054bb17cc461a6402344d7f7951a0 Mon Sep 17 00:00:00 2001 From: Matthew Frahry Date: Fri, 23 Mar 2018 14:49:35 -0600 Subject: [PATCH 8/9] Update index.html.markdown --- website/docs/providers/index.html.markdown | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/website/docs/providers/index.html.markdown b/website/docs/providers/index.html.markdown index 6cd5cfb4c..868118ac6 100644 --- a/website/docs/providers/index.html.markdown +++ b/website/docs/providers/index.html.markdown @@ -93,53 +93,53 @@ down to see all providers. 1&1 - Oracle Public Cloud OpenStack - - OpenTelekomCloud - OpsGenie - OVH + OpsGenie + Oracle Public Cloud + Oracle Cloud Platform + + + OVH Packet PagerDuty - Palo Alto Networks + Palo Alto Networks PostgreSQL PowerDNS - ProfitBricks + ProfitBricks RabbitMQ Rancher - Random + Random Rundeck Scaleway - SoftLayer + SoftLayer StatusCake Spotinst - Template + Template Terraform Terraform Enterprise - TLS + TLS Triton UltraDNS - Vault + Vault VMware vCloud Director VMware vSphere - From 7c666241776e26965cdca8025225cc19b8cf9107 Mon Sep 17 00:00:00 2001 From: Matthew Frahry Date: Fri, 23 Mar 2018 14:50:30 -0600 Subject: [PATCH 9/9] Update major-index.html.markdown --- website/docs/providers/type/major-index.html.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/docs/providers/type/major-index.html.markdown b/website/docs/providers/type/major-index.html.markdown index dd2dc7258..ab6200320 100644 --- a/website/docs/providers/type/major-index.html.markdown +++ b/website/docs/providers/type/major-index.html.markdown @@ -27,6 +27,8 @@ tested by HashiCorp. [Google Cloud](/docs/providers/google/index.html) +[Oracle Cloud Platform](/docs/providers/oraclepaas/index.html) + [Oracle Public Cloud](/docs/providers/opc/index.html) [VMware vSphere](/docs/providers/vsphere/index.html)