mirror of
https://github.com/opentffoundation/opentf.git
synced 2026-02-16 16:00:37 -05:00
* Initial renaming, rewriting and cleaning up wave for the CLI docs. Signed-off-by: Jakub Martin <kubam@spacelift.io> * More renaming. Signed-off-by: Jakub Martin <kubam@spacelift.io> * More renaming. Signed-off-by: Jakub Martin <kubam@spacelift.io> * More renaming. Signed-off-by: Jakub Martin <kubam@spacelift.io> * Remove tutorial references. Signed-off-by: Jakub Martin <kubam@spacelift.io> * Post-review fixes. Signed-off-by: Jakub Martin <kubam@spacelift.io> --------- Signed-off-by: Jakub Martin <kubam@spacelift.io>
159 lines
6.0 KiB
Plaintext
159 lines
6.0 KiB
Plaintext
---
|
|
page_title: 'Command: import'
|
|
description: The opentf import command brings existing resources into OpenTF state.
|
|
---
|
|
|
|
# Command: import
|
|
|
|
The `opentf import` command [imports existing resources](/opentf/cli/import)
|
|
into OpenTF.
|
|
|
|
## Usage
|
|
|
|
Usage: `opentf import [options] ADDRESS ID`
|
|
|
|
Import will find the existing resource from ID and import it into your OpenTF
|
|
state at the given ADDRESS.
|
|
|
|
ADDRESS must be a valid [resource address](/opentf/cli/state/resource-addressing).
|
|
Because any resource address is valid, the import command can import resources
|
|
into modules as well as directly into the root of your state.
|
|
|
|
ID is dependent on the resource type being imported. For example, for AWS EC2
|
|
instances it is the instance ID (`i-abcd1234`) but for AWS Route53 zones
|
|
it is the zone ID (`Z12ABC4UGMOZ2N`). Please reference the provider documentation for details
|
|
on the ID format. If you're unsure, feel free to just try an ID. If the ID
|
|
is invalid, you'll just receive an error message.
|
|
|
|
~> Warning: OpenTF expects that each remote object it is managing will be
|
|
bound to only one resource address, which is normally guaranteed by OpenTF
|
|
itself having created all objects. If you import existing objects into OpenTF,
|
|
be careful to import each remote object to only one OpenTF resource address.
|
|
If you import the same object multiple times, OpenTF may exhibit unwanted
|
|
behavior. For more information on this assumption, see
|
|
[the State section](/opentf/language/state).
|
|
|
|
The command-line flags are all optional. The following flags are available:
|
|
|
|
- `-config=path` - Path to directory of OpenTF configuration files that
|
|
configure the provider for import. This defaults to your working directory.
|
|
If this directory contains no OpenTF configuration files, the provider
|
|
must be configured via manual input or environmental variables.
|
|
|
|
- `-input=true` - Whether to ask for input for provider configuration.
|
|
|
|
- `-lock=false` - Don't hold a state lock during the operation. This is
|
|
dangerous if others might concurrently run commands against the same
|
|
workspace.
|
|
|
|
- `-lock-timeout=0s` - Duration to retry a state lock.
|
|
|
|
- `-no-color` - If specified, output won't contain any color.
|
|
|
|
- `-parallelism=n` - Limit the number of concurrent operation as OpenTF
|
|
[walks the graph](/opentf/internals/graph#walking-the-graph). Defaults
|
|
to 10.
|
|
|
|
- `-provider=provider` - **Deprecated** Override the provider configuration to
|
|
use when importing the object. By default, OpenTF uses the provider specified
|
|
in the configuration for the target resource, and that is the best behavior in most cases.
|
|
|
|
- `-var 'foo=bar'` - Set a variable in the OpenTF configuration. This flag
|
|
can be set multiple times. Variable values are interpreted as
|
|
[literal expressions](/opentf/language/expressions/types) in the
|
|
OpenTF language, so list and map values can be specified via this flag.
|
|
|
|
- `-var-file=foo` - Set variables in the OpenTF configuration from
|
|
a [variable file](/opentf/language/values/variables#variable-definitions-tfvars-files). If
|
|
a `terraform.tfvars` or any `.auto.tfvars` files are present in the current
|
|
directory, they will be automatically loaded. `terraform.tfvars` is loaded
|
|
first and the `.auto.tfvars` files after in alphabetical order. Any files
|
|
specified by `-var-file` override any values set automatically from files in
|
|
the working directory. This flag can be used multiple times. This is only
|
|
useful with the `-config` flag.
|
|
|
|
For configurations using the [`cloud` backend](/opentf/cli/cloud) or the [`remote` backend](/opentf/language/settings/backends/remote)
|
|
only, `opentf import`
|
|
also accepts the option
|
|
[`-ignore-remote-version`](/opentf/cli/cloud/command-line-arguments#ignore-remote-version).
|
|
|
|
For configurations using
|
|
[the `local` backend](/opentf/language/settings/backends/local) only,
|
|
`opentf import` also accepts the legacy options
|
|
[`-state`, `-state-out`, and `-backup`](/opentf/language/settings/backends/local#command-line-arguments).
|
|
|
|
## Provider Configuration
|
|
|
|
OpenTF will attempt to load configuration files that configure the
|
|
provider being used for import. If no configuration files are present or
|
|
no configuration for that specific provider is present, OpenTF will
|
|
prompt you for access credentials. You may also specify environmental variables
|
|
to configure the provider.
|
|
|
|
The only limitation OpenTF has when reading the configuration files
|
|
is that the import provider configurations must not depend on non-variable
|
|
inputs. For example, a provider configuration cannot depend on a data
|
|
source.
|
|
|
|
As a working example, if you're importing AWS resources and you have a
|
|
configuration file with the contents below, then OpenTF will configure
|
|
the AWS provider with this file.
|
|
|
|
```hcl
|
|
variable "access_key" {}
|
|
variable "secret_key" {}
|
|
|
|
provider "aws" {
|
|
access_key = "${var.access_key}"
|
|
secret_key = "${var.secret_key}"
|
|
}
|
|
```
|
|
|
|
## Example: Import into Resource
|
|
|
|
This example will import an AWS instance into the `aws_instance` resource named `foo`:
|
|
|
|
```shell
|
|
$ opentf import aws_instance.foo i-abcd1234
|
|
```
|
|
|
|
## Example: Import into Module
|
|
|
|
The example below will import an AWS instance into the `aws_instance` resource named `bar` into a module named `foo`:
|
|
|
|
```shell
|
|
$ opentf import module.foo.aws_instance.bar i-abcd1234
|
|
```
|
|
|
|
## Example: Import into Resource configured with count
|
|
|
|
The example below will import an AWS instance into the first instance of the `aws_instance` resource named `baz` configured with
|
|
[`count`](/opentf/language/meta-arguments/count):
|
|
|
|
```shell
|
|
$ opentf import 'aws_instance.baz[0]' i-abcd1234
|
|
```
|
|
|
|
## Example: Import into Resource configured with for_each
|
|
|
|
The example below will import an AWS instance into the `"example"` instance of the `aws_instance` resource named `baz` configured with
|
|
[`for_each`](/opentf/language/meta-arguments/for_each):
|
|
|
|
Linux, Mac OS, and UNIX:
|
|
|
|
```shell
|
|
$ opentf import 'aws_instance.baz["example"]' i-abcd1234
|
|
```
|
|
|
|
PowerShell:
|
|
|
|
```shell
|
|
$ opentf import 'aws_instance.baz[\"example\"]' i-abcd1234
|
|
```
|
|
|
|
Windows `cmd.exe`:
|
|
|
|
```shell
|
|
$ opentf import aws_instance.baz[\"example\"] i-abcd1234
|
|
```
|