website: content updates for developer (#31779)
Co-authored-by: Matthew Garrell <69917312+mgarrell777@users.noreply.github.com> Co-authored-by: Laura Pacilio <83350965+laurapacilio@users.noreply.github.com> Co-authored-by: Kevin Wang <kwangsan@gmail.com> Co-authored-by: Judith Malnick <judith@hashicorp.com> Co-authored-by: Martin Atkins <mart@degeneration.co.uk> Co-authored-by: HashiBot <62622282+hashibot-web@users.noreply.github.com>
@ -443,6 +443,5 @@
|
||||
]
|
||||
},
|
||||
{ "divider": true },
|
||||
{ "title": "Terraform Internals", "href": "/internals" },
|
||||
{ "divider": true }
|
||||
{ "title": "Terraform Internals", "href": "/internals" }
|
||||
]
|
||||
|
@ -57,6 +57,5 @@
|
||||
{ "divider": true },
|
||||
{ "title": "Terraform CLI", "href": "/cli" },
|
||||
{ "divider": true },
|
||||
{ "title": "Configuration Language", "href": "/language" },
|
||||
{ "divider": true }
|
||||
{ "title": "Configuration Language", "href": "/language" }
|
||||
]
|
||||
|
@ -1043,6 +1043,5 @@
|
||||
"path": "v1-compatibility-promises"
|
||||
},
|
||||
{ "divider": true },
|
||||
{ "title": "Terraform Internals", "href": "/internals" },
|
||||
{ "divider": true }
|
||||
{ "title": "Terraform Internals", "href": "/internals" }
|
||||
]
|
||||
|
@ -7,7 +7,7 @@ description: >-
|
||||
|
||||
# CLI Authentication
|
||||
|
||||
> **Hands-on:** Try the [Authenticate the CLI with Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-login?in=terraform/cloud&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Authenticate the CLI with Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-login?in=terraform/cloud&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
[Terraform Cloud](/cloud) and
|
||||
[Terraform Enterprise](/enterprise) are platforms that perform
|
||||
|
@ -8,10 +8,9 @@ The Terraform CLI integration with Terraform Cloud lets you use Terraform Cloud
|
||||
|
||||
Using Terraform Cloud through the command line is called the [CLI-driven run workflow](/cloud-docs/run/cli). When you use the CLI workflow, operations like `terraform plan` or `terraform apply` are remotely executed in Terraform Cloud's run environment by default, with log output streaming to the local terminal. This lets you use Terraform Cloud features within the familiar Terraform CLI workflow, including variables encrypted at rest in a Terraform Cloud workspace, cost estimates, and policy checking.
|
||||
|
||||
> **Hands On:** Try the [Migrate State to Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-migrate) tutorial on HashiCorp Learn.
|
||||
> **Hands On:** Try the [Migrate State to Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-migrate) tutorial.
|
||||
|
||||
Workspaces can also be configured for local execution, in which case only state is stored in
|
||||
Terraform Cloud. In this mode, Terraform Cloud behaves just like a standard state backend.
|
||||
Workspaces can also be configured for local execution, in which case Terraform Cloud only stores state. In this mode, Terraform Cloud behaves just like a standard state backend.
|
||||
|
||||
-> **Note:** The CLI integration is available in Terraform 1.1.0 and later, and Terraform Enterprise 202201-1 and later. Previous versions can use the [`remote` backend](/language/settings/backends/remote). Refer to [Migrating from the remote
|
||||
backend](/cli/cloud/migrating) for details about switching to the CLI integration.
|
||||
|
@ -14,10 +14,10 @@ When you run `terraform init` in the following scenarios, Terraform will ask you
|
||||
|
||||
## Migrating from Local State or State Backends
|
||||
|
||||
> **Hands On:** Try the [Migrate State to Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-migrate) tutorial on HashiCorp Learn.
|
||||
> **Hands On:** Try the [Migrate State to Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-migrate) tutorial.
|
||||
|
||||
If the working directory already has state data available (using either local state or a [state
|
||||
backend](/language/settings/backends)), Terraform will ask your approval to migrate
|
||||
backend](/language/settings/backends)), Terraform asks your approval to migrate
|
||||
that state to Terraform Cloud. You will need permission to manage workspaces in the destination Terraform Cloud organization. This process is interactive and self-documenting, and resembles
|
||||
moving between state backends.
|
||||
|
||||
|
@ -9,7 +9,7 @@ description: >-
|
||||
Terraform CLI can integrate with Terraform Cloud, acting as a client for Terraform Cloud's
|
||||
[CLI-driven run workflow](/cloud-docs/run/cli).
|
||||
|
||||
> **Hands On:** Try the [Migrate State to Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-migrate) tutorial on HashiCorp Learn.
|
||||
> **Hands On:** Try the [Migrate State to Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-migrate) tutorial.
|
||||
|
||||
You must configure the following settings to use Terraform Cloud for a particular working directory:
|
||||
|
||||
|
@ -5,10 +5,9 @@ description: The terraform import command brings existing resources into Terrafo
|
||||
|
||||
# Command: import
|
||||
|
||||
> **Hands-on:** Try the [Import Terraform Configuration](https://learn.hashicorp.com/tutorials/terraform/state-import?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Import Terraform Configuration](https://learn.hashicorp.com/tutorials/terraform/state-import?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
The `terraform import` command is used to
|
||||
[import existing resources](/cli/import)
|
||||
The `terraform import` command [imports existing resources](/cli/import)
|
||||
into Terraform.
|
||||
|
||||
## Usage
|
||||
|
@ -5,12 +5,10 @@ description: An introduction to the terraform command and its available subcomma
|
||||
|
||||
# Basic CLI Features
|
||||
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials.
|
||||
|
||||
The command line interface to Terraform is via the `terraform` command, which
|
||||
The command line interface to Terraform is the `terraform` command, which
|
||||
accepts a variety of subcommands such as `terraform init` or `terraform plan`.
|
||||
A full list of all of the supported subcommands is in the navigation section
|
||||
of this page.
|
||||
|
||||
We refer to the `terraform` command line tool as "Terraform CLI" elsewhere
|
||||
in the documentation. This terminology is often used to distinguish it from
|
||||
@ -71,8 +69,7 @@ you can run `terraform validate -help`.
|
||||
|
||||
The inline help built in to Terraform CLI describes the most important
|
||||
characteristics of each command. For more detailed information, refer to each
|
||||
command's section of this documentation, available in the navigation
|
||||
section of this page.
|
||||
command's page for details.
|
||||
|
||||
## Switching working directory with `-chdir`
|
||||
|
||||
|
@ -7,9 +7,9 @@ description: >-
|
||||
|
||||
# Command: init
|
||||
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn. For more in-depth details on the `init` command, check out the [Initialize Terraform Configuration tutorial](https://learn.hashicorp.com/tutorials/terraform/init?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS).
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials. For more in-depth details on the `init` command, check out the [Initialize Terraform Configuration tutorial](https://learn.hashicorp.com/tutorials/terraform/init?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS).
|
||||
|
||||
The `terraform init` command is used to initialize a working directory
|
||||
The `terraform init` command initializes a working directory
|
||||
containing Terraform configuration files. This is the first command that should
|
||||
be run after writing a new Terraform configuration or cloning an existing one
|
||||
from version control. It is safe to run this command multiple times.
|
||||
@ -181,7 +181,7 @@ other interesting features such as integration with version control hooks.
|
||||
There are some special concerns when running `init` in such an environment,
|
||||
including optionally making plugins available locally to avoid repeated
|
||||
re-installation. For more information, see
|
||||
the [Running Terraform in Automation](https://learn.hashicorp.com/tutorials/terraform/automate-terraform?in=terraform/automation&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
the [Running Terraform in Automation](https://learn.hashicorp.com/tutorials/terraform/automate-terraform?in=terraform/automation&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
## Passing a Different Configuration Directory
|
||||
|
||||
|
@ -18,10 +18,9 @@ when Terraform creates a plan it:
|
||||
* Proposes a set of change actions that should, if applied, make the remote
|
||||
objects match the configuration.
|
||||
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn. For more in-depth details on the `plan` command, check out the [Create a Terraform Plan tutorial](https://learn.hashicorp.com/tutorials/terraform/plan?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS).
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials. For more in-depth details on the `plan` command, check out the [Create a Terraform Plan tutorial](https://learn.hashicorp.com/tutorials/terraform/plan?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS).
|
||||
|
||||
The plan command alone will not actually carry out the proposed changes, and
|
||||
so you can use this command to check whether the proposed changes match what
|
||||
The `plan` command alone does not actually carry out the proposed changes You can use this command to check whether the proposed changes match what
|
||||
you expected before you apply the changes or share your changes with your
|
||||
team for broader review.
|
||||
|
||||
@ -118,7 +117,7 @@ earlier versions you must run [`terraform destroy`](/cli/commands/destroy).
|
||||
-> **Note:** The `-refresh-only` option is available only in Terraform v0.15.4
|
||||
and later.
|
||||
|
||||
> **Hands-on:** Try the [Use Refresh-Only Mode to Sync Terraform State](https://learn.hashicorp.com/tutorials/terraform/refresh) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Use Refresh-Only Mode to Sync Terraform State](https://learn.hashicorp.com/tutorials/terraform/refresh) tutorial.
|
||||
|
||||
## Planning Options
|
||||
|
||||
@ -228,7 +227,7 @@ input variables, see
|
||||
|
||||
### Resource Targeting
|
||||
|
||||
> **Hands-on:** Try the [Target resources](https://learn.hashicorp.com/tutorials/terraform/resource-targeting?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Target resources](https://learn.hashicorp.com/tutorials/terraform/resource-targeting?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
You can use the `-target` option to focus Terraform's attention on only a
|
||||
subset of resources.
|
||||
|
@ -12,8 +12,7 @@ The `terraform providers` command shows information about the
|
||||
configuration in the current working directory, as an aid to understanding
|
||||
where each requirement was detected from.
|
||||
|
||||
This command also has several subcommands with different purposes, which
|
||||
are listed in the navigation bar.
|
||||
This command also has several subcommands with different purposes.
|
||||
|
||||
## Usage
|
||||
|
||||
|
@ -7,7 +7,7 @@ description: |-
|
||||
|
||||
# Command: refresh
|
||||
|
||||
> **Hands-on:** Try the [Use Refresh-Only Mode to Sync Terraform State](https://learn.hashicorp.com/tutorials/terraform/refresh) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Use Refresh-Only Mode to Sync Terraform State](https://learn.hashicorp.com/tutorials/terraform/refresh) tutorial.
|
||||
|
||||
The `terraform refresh` command reads the current settings from all managed
|
||||
remote objects and updates the Terraform state to match.
|
||||
|
@ -8,11 +8,10 @@ description: The workspace command helps you manage workspaces.
|
||||
The `terraform workspace` command is used to manage
|
||||
[workspaces](/language/state/workspaces).
|
||||
|
||||
This command is a container for further subcommands. These subcommands are
|
||||
listed in the navigation bar.
|
||||
This command is a container for further subcommands that each have their own page in the documentation.
|
||||
|
||||
## Usage
|
||||
|
||||
Usage: `terraform workspace <subcommand> [options] [args]`
|
||||
|
||||
Please choose a subcommand from the navigation for more information.
|
||||
Choose a subcommand page for more information.
|
||||
|
@ -7,10 +7,10 @@ description: >-
|
||||
|
||||
# Import
|
||||
|
||||
> **Hands-on:** Try the [Import Terraform Configuration](https://learn.hashicorp.com/tutorials/terraform/state-import?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Import Terraform Configuration](https://learn.hashicorp.com/tutorials/terraform/state-import?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
Terraform is able to import existing infrastructure. This allows you take
|
||||
resources you've created by some other means and bring it under Terraform
|
||||
Terraform can import existing infrastructure resources. This functionality allows you take
|
||||
resources you created by some other means and bring them under Terraform
|
||||
management.
|
||||
|
||||
This is a great way to slowly transition infrastructure to Terraform, or
|
||||
|
@ -5,7 +5,8 @@ description: The `terraform import` command is used to import existing infrastru
|
||||
|
||||
# Import Usage
|
||||
|
||||
> **Hands-on:** Try the [Import Terraform Configuration](https://learn.hashicorp.com/tutorials/terraform/state-import?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Import Terraform Configuration](https://learn.hashicorp.com/tutorials/terraform/state-import?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
|
||||
Use the `terraform import` command to import existing infrastructure to Terraform state.
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
---
|
||||
page_title: Terraform CLI Documentation
|
||||
description: >-
|
||||
Learn how to use Terraform's CLI-based workflows. You can use the CLI alone or
|
||||
in conjunction with Terraform Cloud or Terraform Enterprise.
|
||||
Learn Terraform's CLI-based workflows. You can use the CLI alone or
|
||||
with Terraform Cloud or Terraform Enterprise.
|
||||
---
|
||||
|
||||
# Terraform CLI Documentation
|
||||
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials.
|
||||
|
||||
This is the documentation for Terraform CLI. It is relevant to anyone working
|
||||
with Terraform's CLI-based workflows; this includes people who use Terraform CLI
|
||||
|
@ -7,7 +7,7 @@ description: >-
|
||||
|
||||
# Manipulating Terraform State
|
||||
|
||||
> **Hands-on:** Try the [Manage Resources in Terraform State](https://learn.hashicorp.com/tutorials/terraform/state-cli?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Manage Resources in Terraform State](https://learn.hashicorp.com/tutorials/terraform/state-cli?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
Terraform uses [state data](/language/state) to remember which
|
||||
real-world object corresponds to each resource in the configuration;
|
||||
|
@ -24,10 +24,9 @@ resource.
|
||||
For most cases we recommend using
|
||||
[the Terraform language's refactoring features](/language/modules/develop/refactoring)
|
||||
to document in your module exactly how the resource names have changed over
|
||||
time. Terraform will react to this information automatically during planning,
|
||||
and thus users of your module will not need to take any unusual extra steps.
|
||||
time. Terraform reacts to this information automatically during planning, so users of your module do not need to take any unusual extra steps.
|
||||
|
||||
> **Hands On:** Try the [Use Configuration to Move Resources](https://learn.hashicorp.com/tutorials/terraform/move-config) on HashiCorp Learn.
|
||||
> **Hands On:** Try the [Use Configuration to Move Resources](https://learn.hashicorp.com/tutorials/terraform/move-config) tutorial.
|
||||
|
||||
There are some other situations which require explicit state modifications,
|
||||
though. For those, consider the following Terraform commands:
|
||||
|
@ -7,7 +7,7 @@ description: >-
|
||||
---
|
||||
|
||||
<!--
|
||||
This page is purposefully not linked from anywhere on terraform.io: it is intended to be linked only from the README files of archived providers.
|
||||
This page is not in the Terraform documentation intentionally. Only link it from the README files of archived providers.
|
||||
-->
|
||||
|
||||
# Archiving Providers
|
||||
|
@ -8,9 +8,9 @@ description: >-
|
||||
|
||||
# Debugging Terraform
|
||||
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/troubleshooting-workflow#bug-reporting-best-practices?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/troubleshooting-workflow#bug-reporting-best-practices?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
Terraform has detailed logs which can be enabled by setting the `TF_LOG` environment variable to any value. This will cause detailed logs to appear on stderr.
|
||||
Terraform has detailed logs that you can enable by setting the `TF_LOG` environment variable to any value. Enabling this setting causes detailed logs to appear on `stderr`.
|
||||
|
||||
You can set `TF_LOG` to one of the log levels (in order of decreasing verbosity) `TRACE`, `DEBUG`, `INFO`, `WARN` or `ERROR` to change the verbosity of the logs.
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
---
|
||||
page_title: Internals
|
||||
description: >-
|
||||
Learn the technical details of how Terraform generates and executes
|
||||
infrastructure plans, works with plugins, obtains credentials, etc.
|
||||
Learn how Terraform generates the resource dependency graph and executes other internal processes.
|
||||
---
|
||||
|
||||
# Terraform Internals
|
||||
|
@ -9,7 +9,7 @@ description: |-
|
||||
|
||||
HashiCorp Terraform is an infrastructure as code tool that lets you define both cloud and on-prem resources in human-readable configuration files that you can version, reuse, and share. You can then use a consistent workflow to provision and manage all of your infrastructure throughout its lifecycle. Terraform can manage low-level components like compute, storage, and networking resources, as well as high-level components like DNS entries and SaaS features.
|
||||
|
||||
> **Hands On:** Try the Get Started tutorials on HashiCorp Learn to start managing infrastructure on popular cloud providers: [Amazon Web Services](https://learn.hashicorp.com/collections/terraform/aws-get-started), [Azure](https://learn.hashicorp.com/collections/terraform/azure-get-started), [Google Cloud Platform](https://learn.hashicorp.com/collections/terraform/gcp-get-started), [Oracle Cloud Infrastructure](https://learn.hashicorp.com/collections/terraform/oci-get-started), and [Docker](https://learn.hashicorp.com/collections/terraform/docker-get-started).
|
||||
> **Hands On:** Try the Get Started tutorials to start managing infrastructure on popular cloud providers: [Amazon Web Services](https://learn.hashicorp.com/collections/terraform/aws-get-started), [Azure](https://learn.hashicorp.com/collections/terraform/azure-get-started), [Google Cloud Platform](https://learn.hashicorp.com/collections/terraform/gcp-get-started), [Oracle Cloud Infrastructure](https://learn.hashicorp.com/collections/terraform/oci-get-started), and [Docker](https://learn.hashicorp.com/collections/terraform/docker-get-started).
|
||||
|
||||
## How does Terraform work?
|
||||
Terraform creates and manages resources on cloud platforms and other services through their application programming interfaces (APIs). Providers enable Terraform to work with virtually any platform or service with an accessible API.
|
||||
|
@ -25,7 +25,7 @@ Terraform open source lets you:
|
||||
|
||||
### Resources
|
||||
|
||||
- Get Started collections on HashiCorp Learn for popular providers: [Amazon Web Services](https://learn.hashicorp.com/collections/terraform/aws-get-started), [Azure](https://learn.hashicorp.com/collections/terraform/azure-get-started), [Google Cloud Platform](https://learn.hashicorp.com/collections/terraform/gcp-get-started), [Oracle Cloud Infrastructure](https://learn.hashicorp.com/collections/terraform/oci-get-started), and [Docker](https://learn.hashicorp.com/collections/terraform/docker-get-started)
|
||||
- Get Started tutorials for popular providers: [Amazon Web Services](https://learn.hashicorp.com/collections/terraform/aws-get-started), [Azure](https://learn.hashicorp.com/collections/terraform/azure-get-started), [Google Cloud Platform](https://learn.hashicorp.com/collections/terraform/gcp-get-started), [Oracle Cloud Infrastructure](https://learn.hashicorp.com/collections/terraform/oci-get-started), and [Docker](https://learn.hashicorp.com/collections/terraform/docker-get-started)
|
||||
- [What is Terraform?](/intro)
|
||||
- [Configuration Language Documentation](/docs/language/index.html)
|
||||
- [CLI Documentation](/docs/cli/index.html)
|
||||
|
@ -38,7 +38,7 @@ At a large organization, your centralized operations team may get many repetitiv
|
||||
### Resources
|
||||
|
||||
- Try the [Use Modules from the Registry](https://learn.hashicorp.com/tutorials/terraform/module-use?in=terraform/modules) tutorial to get started using public modules in your Terraform configuration.
|
||||
Try the [Build and Use a Local Module](https://learn.hashicorp.com/tutorials/terraform/module-create?in=terraform/modules) tutorial on HashiCorp Learn to create a module to manage AWS S3 buckets.
|
||||
Try the [Build and Use a Local Module](https://learn.hashicorp.com/tutorials/terraform/module-create?in=terraform/modules) tutorial to create a module to manage AWS S3 buckets.
|
||||
- Follow these [ServiceNow Service Catalog Integration Setup Instructions](/cloud-docs/integrations/service-now) to connect ServiceNow to Terraform Cloud.
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ Terraform can help you enforce policies on the types of resources teams can prov
|
||||
|
||||
### Resources
|
||||
|
||||
- Try the [Control Costs with Policies](https://learn.hashicorp.com/tutorials/terraform/cost-estimation) tutorial on HashiCorp Learn to estimate the cost of infrastructure changes and define policy to limit it.
|
||||
- Try the [Control Costs with Policies](https://learn.hashicorp.com/tutorials/terraform/cost-estimation) tutorial to estimate the cost of infrastructure changes and define policy to limit it.
|
||||
|
||||
- The [Sentinel documentation](/docs/cloud/sentinel/index.html) provides more in-depth information and a list of example policies that you can adapt for your use cases.
|
||||
|
||||
@ -58,7 +58,7 @@ Platform as a Service (PaaS) vendors like Heroku allow you to create web applic
|
||||
|
||||
### Resources
|
||||
|
||||
Try the [Deploy, Manage, and Scale an Application on Heroku](https://learn.hashicorp.com/tutorials/terraform/heroku-provider?in=terraform/applications) tutorial on HashiCorp Learn manage an application’s lifecycle with Terraform.
|
||||
Try the [Deploy, Manage, and Scale an Application on Heroku](https://learn.hashicorp.com/tutorials/terraform/heroku-provider?in=terraform/applications) tutorial to manage an application’s lifecycle with Terraform.
|
||||
|
||||
|
||||
## Software Defined Networking
|
||||
@ -69,8 +69,8 @@ For example, when a service registers with [HashiCorp Consul](https://www.consul
|
||||
|
||||
### Resources
|
||||
|
||||
- Try the [Network Infrastructure Automation with Consul-Terraform-Sync Intro](https://learn.hashicorp.com/tutorials/consul/consul-terraform-sync-intro?in=consul/network-infrastructure-automation) tutorial on HashiCorp Learn to install Consul-Terraform-Sync on a node. You will then configure it to communicate with a Consul datacenter, react to service changes, and execute an example task.
|
||||
- Try the [Consul-Terraform-Sync and Terraform Enterprise/Cloud Integration](https://learn.hashicorp.com/tutorials/consul/consul-terraform-sync-terraform-enterprise?in=consul/network-infrastructure-automation) tutorial on HashiCorp Learn to configure Consul-Terraform-Sync to interact with Terraform Enterprise and Terraform Cloud.
|
||||
- Try the [Network Infrastructure Automation with Consul-Terraform-Sync Intro](https://learn.hashicorp.com/tutorials/consul/consul-terraform-sync-intro?in=consul/network-infrastructure-automation) tutorial to install Consul-Terraform-Sync on a node. You will then configure it to communicate with a Consul datacenter, react to service changes, and execute an example task.
|
||||
- Try the [Consul-Terraform-Sync and Terraform Enterprise/Cloud Integration](https://learn.hashicorp.com/tutorials/consul/consul-terraform-sync-terraform-enterprise?in=consul/network-infrastructure-automation) tutorial to configure Consul-Terraform-Sync to interact with Terraform Enterprise and Terraform Cloud.
|
||||
|
||||
|
||||
## Kubernetes
|
||||
@ -79,8 +79,8 @@ Kubernetes is an open-source workload scheduler for containerized applications.
|
||||
|
||||
### Resources
|
||||
|
||||
- Try the [Manage Kubernetes Resources via Terraform](https://learn.hashicorp.com/tutorials/terraform/kubernetes-provider?in=terraform/kubernetes) tutorial on HashiCorp Learn. You will use Terraform to schedule and expose a NGINX deployment on a Kubernetes cluster.
|
||||
- Try the [Deploy Infrastructure with the Terraform Cloud Operator for Kubernetes](https://learn.hashicorp.com/tutorials/terraform/kubernetes-operator) tutorial on HashiCorp Learn. You will configure and deploy the Operator to a Kubernetes cluster and use it to create a Terraform Cloud workspace and provision a message queue for an example application.
|
||||
- Try the [Manage Kubernetes Resources via Terraform](https://learn.hashicorp.com/tutorials/terraform/kubernetes-provider?in=terraform/kubernetes) tutorial. You will use Terraform to schedule and expose a NGINX deployment on a Kubernetes cluster.
|
||||
- Try the [Deploy Infrastructure with the Terraform Cloud Operator for Kubernetes](https://learn.hashicorp.com/tutorials/terraform/kubernetes-operator) tutorial. You will configure and deploy the Operator to a Kubernetes cluster and use it to create a Terraform Cloud workspace and provision a message queue for an example application.
|
||||
|
||||
|
||||
## Parallel Environments
|
||||
|
@ -9,9 +9,7 @@ description: >-
|
||||
|
||||
# Attributes as Blocks
|
||||
|
||||
-> **Note:** This page is an appendix to the Terraform documentation, and is
|
||||
outside the normal navigation hierarchy. Most users do not need to know the full
|
||||
details of the behavior described below.
|
||||
-> **Note:** This page is an appendix to the Terraform documentation. Most users do not need to know the full details of this behavior.
|
||||
|
||||
## Summary
|
||||
|
||||
|
@ -11,7 +11,7 @@ description: >-
|
||||
_Data sources_ allow Terraform to use information defined outside of Terraform,
|
||||
defined by another separate Terraform configuration, or modified by functions.
|
||||
|
||||
> **Hands-on:** Try the [Query Data Sources](https://learn.hashicorp.com/tutorials/terraform/data-sources) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Query Data Sources](https://learn.hashicorp.com/tutorials/terraform/data-sources) tutorial.
|
||||
|
||||
Each [provider](/language/providers) may offer data sources
|
||||
alongside its set of [resource](/language/resources)
|
||||
|
@ -10,7 +10,7 @@ description: >-
|
||||
A _conditional expression_ uses the value of a boolean expression to select one of
|
||||
two values.
|
||||
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/expressions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/expressions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
## Syntax
|
||||
|
||||
|
@ -8,7 +8,7 @@ description: >-
|
||||
|
||||
You can create conditions that produce custom error messages for several types of objects in a configuration. For example, you can add a condition to an input variable that checks whether incoming image IDs are formatted properly. Custom conditions can capture assumptions, helping future maintainers understand the configuration design and intent. They also return useful information about errors earlier and in context, helping consumers more easily diagnose issues in their configurations.
|
||||
|
||||
> **Hands On:** Try the [Validate Modules with Custom Conditions](https://learn.hashicorp.com/tutorials/terraform/custom-conditions?in=terraform/configuration-language) tutorial on HashiCorp Learn.
|
||||
> **Hands On:** Try the [Validate Modules with Custom Conditions](https://learn.hashicorp.com/tutorials/terraform/custom-conditions?in=terraform/configuration-language) tutorial.
|
||||
|
||||
This page explains the following:
|
||||
- Creating [validation conditions](#input-variable-validation) for input variables (Terraform v0.13.0 and later)
|
||||
|
@ -7,7 +7,7 @@ description: >-
|
||||
|
||||
# Function Calls
|
||||
|
||||
> **Hands-on:** Try the [Perform Dynamic Operations with Functions](https://learn.hashicorp.com/tutorials/terraform/functions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Perform Dynamic Operations with Functions](https://learn.hashicorp.com/tutorials/terraform/functions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
The Terraform language has a number of
|
||||
[built-in functions](/language/functions) that can be used
|
||||
|
@ -7,9 +7,9 @@ description: >-
|
||||
|
||||
# Expressions
|
||||
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/expressions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/expressions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
_Expressions_ are used to refer to or compute values within a configuration.
|
||||
_Expressions_ refer to or compute values within a configuration.
|
||||
The simplest expressions are just literal values, like `"hello"` or `5`,
|
||||
but the Terraform language also allows more complex expressions such as
|
||||
references to data exported by resources, arithmetic, conditional evaluation,
|
||||
|
@ -8,10 +8,10 @@ description: >-
|
||||
|
||||
# References to Named Values
|
||||
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/expressions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/expressions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
Terraform makes several kinds of named values available. Each of these names is
|
||||
an expression that references the associated value; you can use them as
|
||||
an expression that references the associated value. You can use them as
|
||||
standalone expressions, or combine them with other expressions to compute new
|
||||
values.
|
||||
|
||||
|
@ -7,7 +7,7 @@ description: >-
|
||||
|
||||
# Splat Expressions
|
||||
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/expressions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Create Dynamic Expressions](https://learn.hashicorp.com/tutorials/terraform/expressions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
A _splat expression_ provides a more concise way to express a common
|
||||
operation that could otherwise be performed with a `for` expression.
|
||||
|
@ -11,7 +11,7 @@ description: >-
|
||||
versions of Terraform did not track dependency selections at all, so the
|
||||
information here is not relevant to those versions.
|
||||
|
||||
> **Hands-on:** Try the [Lock and Upgrade Provider Versions](https://learn.hashicorp.com/tutorials/terraform/provider-versioning?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Lock and Upgrade Provider Versions](https://learn.hashicorp.com/tutorials/terraform/provider-versioning?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
A Terraform configuration may refer to two different kinds of external
|
||||
dependency that come from outside of its own codebase:
|
||||
|
@ -7,7 +7,7 @@ description: >-
|
||||
|
||||
# Built-in Functions
|
||||
|
||||
> **Hands-on:** Try the [Perform Dynamic Operations with Functions](https://learn.hashicorp.com/tutorials/terraform/functions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Perform Dynamic Operations with Functions](https://learn.hashicorp.com/tutorials/terraform/functions?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
The Terraform language includes a number of built-in functions that you can
|
||||
call from within expressions to transform and combine values. The general
|
||||
@ -23,8 +23,7 @@ For more details on syntax, see
|
||||
in the Expressions section.
|
||||
|
||||
The Terraform language does not support user-defined functions, and so only
|
||||
the functions built in to the language are available for use. The navigation
|
||||
for this section includes a list of all of the available built-in functions.
|
||||
the functions built in to the language are available for use. The documentation includes a page for all of the available built-in functions.
|
||||
|
||||
You can experiment with the behavior of Terraform's built-in functions from
|
||||
the Terraform expression console, by running
|
||||
|
@ -1,8 +1,7 @@
|
||||
---
|
||||
page_title: Overview - Configuration Language
|
||||
description: >-
|
||||
You can use the Terraform language to write configuration files that tell
|
||||
Terraform how to manage a collection of infrastructure.
|
||||
Use the Terraform configuration language to describe the infrastructure that Terraform manages.
|
||||
---
|
||||
|
||||
# Terraform Language Documentation
|
||||
@ -17,7 +16,7 @@ and what data to fetch. Terraform language also lets you define dependencies
|
||||
between resources and create multiple similar resources from a single
|
||||
configuration block.
|
||||
|
||||
> **Hands-on:** Try the [Write Terraform Configuration](https://learn.hashicorp.com/collections/terraform/configuration-language) tutorials on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Write Terraform Configuration](https://learn.hashicorp.com/collections/terraform/configuration-language) tutorials.
|
||||
|
||||
## About the Terraform Language
|
||||
|
||||
|
@ -12,7 +12,7 @@ previous versions can only use it with resources.
|
||||
|
||||
-> **Note:** A given resource or module block cannot use both `count` and `for_each`.
|
||||
|
||||
> **Hands-on:** Try the [Manage Similar Resources With Count](https://learn.hashicorp.com/tutorials/terraform/count?in=terraform/0-13&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Manage Similar Resources With Count](https://learn.hashicorp.com/tutorials/terraform/count?in=terraform/0-13&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
By default, a [resource block](/language/resources/syntax) configures one real
|
||||
infrastructure object. (Similarly, a
|
||||
|
@ -16,10 +16,10 @@ pool of compute instances) without writing a separate block for each one.
|
||||
Terraform has two ways to do this:
|
||||
[`count`](/language/meta-arguments/count) and `for_each`.
|
||||
|
||||
> **Hands-on:** Try the [Manage Similar Resources With For Each](https://learn.hashicorp.com/tutorials/terraform/for-each?in=terraform/configuration-language) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Manage Similar Resources With For Each](https://learn.hashicorp.com/tutorials/terraform/for-each?in=terraform/configuration-language) tutorial.
|
||||
|
||||
If a resource or module block includes a `for_each` argument whose value is a map or
|
||||
a set of strings, Terraform will create one instance for each member of
|
||||
a set of strings, Terraform creates one instance for each member of
|
||||
that map or set.
|
||||
|
||||
-> **Version note:** `for_each` was added in Terraform 0.12.6. Module support
|
||||
|
@ -7,10 +7,9 @@ description: >-
|
||||
|
||||
# The `lifecycle` Meta-Argument
|
||||
|
||||
> **Hands-on:** Try the [Lifecycle Management](https://learn.hashicorp.com/tutorials/terraform/resource-lifecycle?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Lifecycle Management](https://learn.hashicorp.com/tutorials/terraform/resource-lifecycle?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
The general lifecycle for resources is described in the
|
||||
[Resource Behavior](/language/resources/behavior) page. Some details of
|
||||
The [Resource Behavior](/language/resources/behavior) page describes the general lifecycle for resources. Some details of
|
||||
that behavior can be customized using the special nested `lifecycle` block
|
||||
within a resource block body:
|
||||
|
||||
|
@ -7,10 +7,10 @@ description: >-
|
||||
|
||||
# Creating Modules
|
||||
|
||||
> **Hands-on:** Try the [Reuse Configuration with Modules](https://learn.hashicorp.com/collections/terraform/modules?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Reuse Configuration with Modules](https://learn.hashicorp.com/collections/terraform/modules?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials.
|
||||
|
||||
A _module_ is a container for multiple resources that are used together.
|
||||
Modules can be used to create lightweight abstractions, so that you can
|
||||
You can use modules to create lightweight abstractions, so that you can
|
||||
describe your infrastructure in terms of its architecture, rather than
|
||||
directly in terms of physical objects.
|
||||
|
||||
|
@ -23,7 +23,7 @@ When you add `moved` blocks in your configuration to record where you've
|
||||
historically moved or renamed an object, Terraform treats an existing object at
|
||||
the old address as if it now belongs to the new address.
|
||||
|
||||
> **Hands On:** Try the [Use Configuration to Move Resources](https://learn.hashicorp.com/tutorials/terraform/move-config) tutorial on HashiCorp Learn.
|
||||
> **Hands On:** Try the [Use Configuration to Move Resources](https://learn.hashicorp.com/tutorials/terraform/move-config) tutorial.
|
||||
|
||||
## `moved` Block Syntax
|
||||
|
||||
|
@ -7,7 +7,7 @@ description: >-
|
||||
|
||||
# Modules
|
||||
|
||||
> **Hands-on:** Try the [Reuse Configuration with Modules](https://learn.hashicorp.com/collections/terraform/modules?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Reuse Configuration with Modules](https://learn.hashicorp.com/collections/terraform/modules?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials.
|
||||
|
||||
_Modules_ are containers for multiple resources that are used together. A module
|
||||
consists of a collection of `.tf` and/or `.tf.json` files kept together in a
|
||||
|
@ -12,15 +12,12 @@ The `source` argument in [a `module` block](/language/modules/syntax)
|
||||
tells Terraform where to find the source code for the desired child module.
|
||||
|
||||
Terraform uses this during the module installation step of `terraform init`
|
||||
to download the source code to a directory on local disk so that it can be
|
||||
used by other Terraform commands.
|
||||
to download the source code to a directory on local disk so that other Terraform commands can use it.
|
||||
|
||||
> **Hands-on:** Try our HashiCorp Learn tutorials to use modules from [the
|
||||
> registry](https://learn.hashicorp.com/tutorials/terraform/module-use)
|
||||
> or [locally](https://learn.hashicorp.com/tutorials/terraform/module-create).
|
||||
> **Hands-on:** Try the [Use Modules From the Registry](https://learn.hashicorp.com/tutorials/terraform/module-use) or [Build and Use a Local Module](https://learn.hashicorp.com/tutorials/terraform/module-create) tutorials.
|
||||
|
||||
The module installer supports installation from a number of different source
|
||||
types, as listed below.
|
||||
types.
|
||||
|
||||
- [Local paths](#local-paths)
|
||||
|
||||
|
@ -8,7 +8,7 @@ description: >-
|
||||
|
||||
# Module Blocks
|
||||
|
||||
> **Hands-on:** Try the [Reuse Configuration with Modules](https://learn.hashicorp.com/collections/terraform/modules?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Reuse Configuration with Modules](https://learn.hashicorp.com/collections/terraform/modules?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials.
|
||||
|
||||
A _module_ is a container for multiple resources that are used together.
|
||||
|
||||
|
@ -7,9 +7,9 @@ description: >-
|
||||
|
||||
# Providers
|
||||
|
||||
> **Hands-on:** Try the [Perform CRUD Operations with Providers](https://learn.hashicorp.com/tutorials/terraform/provider-use?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Perform CRUD Operations with Providers](https://learn.hashicorp.com/tutorials/terraform/provider-use?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
Terraform relies on plugins called "providers" to interact with cloud providers,
|
||||
Terraform relies on plugins called providers to interact with cloud providers,
|
||||
SaaS providers, and other APIs.
|
||||
|
||||
Terraform configurations must declare which providers they require so that
|
||||
@ -89,7 +89,7 @@ and commit it to version control along with your configuration. If a lock file
|
||||
is present, Terraform Cloud, CLI, and Enterprise will all obey it when
|
||||
installing providers.
|
||||
|
||||
> **Hands-on:** Try the [Lock and Upgrade Provider Versions](https://learn.hashicorp.com/tutorials/terraform/provider-versioning?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Lock and Upgrade Provider Versions](https://learn.hashicorp.com/tutorials/terraform/provider-versioning?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
## How to Find Providers
|
||||
|
||||
@ -110,5 +110,4 @@ Providers are written in Go, using the Terraform Plugin SDK. For more
|
||||
information on developing providers, see:
|
||||
|
||||
- The [Plugin Development](/plugin) documentation
|
||||
- The [Call APIs with Terraform Providers](https://learn.hashicorp.com/collections/terraform/providers?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS)
|
||||
collection on HashiCorp Learn
|
||||
- The [Call APIs with Terraform Providers](https://learn.hashicorp.com/collections/terraform/providers?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials
|
||||
|
@ -12,7 +12,7 @@ Terraform configurations must declare which providers they require, so that
|
||||
Terraform can install and use them. This page documents how to declare providers
|
||||
so Terraform can install them.
|
||||
|
||||
> **Hands-on:** Try the [Perform CRUD Operations with Providers](https://learn.hashicorp.com/tutorials/terraform/provider-use) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Perform CRUD Operations with Providers](https://learn.hashicorp.com/tutorials/terraform/provider-use) tutorial.
|
||||
|
||||
Additionally, some providers require configuration (like endpoint URLs or cloud
|
||||
regions) before they can be used. The [Provider
|
||||
@ -225,7 +225,7 @@ and commit it to version control along with your configuration. If a lock file
|
||||
is present, Terraform Cloud, CLI, and Enterprise will all obey it when
|
||||
installing providers.
|
||||
|
||||
> **Hands-on:** Try the [Lock and Upgrade Provider Versions](https://learn.hashicorp.com/tutorials/terraform/provider-versioning) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Lock and Upgrade Provider Versions](https://learn.hashicorp.com/tutorials/terraform/provider-versioning) tutorial.
|
||||
|
||||
### Best Practices for Provider Versions
|
||||
|
||||
@ -248,7 +248,7 @@ directory where you'd run `terraform apply` — should also specify the
|
||||
_maximum_ provider version it is intended to work with, to avoid accidental
|
||||
upgrades to incompatible new versions. The `~>` operator is a convenient
|
||||
shorthand for allowing the rightmost component of a version to increment. The
|
||||
following example uses the operator to allow only patch releases within a
|
||||
following example uses the operator to allow only patch releases within a
|
||||
specific minor release:
|
||||
|
||||
```hcl
|
||||
@ -294,8 +294,7 @@ compatible with Terraform v0.11 or later and should never be declared in a
|
||||
|
||||
Anyone can develop and distribute their own Terraform providers. See
|
||||
the [Call APIs with Terraform Providers](https://learn.hashicorp.com/collections/terraform/providers)
|
||||
collection on HashiCorp Learn for more
|
||||
about provider development.
|
||||
tutorials for more about provider development.
|
||||
|
||||
Some organizations develop their own providers to configure
|
||||
proprietary systems, and wish to use these providers from Terraform without
|
||||
|
@ -7,7 +7,7 @@ description: >-
|
||||
|
||||
# Resources
|
||||
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials.
|
||||
|
||||
_Resources_ are the most important element in the Terraform language.
|
||||
Each resource block describes one or more infrastructure objects, such
|
||||
|
@ -15,10 +15,10 @@ for service.
|
||||
|
||||
## Provisioners are a Last Resort
|
||||
|
||||
> **Hands-on:** To learn about more declarative ways to handle provisioning actions, try the [Provision Infrastructure Deployed with Terraform](https://learn.hashicorp.com/collections/terraform/provision?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Provision Infrastructure Deployed with Terraform](https://learn.hashicorp.com/collections/terraform/provision?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials to learn about more declarative ways to handle provisioning actions.
|
||||
|
||||
Terraform includes the concept of provisioners as a measure of pragmatism,
|
||||
knowing that there will always be certain behaviors that can't be directly
|
||||
knowing that there are always certain behaviors that cannot be directly
|
||||
represented in Terraform's declarative model.
|
||||
|
||||
However, they also add a considerable amount of complexity and uncertainty to
|
||||
@ -78,7 +78,7 @@ process in various ways data passed via the means described above, allowing
|
||||
you to run arbitrary scripts and do basic system configuration immediately
|
||||
during the boot process and without the need to access the machine over SSH.
|
||||
|
||||
> **Hands-on:** Try the [Provision Infrastructure with Cloud-Init](https://learn.hashicorp.com/tutorials/terraform/cloud-init?in=terraform/provision&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Provision Infrastructure with Cloud-Init](https://learn.hashicorp.com/tutorials/terraform/cloud-init?in=terraform/provision&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
If you are building custom machine images, you can make use of the "user data"
|
||||
or "metadata" passed by the above means in whatever way makes sense to your
|
||||
@ -108,7 +108,7 @@ configuration management provisioners and can run their installation steps
|
||||
during a separate build process, before creating a system disk image that you
|
||||
can deploy many times.
|
||||
|
||||
> **Hands-on:** Try the [Provision Infrastructure with Packer](https://learn.hashicorp.com/tutorials/terraform/packer?in=terraform/provision&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Provision Infrastructure with Packer](https://learn.hashicorp.com/tutorials/terraform/packer?in=terraform/provision&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
If you are using configuration management software that has a centralized server
|
||||
component, you will need to delay the _registration_ step until the final
|
||||
@ -163,13 +163,9 @@ resource "aws_instance" "web" {
|
||||
|
||||
The `local-exec` provisioner requires no other configuration, but most other
|
||||
provisioners must connect to the remote system using SSH or WinRM.
|
||||
You must include [a `connection` block](/language/resources/provisioners/connection) so that Terraform
|
||||
will know how to communicate with the server.
|
||||
You must include [a `connection` block](/language/resources/provisioners/connection) so that Terraform knows how to communicate with the server.
|
||||
|
||||
Terraform includes several built-in provisioners; use the navigation sidebar to
|
||||
view their documentation.
|
||||
|
||||
It's also possible to use third-party provisioners as plugins, by placing them
|
||||
Terraform includes several built-in provisioners. You can also use third-party provisioners as plugins, by placing them
|
||||
in `%APPDATA%\terraform.d\plugins`, `~/.terraform.d/plugins`, or the same
|
||||
directory where the Terraform binary is installed. However, we do not recommend
|
||||
using any provisioners except the built-in `file`, `local-exec`, and
|
||||
|
@ -8,7 +8,7 @@ description: >-
|
||||
|
||||
# Resource Blocks
|
||||
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) collection on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Terraform: Get Started](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials.
|
||||
|
||||
_Resources_ are the most important element in the Terraform language.
|
||||
Each resource block describes one or more infrastructure objects, such
|
||||
@ -106,8 +106,7 @@ documentation you are viewing.
|
||||
To browse the publicly available providers and their documentation, see
|
||||
[the providers section of the Terraform Registry](https://registry.terraform.io/browse/providers).
|
||||
|
||||
-> **Note:** Provider documentation used to be hosted directly on terraform.io,
|
||||
as part of Terraform's core documentation. Although some provider documentation
|
||||
-> **Note:** Provider documentation previously existed as part of Terraform's core documentation. Although some provider documentation
|
||||
might still be hosted here, the Terraform Registry is now the main home for all
|
||||
public provider docs.
|
||||
|
||||
|
@ -14,7 +14,7 @@ This page describes how to configure a backend by adding the [`backend` block](#
|
||||
|
||||
## Available Backends
|
||||
|
||||
By default, Terraform uses a backend called [`local`](/language/settings/backends/local), which stores state as a local file on disk. You can also configure one of the built-in backends listed in the documentation sidebar.
|
||||
By default, Terraform uses a backend called [`local`](/language/settings/backends/local), which stores state as a local file on disk. You can also configure one of the built-in backends included in this documentation.
|
||||
|
||||
Some of these backends act like plain remote disks for state files, while others support locking the state while operations are being performed. This helps prevent conflicts and inconsistencies. The built-in backends listed are the only backends. You cannot load additional backends as plugins.
|
||||
|
||||
@ -61,9 +61,9 @@ The block label of the backend block (`"remote"`, in the example above) indicate
|
||||
|
||||
The arguments used in the block's body are specific to the chosen backend type; they configure where and how the backend will store the configuration's state, and in some cases configure other behavior.
|
||||
|
||||
Some backends allow providing access credentials directly as part of the configuration for use in unusual situations, for pragmatic reasons. However, in normal use we _do not_ recommend including access credentials as part of the backend configuration. Instead, leave those arguments completely unset and provide credentials via the credentials files or environment variables that are conventional for the target system, as described in the documentation for each backend.
|
||||
Some backends allow providing access credentials directly as part of the configuration for use in unusual situations, for pragmatic reasons. However, in normal use, we _do not_ recommend including access credentials as part of the backend configuration. Instead, leave those arguments completely unset and provide credentials using the credentials files or environment variables that are conventional for the target system, as described in the documentation for each backend.
|
||||
|
||||
Refer to the list of backend types in the navigation sidebar for details about each supported backend type and its configuration arguments.
|
||||
Refer to the page for each backend type for full details and that type's configuration arguments.
|
||||
|
||||
### Default Backend
|
||||
|
||||
|
@ -49,7 +49,7 @@ Configuration](/language/settings/backends/configuration).
|
||||
|
||||
## Specifying a Required Terraform Version
|
||||
|
||||
> **Hands-on:** Try the [Manage Terraform Versions](https://learn.hashicorp.com/tutorials/terraform/versions?in=terraform/configuration-language) or [Manage Terraform Versions in Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-versions?in=terraform/cloud) tutorials on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Manage Terraform Versions](https://learn.hashicorp.com/tutorials/terraform/versions?in=terraform/configuration-language) or [Manage Terraform Versions in Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-versions?in=terraform/cloud) tutorials.
|
||||
|
||||
The `required_version` setting accepts a [version constraint
|
||||
string,](/language/expressions/version-constraints) which specifies which versions of Terraform
|
||||
|
@ -10,7 +10,7 @@ description: >-
|
||||
The main module of a Terraform configuration can integrate with Terraform Cloud to enable its [CLI-driven run workflow](/cloud-docs/run/cli). You only need to configure these settings when you want to use Terraform CLI to interact with Terraform Cloud. Terraform Cloud ignores them when interacting with
|
||||
Terraform through version control or the API.
|
||||
|
||||
> **Hands On:** Try the [Migrate State to Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-migrate) tutorial on HashiCorp Learn.
|
||||
> **Hands On:** Try the [Migrate State to Terraform Cloud](https://learn.hashicorp.com/tutorials/terraform/cloud-migrate) tutorial.
|
||||
|
||||
## Usage Example
|
||||
|
||||
@ -34,5 +34,3 @@ terraform {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -7,9 +7,7 @@ description: >-
|
||||
|
||||
# Local Values
|
||||
|
||||
> **Hands-on:** Try the [Simplify Terraform Configuration with
|
||||
> Locals](https://learn.hashicorp.com/tutorials/terraform/locals?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS)
|
||||
> tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Simplify Terraform Configuration with Locals](https://learn.hashicorp.com/tutorials/terraform/locals?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
A local value assigns a name to an [expression](/language/expressions),
|
||||
so you can use the name multiple times within a module instead of repeating
|
||||
|
@ -11,7 +11,7 @@ use. Output values are similar to return values in programming languages.
|
||||
|
||||
> **Hands-on:** Try the [Output Data From
|
||||
> Terraform](https://learn.hashicorp.com/tutorials/terraform/outputs)
|
||||
> tutorial on HashiCorp Learn.
|
||||
> tutorial.
|
||||
|
||||
Output values have several uses:
|
||||
|
||||
|
@ -7,10 +7,10 @@ description: >-
|
||||
|
||||
# Input Variables
|
||||
|
||||
> **Hands-on:** Try the [Customize Terraform Configuration with Variables](https://learn.hashicorp.com/tutorials/terraform/variables?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Customize Terraform Configuration with Variables](https://learn.hashicorp.com/tutorials/terraform/variables?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
Input variables let you customize aspects of Terraform modules without altering
|
||||
the module's own source code. This allows you to share modules across different
|
||||
the module's own source code. This functionality allows you to share modules across different
|
||||
Terraform configurations, making your module composable and reusable.
|
||||
|
||||
When you declare variables in the root module of your configuration, you can
|
||||
@ -181,7 +181,7 @@ Refer to [Custom Condition Checks](/language/expressions/custom-conditions#input
|
||||
|
||||
-> This feature was introduced in Terraform v0.14.0.
|
||||
|
||||
> **Hands-on:** Try the [Protect Sensitive Input Variables](https://learn.hashicorp.com/tutorials/terraform/sensitive-variables?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn.
|
||||
> **Hands-on:** Try the [Protect Sensitive Input Variables](https://learn.hashicorp.com/tutorials/terraform/sensitive-variables?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
|
||||
|
||||
Setting a variable as `sensitive` prevents Terraform from showing its value in
|
||||
the `plan` or `apply` output, when you use that variable elsewhere in your
|
||||
|
Before Width: | Height: | Size: 207 KiB After Width: | Height: | Size: 335 KiB |
Before Width: | Height: | Size: 231 KiB After Width: | Height: | Size: 327 KiB |
Before Width: | Height: | Size: 362 KiB After Width: | Height: | Size: 339 KiB |
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 366 KiB |