2020-04-25 00:54:43 +02:00
|
|
|
---
|
2021-11-23 00:57:25 +01:00
|
|
|
layout: "docs"
|
|
|
|
page_title: "Command: providers mirror"
|
|
|
|
sidebar_current: "docs-commands-providers-mirror"
|
2020-04-25 00:54:43 +02:00
|
|
|
description: |-
|
|
|
|
The `terraform providers mirror` command downloads the providers required
|
|
|
|
for the current configuration and copies them into a directory in the local
|
|
|
|
filesystem.
|
|
|
|
---
|
|
|
|
|
|
|
|
# Command: terraform providers mirror
|
|
|
|
|
|
|
|
The `terraform providers mirror` command downloads the providers required
|
|
|
|
for the current configuration and copies them into a directory in the local
|
|
|
|
filesystem.
|
|
|
|
|
|
|
|
In normal use, `terraform init` will automatically download needed providers
|
|
|
|
from provider registries as part of initializing the current working directory.
|
|
|
|
Sometimes Terraform is running in an environment where that isn't possible,
|
|
|
|
such as on an isolated network without access to the Terraform Registry. In
|
|
|
|
that case,
|
2021-11-23 00:57:25 +01:00
|
|
|
[explicit installation method configuration](/docs/cli/config/config-file.html#explicit-installation-method-configuration)
|
2020-04-25 00:54:43 +02:00
|
|
|
allows you to configure Terraform, when running on a particular system, to
|
|
|
|
consult only a local filesystem directory where you've created a local mirror
|
|
|
|
of the necessary plugins, and to skip accessing the upstream registry at all.
|
|
|
|
|
|
|
|
The `terraform providers mirror` command can automatically populate a directory
|
|
|
|
that will be used as a local filesystem mirror in the provider installation
|
|
|
|
configuration.
|
|
|
|
|
|
|
|
-> `terraform providers mirror` is available only in Terraform v0.13 or later.
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
Usage: `terraform providers mirror [options] <target-dir>`
|
|
|
|
|
|
|
|
A single target directory is required. Terraform will create under that
|
|
|
|
directory the path structure that is expected for filesystem-based provider
|
2020-08-26 01:26:21 +02:00
|
|
|
plugin mirrors, populating it with `.zip` files containing the plugins
|
|
|
|
themselves.
|
|
|
|
|
|
|
|
Terraform will also generate various `.json` index files which contain suitable
|
|
|
|
responses to implement
|
2021-11-23 00:57:25 +01:00
|
|
|
[the network mirror protocol](/docs/internals/provider-network-mirror-protocol.html),
|
2020-08-26 01:26:21 +02:00
|
|
|
if you upload the resulting directory to a static website host. Terraform
|
|
|
|
ignores those index files when using the directory as a filesystem mirror,
|
|
|
|
because the directory entries themselves are authoritative in that case.
|
2020-04-25 00:54:43 +02:00
|
|
|
|
|
|
|
This command supports the following additional option:
|
|
|
|
|
|
|
|
* `-platform=OS_ARCH` - Choose which target platform to build a mirror for.
|
|
|
|
By default Terraform will obtain plugin packages suitable for the platform
|
|
|
|
where you run this command. Use this flag multiple times to include packages
|
|
|
|
for multiple target systems.
|
|
|
|
|
2020-08-26 16:10:45 +02:00
|
|
|
Target platform names consist of an operating system and a CPU
|
2020-04-25 00:54:43 +02:00
|
|
|
architecture. For example, `linux_amd64` selects the Linux operating system
|
|
|
|
running on an AMD64 or x86_64 CPU.
|
|
|
|
|
|
|
|
You can run `terraform providers mirror` again on an existing mirror directory
|
|
|
|
to update it with new packages. For example, you can add packages for a new
|
|
|
|
target platform by re-running the command with the desired new `-platform=...`
|
|
|
|
option, and it will place the packages for that new platform without removing
|
|
|
|
packages you previously downloaded, merging the resulting set of packages
|
|
|
|
together to update the JSON index files.
|