如何创建临时的一次性地形资源?

如何创建临时的一次性地形资源?

我已经在邮件列表和文档中搜索了如何执行此操作,但没有找到任何内容。

以下是我的用例:我在 AWS 上有一个相当简单的架构。有时我想测试一次性的事情,例如安全组配置是否正确。

为此,我启动了两个实例。因为我不喜欢点击(并且因为这些实例需要在 VPC 的不同部分设置),所以我在 terraform.tf文件中定义了它们。

我希望只有当我明确需要这两个实例时,它们才会启动。换句话说,当我需要时terraform apply,我不希望创建这两个实例。

以下是我尝试过的几件事:

  • 将它们放在temp子目录中,然后仅执行此文件(例如使用terraform plan -out=disposable.plan -target=temp/disposable.tf)。问题:它没有检测到任何变化(“没有变化。基础设施是最新的。”)。
  • 我尝试过使用子目录的其他方法(不记得具体原因),terraform 抱怨未定义的变量和资源。问题:我需要访问我在主目录中定义的变量和资源(例如子网 ID、安全组等)。
  • 我也尝试直接应用该文件(不确定是否可行)terraform apply temp/disposable.tf。问题:它抱怨该文件无效,并显示“不是有效的计划文件”(该文件确实有效)。
  • 将文件重命名为其他名称,例如.tf.temp,并.tf在需要资源时将其重命名为。这很好用,但您必须记住不要提交此更改。我更喜欢可以在命令行上完成的操作(例如运行单个.tf文件)。

答案1

这可以通过使用 count 和有条件的

设置一个具有默认值的false变量variables.tf

variable temp_instances {
  default = false
}

在定义实例时使用此功能,方法是使用 count 属性设置有条件的像这样:

resource "aws_instances" "temp1" {
  ...
  count = "${var.temp_instances ? 1 : 0}"
  ...
}

由于变量false默认为 0,因此它会将计数设置为 0 并且不会创建实例。然后,您可以选择在 期间将此变量设置为 true 来设置它apply

terraform apply -var 'temp_instances=true'

使用上述条件,现在将为真,因此将计数设置为 1。

相关内容