是否可以使用terragrunt调用多个terraform模块
我正在尝试从terragrunt调用多个模块。我知道目前terragrunt不支持多个源,我们一次只能调用一个模块。因此,我创建了一个main.tf文件来前端多个模块是否可以使用terragrunt调用多个terraform模块,terraform,terraform-provider-aws,terragrunt,Terraform,Terraform Provider Aws,Terragrunt,我正在尝试从terragrunt调用多个模块。我知道目前terragrunt不支持多个源,我们一次只能调用一个模块。因此,我创建了一个main.tf文件来前端多个模块 # main.tf module "foo" { source = "../modules/vpc" } module "bar" { source = "../modules/s3" } 在terragrunt内部,调用main
# main.tf
module "foo" {
source = "../modules/vpc"
}
module "bar" {
source = "../modules/s3"
}
在terragrunt内部,调用main.tf作为源,认为这将调用模块foo和模块bar
# terragrunt.hcl
terraform {
source = "./main.tf
}
inputs {
}
使用terragrunt可以吗?我需要一次将多个terraform模块分组。简言之,是的,您发布的两个文件片段可以工作 terragrunt不支持多个源,我们一次只能调用一个模块 更详细的回答:将
terragrunt.hcl
中的terraform{…}
块看作指向“根terraform模块”的指针是很有用的。这个根模块只是任何其他terraform模块,但它是特殊的,因为它位于所有terraform配置的根或顶部
所以terragrunt只支持一个根模块,但该根模块可以根据需要使用任意多的附加模块
terragrunt给我们的能力是重用这些根模块。在香草terraform中,您不能重复使用此根模块
在您的示例中,terragrunt文件指向同一文件中的根模块(/main.tf
)。这很好,但是因为我们使用terragrunt保持干燥,所以我们通常会将这个根模块放在不同的目录中,甚至可能放在git repo中,并在terragrunt.hcl文件中适当地引用它
下面是一个快速示意图:
+-------------------------------+
| /my/root-module |
| |
| main.tf |
| |
+--------------+----------------+
+------------------+ | +----------------+
| /my/modules/vpc | | | /my/modules/s3 |
| | | | |
| module "foo" <----+----> module "bar" |
| | | |
| | | |
+------------------+ +----------------+
+-------------------------------+
|/my/root模块|
| |
|main.tf|
| |
+--------------+----------------+
+------------------+ | +----------------+
|/my/modules/vpc | | | |/my/modules/s3|
| | | | |
|模块“foo”模块“bar”|
| | | |
| | | |
+------------------+ +----------------+
未显示的是terragrunt.hcl文件,该文件将指向
/my/root module
,它可以位于磁盘或git中的其他位置。简而言之,是的,您发布的两个文件片段可以工作
terragrunt不支持多个源,我们一次只能调用一个模块
更详细的回答:将terragrunt.hcl
中的terraform{…}
块看作指向“根terraform模块”的指针是很有用的。这个根模块只是任何其他terraform模块,但它是特殊的,因为它位于所有terraform配置的根或顶部
所以terragrunt只支持一个根模块,但该根模块可以根据需要使用任意多的附加模块
terragrunt给我们的能力是重用这些根模块。在香草terraform中,您不能重复使用此根模块
在您的示例中,terragrunt文件指向同一文件中的根模块(/main.tf
)。这很好,但是因为我们使用terragrunt保持干燥,所以我们通常会将这个根模块放在不同的目录中,甚至可能放在git repo中,并在terragrunt.hcl文件中适当地引用它
下面是一个快速示意图:
+-------------------------------+
| /my/root-module |
| |
| main.tf |
| |
+--------------+----------------+
+------------------+ | +----------------+
| /my/modules/vpc | | | /my/modules/s3 |
| | | | |
| module "foo" <----+----> module "bar" |
| | | |
| | | |
+------------------+ +----------------+
+-------------------------------+
|/my/root模块|
| |
|main.tf|
| |
+--------------+----------------+
+------------------+ | +----------------+
|/my/modules/vpc | | | |/my/modules/s3|
| | | | |
|模块“foo”模块“bar”|
| | | |
| | | |
+------------------+ +----------------+
未显示的是terragrunt.hcl文件,该文件将指向
/my/root module
,它可以位于磁盘或git中的其他位置。我具有以下结构
project
│
└───live
│ │
│ └───dev
│ │ terragrunt.hcl
│ │
│ └───aws-ec2
| | terragrunt.hcl
| └───aws-rds
| terragrunt.hcl
│
└───modules
│
└───ec2
│ files.tf
└───rds
files.tf
在dev中,我正在运行terragrunt plan all
(这是不推荐使用的,但如果您不介意由依赖项引起的错误,则可以使用)。最新的cli选项是terragrunt run all(command)
,但我认为除了terragrunt文件之外,您还需要一个terraform文件
更多信息可在此处找到:
- 我有以下结构
project
│
└───live
│ │
│ └───dev
│ │ terragrunt.hcl
│ │
│ └───aws-ec2
| | terragrunt.hcl
| └───aws-rds
| terragrunt.hcl
│
└───modules
│
└───ec2
│ files.tf
└───rds
files.tf
在dev中,我正在运行terragrunt plan all
(这是不推荐使用的,但如果您不介意由依赖项引起的错误,则可以使用)。最新的cli选项是terragrunt run all(command)
,但我认为除了terragrunt文件之外,您还需要一个terraform文件
更多信息可在此处找到: