Terraform 地形依赖于另一路径中的另一个模块

Terraform 地形依赖于另一路径中的另一个模块,terraform,artifactory,Terraform,Artifactory,我想自动创建Artifactory存储库。为此,我使用了Atlasian Artificatory插件,但在为虚拟存储库声明本地存储库之前,我遇到了一个问题 这是我的文件夹: modules/ ├── local-repository/ │ ├── main.tf │ ├── variables.tf ├── virtual-repository/ │ ├── main.tf │ └──variables.tf │── local-repository-xxx.tf │── vi

我想自动创建Artifactory存储库。为此,我使用了Atlasian Artificatory插件,但在为虚拟存储库声明本地存储库之前,我遇到了一个问题

这是我的文件夹:

modules/
├── local-repository/
│   ├── main.tf
│   ├── variables.tf
├── virtual-repository/
│   ├── main.tf
│   └──variables.tf
│── local-repository-xxx.tf
│── virtual-repository-xxx.tf
│── variables.tf
│──provider.tf
│── version.tf
Local-repository.tf:

resource "artifactory_local_repository" "local-repository" {
  key          = var.key
  package_type = var.type
}
虚拟存储库:

resource "artifactory_virtual_repository" "virtual-repository" {
  key          = var.key
  package_type = var.type
  repositories = [var.repositories]
}
我想先创建所有本地存储库,然后再创建虚拟存储库

在这种情况下,我如何使用calldependen________


谢谢

当您通过输出值从模块返回数据或通过输入变量将数据传递给模块时,值本身及其依赖项都会传递

如果使用对要依赖的对象的引用填充子模块的变量,则可以在此处避免使用
dependens\u on
。例如:

resource "artifactory_local_repository" "local-repository" {
  key          = var.key
  package_type = var.type
}

module "virtual_repository" {
  source = "./virtual-repository"

  # ...

  # If you create the repositories value by referring to
  # artifactory_local_repository.local-repository then
  # any resource in the module that refers to
  # var.repositories will in turn depend on
  # artifactory_local_repository.local-repository
  # automatically.
  repositories = artifactory_local_repository.local-repository[*].id
}
  # Using var.repositories in a depends_on
  # means that the resource will depend on
  # whatever var.repositories depends on, even
  # if it doesn't actually use the value of
  # the variable.
  depends_on = [var.repositories]
在引用没有自动指定所有依赖项的异常情况下,可以在dependens_on中使用输入变量和输出值。例如:

resource "artifactory_local_repository" "local-repository" {
  key          = var.key
  package_type = var.type
}

module "virtual_repository" {
  source = "./virtual-repository"

  # ...

  # If you create the repositories value by referring to
  # artifactory_local_repository.local-repository then
  # any resource in the module that refers to
  # var.repositories will in turn depend on
  # artifactory_local_repository.local-repository
  # automatically.
  repositories = artifactory_local_repository.local-repository[*].id
}
  # Using var.repositories in a depends_on
  # means that the resource will depend on
  # whatever var.repositories depends on, even
  # if it doesn't actually use the value of
  # the variable.
  depends_on = [var.repositories]
在更不寻常的情况下,输出本身需要带有通常不具有的依赖项,您可以在
输出
块内使用
依赖

output "id" {
  value      = "anything"
  depends_on = [artifactory_local_repository.local-repository]
}

只要引用其他对象并让Terraform自动计算依赖项,几乎总是可能的,而且更好,因为这样依赖项就会随着模块的发展而自动保持正确,并且您不必编写大量额外的依赖项注释
Dependes_on
仅适用于对地形“隐藏”的依赖关系的异常情况,因为两个对象之间存在一种不被这些对象的参数捕获的关系<“代码>依赖于”是最后的选择。

当您通过输出值从模块返回数据或通过输入变量将数据传递给模块时,值本身及其依赖项都会传递

如果使用对要依赖的对象的引用填充子模块的变量,则可以在此处避免使用
dependens\u on
。例如:

resource "artifactory_local_repository" "local-repository" {
  key          = var.key
  package_type = var.type
}

module "virtual_repository" {
  source = "./virtual-repository"

  # ...

  # If you create the repositories value by referring to
  # artifactory_local_repository.local-repository then
  # any resource in the module that refers to
  # var.repositories will in turn depend on
  # artifactory_local_repository.local-repository
  # automatically.
  repositories = artifactory_local_repository.local-repository[*].id
}
  # Using var.repositories in a depends_on
  # means that the resource will depend on
  # whatever var.repositories depends on, even
  # if it doesn't actually use the value of
  # the variable.
  depends_on = [var.repositories]
在引用没有自动指定所有依赖项的异常情况下,可以在dependens_on中使用输入变量和输出值。例如:

resource "artifactory_local_repository" "local-repository" {
  key          = var.key
  package_type = var.type
}

module "virtual_repository" {
  source = "./virtual-repository"

  # ...

  # If you create the repositories value by referring to
  # artifactory_local_repository.local-repository then
  # any resource in the module that refers to
  # var.repositories will in turn depend on
  # artifactory_local_repository.local-repository
  # automatically.
  repositories = artifactory_local_repository.local-repository[*].id
}
  # Using var.repositories in a depends_on
  # means that the resource will depend on
  # whatever var.repositories depends on, even
  # if it doesn't actually use the value of
  # the variable.
  depends_on = [var.repositories]
在更不寻常的情况下,输出本身需要带有通常不具有的依赖项,您可以在
输出
块内使用
依赖

output "id" {
  value      = "anything"
  depends_on = [artifactory_local_repository.local-repository]
}

只要引用其他对象并让Terraform自动计算依赖项,几乎总是可能的,而且更好,因为这样依赖项就会随着模块的发展而自动保持正确,并且您不必编写大量额外的依赖项注释
Dependes_on
仅适用于对地形“隐藏”的依赖关系的异常情况,因为两个对象之间存在一种不被这些对象的参数捕获的关系<代码>取决于是最后的手段。

什么版本的地形<代码>依赖模块仅在beta 0.13 Hello@HelderSepulveda上可用,我们使用terraform 1.12我猜你的意思是
0.12
,不,不
依赖
对于该版本的模块,在版本0.12中可以指定执行顺序的变通方法?只有“变通方法”我能想到的是重构你的代码而不是使用模块,你可以在资源之间很好地使用它。。。不理想,但这就是你在0.12上所能做的一切。什么版本的Terraform<代码>依赖模块仅在beta 0.13 Hello@HelderSepulveda上可用,我们使用terraform 1.12我猜你的意思是
0.12
,不,不
依赖
对于该版本的模块,在版本0.12中可以指定执行顺序的变通方法?只有“变通方法”我能想到的是重构你的代码而不是使用模块,你可以在资源之间很好地使用它。。。不太理想,但这就是你在0.12上所能做的