【问题标题】:How do I migrate a Pulumi Azure resource to Azure-Nextgen?如何将 Pulumi Azure 资源迁移到 Azure-Nextgen?
【发布时间】:2021-05-23 01:11:30
【问题描述】:

我正在尝试将 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'

【问题讨论】:

    标签: pulumi


    【解决方案1】:

    别名不能跨提供商使用。 “经典” Azure 提供程序中的资源形态与下一代原生 Azure 提供程序不同,因此状态不兼容。

    您必须遵循以下手动流程:

    1. 使用 NextGen 将现有存储帐户作为新资源导入

      pulumi import azure-nextgen:storage/latest:StorageAccount storage /subscriptions/01234567-89ab-cdef-0123-456789abcdef/resourceGroups/my-rgca05c9f8/providers/Microsoft.Storage/storageAccounts/storagea791686
      
    2. 上面的命令将导入状态并为您打印出代码。将代码复制到您的程序中。

    3. 现在,从您的状态(不是从 Azure)中删除旧资源

      pulumi state delete urn:pulumi:dev::ts::azure:storage/account:Account::storage
      
    4. 从您的 Pulumi 程序中删除旧资源。

    5. 运行pulumi up 以确保一切正常。您应该不会看到任何变化。

    在接下来的几周内会有一个迁移指南,当它出来时我会用一个链接更新这个答案。

    【讨论】:

    • 我用一个没有依赖关系的资源测试了这个过程,它可以工作 :) 但是,对于其中已经配置了容器和其他资源的存储帐户,我得到了error: This resource can't be safely deleted because the following resources depend on it:。有没有办法在不删除然后重新导入所有容器的情况下做到这一点?
    • 您需要更新您的程序,以便容器引用新导入的存储帐户并运行pulumi up 以更新状态中的依赖关系图。然后你应该能够从状态中删除旧资源。或者,您可以先迁移容器,然后再移动帐户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多