Add migration import examples for the SKE and LogMe services (#15)

* Fix internal ID strucutre description

* Add example to MIGRATION.md

* Add SKE example

* Add LogMe instance and note for import issue
This commit is contained in:
João Palet 2023-09-11 15:09:33 +02:00 committed by GitHub
parent e6ffcd1c10
commit 1b1301b011
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 113 additions and 4 deletions

View file

@ -10,3 +10,112 @@ Before you begin the migration process, please ensure that you have done the nec
For existing resources created with the old provider, you'll need to import them into your new configuration. Terraform provides a feature for importing existing resources and auto-generating new Terraform configuration files. To generate configuration code for the imported resources, refer to the official [Terraform documentation](https://developer.hashicorp.com/terraform/language/import/generating-configuration) for step-by-step guidance.
Once the configuration is generated, compare the generated file with your existing configuration. Be aware that field names may have changed so you should adapt the configuration accordingly. However, not all attributes from the generated configuration are needed for managing the infrastructure, meaning this set of fields can be reduced to the relevant ones from your previous configuration. Check the Terraform plan for the imported resource to identify any differences.
### Example (SKE service)
Import configuration:
```terraform
# Import
import {
id = "project_id"
to = stackit_ske_project.project-example
}
import {
id = "project_id,example-cluster"
to = stackit_ske_cluster.cluster-example
}
```
Generated configuration:
```terraform
# __generated__ by Terraform
# Please review these resources and move them into your main configuration files.
# __generated__ by Terraform from "project_id"
resource "stackit_ske_project" "project-example" {
project_id = "project_id"
}
# __generated__ by Terraform from "project_id,example-cluster"
resource "stackit_ske_cluster" "cluster-example" {
allow_privileged_containers = null
extensions = null
hibernations = null
kubernetes_version = "1.25"
maintenance = {
enable_kubernetes_version_updates = true
enable_machine_image_version_updates = true
end = "09:47:00Z"
start = "08:47:00Z"
}
name = "example-cluster"
node_pools = [
{
availability_zones = ["region-a", "region-b"]
cri = "containerd"
labels = {
l1 = "value1"
l2 = "value2"
}
machine_type = "b1.2"
max_surge = 1
max_unavailable = 1
maximum = 10
minimum = 3
name = "example-np"
os_name = "flatcar"
os_version = "3510.2.3"
taints = [
{
effect = "PreferNoSchedule"
key = "tk"
value = "tkv"
},
]
volume_size = 40
volume_type = "example-type"
},
]
project_id = "project_id"
}
```
### Example (LogMe service)
Import configuration:
```terraform
import {
id = "project_id,instance_id"
to = stackit_logme_instance.example-instance
}
import {
id = "project_id,instance_id,credentials_id"
to = stackit_logme_credentials.example-credentials
}
```
Generated configuration:
```terraform
# __generated__ by Terraform
# Please review these resources and move them into your main configuration files.
# __generated__ by Terraform
resource "stackit_logme_instance" "example-instance" {
name = "example-instance"
parameters = {
sgw_acl = "0.0.0.0/0"
}
plan_name = null
project_id = "project_id"
version = null
}
# __generated__ by Terraform from "project_id,instance_id,credentials_id"
resource "stackit_logme_credentials" "example-credentials" {
instance_id = "instance_id"
project_id = "project_id"
}
```
**_Note:_** Currently, when importing the LogMe (or any other DSA), you will see a `Missing Configuration for Required Attribute` error. This issue refers to the `plan_name` and `version` attributes, which are not returned by the API, and currently are solely used by the TFP to calculate the corresponding `plan_id`. We plan to enhance the provider's functionality soon to perform the reverse operation, generating the `plan_name` and `version` correctly. However, for the time being, you'll need to retrieve these values from an alternative source, e.g., the Portal.

View file

@ -34,7 +34,7 @@ data "stackit_dns_record_set" "example" {
- `active` (Boolean) Specifies if the record set is active or not.
- `comment` (String) Comment.
- `error` (String) Error shows error in case create/update/delete failed.
- `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`instance_id`,`record_set_id`".
- `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`zone_id`,`record_set_id`".
- `name` (String) Name of the record which should be a valid domain according to rfc1035 Section 2.3.4. E.g. `example.com`
- `records` (List of String) Records.
- `state` (String) Record set state.

View file

@ -43,6 +43,6 @@ resource "stackit_dns_record_set" "example" {
### Read-Only
- `error` (String) Error shows error in case create/update/delete failed.
- `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`instance_id`,`record_set_id`".
- `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`zone_id`,`record_set_id`".
- `record_set_id` (String) The rr set id.
- `state` (String) Record set state.

View file

@ -76,7 +76,7 @@ func (d *recordSetDataSource) Schema(_ context.Context, _ datasource.SchemaReque
Description: "DNS Record Set Resource schema.",
Attributes: map[string]schema.Attribute{
"id": schema.StringAttribute{
Description: "Terraform's internal resource ID. It is structured as \"`project_id`,`instance_id`,`record_set_id`\".",
Description: "Terraform's internal resource ID. It is structured as \"`project_id`,`zone_id`,`record_set_id`\".",
Computed: true,
},
"project_id": schema.StringAttribute{

View file

@ -104,7 +104,7 @@ func (r *recordSetResource) Schema(_ context.Context, _ resource.SchemaRequest,
Description: "DNS Record Set Resource schema.",
Attributes: map[string]schema.Attribute{
"id": schema.StringAttribute{
Description: "Terraform's internal resource ID. It is structured as \"`project_id`,`instance_id`,`record_set_id`\".",
Description: "Terraform's internal resource ID. It is structured as \"`project_id`,`zone_id`,`record_set_id`\".",
Computed: true,
PlanModifiers: []planmodifier.String{
stringplanmodifier.UseStateForUnknown(),