有没有办法遍历提供者?

时间:2019-10-28 20:22:50

标签: amazon-web-services configuration terraform hcl

我已经设置了两个提供程序(2个aws帐户),我想在每个帐户上启动一个ec2实例,而不必重复代码。

我尝试使用带有count和for_each的循环,但是没有运气。

[selection1_x[0], scale("x", datetime(
    year(invert("x", clamp(x(unit),0,width))),
    month(invert("x", clamp(x(unit),0,width))),
    date(invert("x", clamp(x(unit),0,width)))
        - day(invert("x", clamp(x(unit),0,width)))))]

我遇到下一个错误:

错误:provider.each:未安装合适的版本   版本要求:“(任何版本)”   安装的版本:无

我尝试了类似的代码,遍历ami,实例类型等其他值,并且可以正常工作。

我不确定是否有某些东西我看不到或不支持它的提供程序上的迭代。

对此有任何想法或解决方法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

Terraform在其他处理之前将资源与提供者关联(因为提供者的选择会影响aws_instance的含义,从而影响内部的其他内容),因此provider参数必须是对a的字面引用提供者。出现此错误消息是因为Terraform认为您正在请求名为“ each”和alias = "value"的提供程序的提供程序配置,因此它正在尝试安装该提供程序。

在Terraform中表示多个环境的主要方法是为每个环境使用单独的根模块,其中包含该环境的后端和提供程序配置,然后将环境之间共享的公共元素分解为一个或多个共享模块。然后,您可以将更改分别应用于每个环境,从而降低了为某个环境提供机会会无意中影响另一个环境的风险。