Terraform Import
The Tailor Platform Terraform provider supports importing existing resources into your Terraform configuration, allowing you to bring resources that were created through the console or CLI.
Importing a single resource
You can import a single existing resource by adding a resource configuration block to your Terraform files and then running the terraform import
command.
Example
Let's import an existing TailorDB Namespace into your Terraform configuration:
<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">resource</span><span style="color: var(--shiki-color-text)"> "tailor_tailordb" "example" {</span></span>
<span><span style="color: var(--shiki-color-text)"> id </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">"trn:v1:workspace:<workspace_id>:tailordb:<namespace>"</span></span>
<span><span style="color: var(--shiki-color-text)"> }</span></span>
<span></span>
Then run:
<span><span style="color: var(--shiki-token-function)">terraform</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">import</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">tailor_tailordb.example</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">trn:v1:workspace:</span><span style="color: var(--shiki-token-keyword)"><</span><span style="color: var(--shiki-token-string)">workspace_i</span><span style="color: var(--shiki-color-text)">d</span><span style="color: var(--shiki-token-keyword)">></span><span style="color: var(--shiki-token-string)">:tailordb:</span><span style="color: var(--shiki-token-keyword)"><</span><span style="color: var(--shiki-token-string)">namespac</span><span style="color: var(--shiki-color-text)">e</span><span style="color: var(--shiki-token-keyword)">></span></span>
<span></span>
After importing, run terraform plan
to verify and adjust the configuration to match the imported state.
Bulk Import existing workspace resources
You can also import all resources in a workspace by following these steps:
- Export existing resources:
<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">workspace</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">export</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">--output</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)"><</span><span style="color: var(--shiki-token-string)">your-director</span><span style="color: var(--shiki-color-text)">y</span><span style="color: var(--shiki-token-keyword)">></span></span>
<span></span>
- Create
<your-directory>/provider.tf
:
<span><span style="color: var(--shiki-token-function)">terraform</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">required_providers</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)"> tailor </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)"> source </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">"tailor-platform/tailor"</span></span>
<span><span style="color: var(--shiki-color-text)"> version </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">">= 1.1.1"</span></span>
<span><span style="color: var(--shiki-color-text)"> }</span></span>
<span><span style="color: var(--shiki-color-text)"> }</span></span>
<span><span style="color: var(--shiki-color-text)">}</span></span>
<span></span>
<span><span style="color: var(--shiki-token-function)">provider</span><span style="color: var(--shiki-color-text)"> "tailor" {}</span></span>
<span></span>
- Run
terraform plan
to generate and validate the imported resource configurations:
<span><span style="color: var(--shiki-token-function)">terraform</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">plan</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">-generate-config-out=imported_resources.tf</span></span>
<span></span>
Review imported_resources.tf
to ensure all resources are correctly imported.
Incremental Importing
Incremental importing allows you to gradually bring resources to your workspace comparing and importing only the resources not already tracked in your current state.
- Export current state to JSON:
<span><span style="color: var(--shiki-token-function)">terraform</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">show</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">-json</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">></span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">existing.json</span></span>
<span></span>
- Export only resources not in the existing state:
<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">workspace</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">export</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">--output</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)"><</span><span style="color: var(--shiki-token-string)">your-director</span><span style="color: var(--shiki-color-text)">y</span><span style="color: var(--shiki-token-keyword)">></span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">--state</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">existing.json</span></span>
<span></span>
This will export the resources that are not in the existing.json
file. Import the new resources using the Terraform import process.