azapi2azurerm
Introduction
This tool is used to migrate resources from terraform azapi
provider to azurerm
provider.
How to setup?
- Clone this repo to local.
go install
under project directory.
Command Usage
PS C:\Users\henglu\go\src\github.com\Azure\azapi2azurerm> azapi2azurerm.exe
Usage: azapi2azurerm [--version] [--help] <command> [<args>]
Available commands are:
migrate Migrate azapi resources to azurerm resources in current working directory
plan Show azapi resources which can migrate to azurerm resources in current working directory
version Displays the version of the migration tool
- Run
azapi2azurerm plan
under your terraform working directory,
it will list all resources that can be migrated from azapi
provider to azurerm
provider.
The Terraform addresses listed in file azapi2azurerm.ignore
will be ignored during migration.
2022/01/25 14:34:46 [INFO] searching azapi_resource & azapi_update_resource...
2022/01/25 14:34:55 [INFO]
The tool will perform the following actions:
The following resources will be migrated:
azapi_resource.test2 will be replaced with azurerm_automation_account
azapi_update_resource.test will be replaced with azurerm_automation_account
The following resources can't be migrated:
azapi_resource.test: input properties not supported: [], output properties not supported: [identity.principalId, identity.type, identity.tenantId]
The following resources will be ignored in migration:
- Run
azapi2azurerm migrate
under your terraform working directory,
it will migrate above resources from azapi
provider to azurerm
provider,
both terraform configuration and state.
The Terraform addresses listed in file azapi2azurerm.ignore
will be ignored during migration.
Examples
There're some examples to show the migration results.
- case1 - basic
- case2 - for_each
- case3 - nested block
- case4 - count
- case5 - nested block patch
- case6 - meta argument
- case7 - ignore
Features
- Support resource
azapi_resource
migration
- Support resource
azapi_update_resource
migration
- Support meta-argument
for_each
- Support meta-argument
count
- Support meta-argument
depends_on
, lifecycle
and provisioner
- Support dependency injection in array and primitive value.
- Support dependency injection in Map and other complicated struct value.
- Support user input when there're multiple/none
azurerm
resource match for the resource id
- Support migration based on
azurerm
provider's property coverage
- Support ignore terraform addresses listed in file
azapi2azurerm.ignore
- Support data source
azapi_resource
migration.
Known limitations
- References to local variables can't be migrated.
- Usage of
dynamic
can't be migrated.
- Update resource used to manage CMK can't be migrated.