我正在使用Terraform创建一些资源。创建资源的副作用之一是创建另一个资源(让我们称之为B)。问题是我无法访问B来在terraform中编辑它,因为terraform认为它"不在状态"。我也不能在terraform apply
启动前的状态下导入B,因为B不存在。
在运行apply
命令时,是否有办法将远程资源添加(导入)到状态?
我认为这是一个一般性的问题,如果没有解决方案,我也可以分享我正在创建的资源的细节。
更多细节:当我创建一个"存储帐户"时在Azure上使用Terraform并启用static_website, Azure会自动创建一个名为$web
的storage_container
。我需要编辑$web
容器的属性之一,但Terraform告诉我它不在当前状态,需要导入。存储账户为A,容器为B
不幸的是,我没有回答您在应用期间导入资源的具体问题。起程拓殖的基本前提是,它从创建管理资源。因此,在您可以将资源的当前状态导入到您的状态之前,您需要声明一个资源(在本例中为azurerm_storage_container
)。
在理想的情况下,您可以首先显式地创建容器并指定存储帐户使用它,但是快速查看文档并不建议这是一个选项(我认为这是您已经尝试过的东西)。如果它没有在Terraform中公开,那很可能是因为它没有被Azure API公开(免责声明:不是Azure用户)
我能想到的唯一(坏)答案是,你在代码中定义一个azurerm_storage_container
数据资源,依赖于azurerm_storage_account
资源,这将能够拉回创建的容器的细节。然后,您可能会有一个null_resource
调用一个local-exec
提供程序,该提供程序可以使用从数据资源获取的参数来触发CLI命令,从而允许您使用Azure CLI工具来编辑容器。
我真的希望别人可以用一个更好的答案出现tho: |