如何将 Pulumi Azure 资源迁移到 Azure-Nextgen?
How do I migrate a Pulumi Azure resource to Azure-Nextgen?
我正在尝试将 Azure 存储帐户(最初是使用旧版 Azure 提供程序创建)的 pulumi 代码迁移到 Azure-Nextgen 提供程序。 Aliases
属性 没有按预期工作。这可能吗,还是我遗漏了一些明显的东西?:
原文:
var storageAccount = new Account($"storage_{storageName}", new AccountArgs
{
Name = $"{storageName}",
ResourceGroupName = resourceGroup.Name,
AccountReplicationType = "LRS",
AccountTier = "Standard",
Location = resourceGroup.Location,
IsHnsEnabled = true,
MinTlsVersion = "TLS1_2"
},
new CustomResourceOptions()
{
Protect = true
});
新:
var storageAccount = new StorageAccount($"storage_{storageName}",
new StorageAccountArgs()
{
AccountName = $"{storageName}",
Location = location,
ResourceGroupName = resourceGroup.Name,
Kind = Kind.StorageV2,
AccessTier = AccessTier.Hot,
Sku = new SkuArgs()
{
Name = SkuName.Standard_LRS
},
IsHnsEnabled = true,
MinimumTlsVersion = MinimumTlsVersion.TLS1_2
},
new CustomResourceOptions()
{
Protect = true,
Aliases =
{
new Alias
{
Urn = "urn:pulumi:myEnvironment::myStack::azure:storage/account:Account::storage_storageName"
}
}
});
控制台中的 Pulumi 预览:
azure:storage:Account (storage_storageName):
error: Preview failed: refusing to delete protected resource 'urn:pulumi:myEnvironment::myStack::azure:storage/account:Account::storage_storageName'
别名不能跨提供商使用。 “经典”Azure 提供者的资源形态与下一代原生 Azure 提供者不同,因此状态不兼容。
您必须遵循以下手动过程:
使用 NextGen 将现有存储帐户导入为新资源
pulumi import azure-nextgen:storage/latest:StorageAccount storage /subscriptions/01234567-89ab-cdef-0123-456789abcdef/resourceGroups/my-rgca05c9f8/providers/Microsoft.Storage/storageAccounts/storagea791686
上面的命令将导入状态并为您打印出代码。将代码复制到您的程序中。
现在,从你的状态(不是从 Azure)中删除旧资源
pulumi state delete urn:pulumi:dev::ts::azure:storage/account:Account::storage
从您的 Pulumi 程序中删除旧资源。
运行 pulumi up
以确保一切正常。您应该看不到任何变化。
迁移指南将在接下来的几周内发布,发布后我会用 link 更新此答案。
我正在尝试将 Azure 存储帐户(最初是使用旧版 Azure 提供程序创建)的 pulumi 代码迁移到 Azure-Nextgen 提供程序。 Aliases
属性 没有按预期工作。这可能吗,还是我遗漏了一些明显的东西?:
原文:
var storageAccount = new Account($"storage_{storageName}", new AccountArgs
{
Name = $"{storageName}",
ResourceGroupName = resourceGroup.Name,
AccountReplicationType = "LRS",
AccountTier = "Standard",
Location = resourceGroup.Location,
IsHnsEnabled = true,
MinTlsVersion = "TLS1_2"
},
new CustomResourceOptions()
{
Protect = true
});
新:
var storageAccount = new StorageAccount($"storage_{storageName}",
new StorageAccountArgs()
{
AccountName = $"{storageName}",
Location = location,
ResourceGroupName = resourceGroup.Name,
Kind = Kind.StorageV2,
AccessTier = AccessTier.Hot,
Sku = new SkuArgs()
{
Name = SkuName.Standard_LRS
},
IsHnsEnabled = true,
MinimumTlsVersion = MinimumTlsVersion.TLS1_2
},
new CustomResourceOptions()
{
Protect = true,
Aliases =
{
new Alias
{
Urn = "urn:pulumi:myEnvironment::myStack::azure:storage/account:Account::storage_storageName"
}
}
});
控制台中的 Pulumi 预览:
azure:storage:Account (storage_storageName):
error: Preview failed: refusing to delete protected resource 'urn:pulumi:myEnvironment::myStack::azure:storage/account:Account::storage_storageName'
别名不能跨提供商使用。 “经典”Azure 提供者的资源形态与下一代原生 Azure 提供者不同,因此状态不兼容。
您必须遵循以下手动过程:
使用 NextGen 将现有存储帐户导入为新资源
pulumi import azure-nextgen:storage/latest:StorageAccount storage /subscriptions/01234567-89ab-cdef-0123-456789abcdef/resourceGroups/my-rgca05c9f8/providers/Microsoft.Storage/storageAccounts/storagea791686
上面的命令将导入状态并为您打印出代码。将代码复制到您的程序中。
现在,从你的状态(不是从 Azure)中删除旧资源
pulumi state delete urn:pulumi:dev::ts::azure:storage/account:Account::storage
从您的 Pulumi 程序中删除旧资源。
运行
pulumi up
以确保一切正常。您应该看不到任何变化。
迁移指南将在接下来的几周内发布,发布后我会用 link 更新此答案。