如何在Terraform Apply命令中将.tf文件作为inut?

时间:2017-12-08 05:34:53

标签: terraform

我是Terraform的初学者。

我有一个包含2个.tf文件的目录。

现在我想在选定的.tf文件&上运行Terraform Apply。忽略了另一个。

我能这样做吗?如果有,怎么样?如果不是,为什么&什么是最佳做法?

4 个答案:

答案 0 :(得分:5)

您无法有选择地应用一个文件,然后选择另一个文件。两种方式(可能)实现你的目标:

  • 使用-target标志在一个文件中定位资源,然后使用另一个文件。
  • 将每个文件(或更广泛的资源组,可能是多个文件)放在单独的“模块”(文件夹)中。然后,您可以单独apply

答案 1 :(得分:2)

您可以使用constructor(private fb: FormBuilder) { } method() { this.testForm.addControl('new', this.fb.control('', Validators.required)); } 标志。要么 您可以在单独的目录中拥有多个Terraform模块。然后您可以terraform -target在那里。 例如,假设您分别有3个.tf文件。但是,您需要运行的不只是其中之一。如果您需要更频繁地运行它们,最好使用terraform模块。

terraform apply

在module.tf旁边,您可以定义需要应用的文件。

terraform
    |--frontend
    |  └──main.tf  
    |--backend-1
    |  └──main.tf
    |--backend-2
    |  └──main.tf
    |--modules-1
    |  └──module.tf

然后,问题 module "frontend" { source = "terraform/fronend" } module "backend-1" { source = "terraform/backend-1" } 位于模块目录中。它将自动在这些路径中导入实例并应用它。

答案 2 :(得分:1)

将每个terraform配置文件放到单独的目录中可以正确完成此工作。 这是我的结构

├── aws
│   └── aws_terraform.tf
├── trash
│   └── main.tf

所有您需要做的:

  1. 输入每个文件夹
  2. terraform init && terraform plan && terraform apply
  3. 输入“是”以确认地形是否适用

PS:“-target”键没有帮助我。

答案 3 :(得分:0)

使用以下命令通过--target选项指定要运行的模块

terraform apply -target=module.<module_name>

另一个解决方法是,将其他具有扩展名*.tf.disable的terraform文件重命名,以通过Terraform加载来跳过该文件。当前正在Code加载*.tf文件