Terraform中使用count/for_each时如何配置depends_on
Terraform中使用count/for_each创建资源时的depends_on用法
当通过count或for_each创建多实例资源时,depends_on的使用分两种场景:依赖所有实例,或者依赖特定实例,具体写法如下:
1. 依赖所有实例
如果需要让目标资源等待该多实例资源的全部实例创建完成,直接使用资源名称即可,Terraform会自动识别这是一个资源集合,等待所有实例就绪:
resource "azurerm_storage_container" "cont1" { # 其他配置项 depends_on = [ azurerm_storage_account.storageAccount ] } resource "azurerm_storage_account" "storageAccount" { count = 3 name = "storageAccountName-${count.index}" resource_group_name = "rg-demo" location = "centralus" account_tier = "Standard" account_replication_type= "LRS" }
2. 依赖特定实例
如果只需要依赖多实例资源中的某一个特定实例,要根据创建方式(count/for_each)来精准引用:
针对count创建的资源
count是基于索引生成实例,索引从0开始。比如你要依赖名称为storageAccountName-2的实例(对应count.index=2),直接通过索引下标引用即可:
resource "azurerm_storage_container" "cont1" { # 其他配置项 depends_on = [ azurerm_storage_account.storageAccount[2] ] } resource "azurerm_storage_account" "storageAccount" { count = 3 name = "storageAccountName-${count.index}" resource_group_name = "rg-demo" location = "centralus" account_tier = "Standard" account_replication_type= "LRS" }
针对for_each创建的资源
如果是用for_each(基于集合或映射)创建的资源,需要通过for_each的键来引用特定实例。比如假设存储账户基于字符串集合创建:
resource "azurerm_storage_account" "storageAccount" { for_each = toset(["acc0", "acc1", "acc2"]) name = "storageAccountName-${each.value}" resource_group_name = "rg-demo" location = "centralus" account_tier = "Standard" account_replication_type= "LRS" }
若要依赖storageAccountName-acc2这个实例,就用对应的键引用:
resource "azurerm_storage_container" "cont1" { # 其他配置项 depends_on = [ azurerm_storage_account.storageAccount["acc2"] ] }
内容的提问来源于stack exchange,提问作者user20641787
相关产品推荐
相关产品推荐

