Zdarza sie, że do terraformowej definicji trzeba zaimportować istniejące już na Azure obiektu. Służy do tego polecenie import:
terraform import azurerm_recovery_services_vault.vault1 /subscriptions/XXX/resourcegroups/recovery-delme/providers/Microsoft.recoveryservices/vaults/recoservvault
Co zrobić jeśli komenda zakończy się błędem?
azurerm_recovery_services_vault.vault1: Importing from ID "/subscriptions/XXX/resourcegroups/recovery-delme/providers/Microsoft.recoveryservices/vaults/recoservvault"…
data.azurerm_resource_group.example: Reading…
data.azurerm_resource_group.example: Read complete after 0s [id=/subscriptions/XXX/resourceGroups/recovery-delme]
╷
│ Error: parsing "/subscriptions/XXX/resourcegroups/recovery-delme/providers/Microsoft.recoveryservices/vaults/recoservvault": parsing segment "staticResourceGroups": parsing the Vault ID: the segment at position 2 didn't match
│
│ Expected a Vault ID that matched:
│
│ > /subscriptions/XXX/resourceGroups/example-resource-group/providers/Microsoft.RecoveryServices/vaults/vaultValue
│
│ However this value was provided:
│
│ > /subscriptions/XXX/resourcegroups/recovery-delme/providers/Microsoft.recoveryservices/vaults/recoservvault
│
│ The parsed Resource ID was missing a value for the segment at position 2
│ (which should be the literal value "resourceGroups").
O co chodzi? Pierwsza różnica, jaką widać dotyczy nazwy resourceGroups, raz napisaną przez małe, a raz przez wielkie „G”. Rzeczywiście. Terraform, a może dokładniej ARM jest czuły na wielkość liter. Wystarczy zapisać resourceGroups tak, jak chciałby Terraform i wszystko zadziała jak należy!