Dar*_*tle 3 amazon-s3 amazon-web-services terraform infrastructure-as-code
有没有办法从位于不同模块的不同 main.tf 文件中的另一个对象引用 id 值?
如果两个资源或对象位于同一个文件中,则只需执行此操作
resource "aws_s3_bucket" "log_bucket" {
bucket = "my-tf-log-bucket"
acl = "log-delivery-write"
}
resource "aws_s3_bucket" "b" {
bucket = "my-tf-test-bucket"
acl = "private"
logging {
target_bucket = aws_s3_bucket.log_bucket.id
target_prefix = "log/"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以将用于日志记录的target_bucket分配给bucket的idresource "aws_s3_bucket"
现在假设我有两个名为log_module和的文件夹s3_module及其各自的main.tf文件。
main.tflog_module 内部包含
resource "aws_s3_bucket" "log_bucket" {
bucket = "my-tf-log-bucket"
acl = "log-delivery-write"
}
Run Code Online (Sandbox Code Playgroud)
main.tfs3_module 内部包含
resource "aws_s3_bucket" "b" {
bucket = "my-tf-test-bucket"
acl = "private"
logging {
target_bucket = "target-bucket"
target_prefix = "log/"
}
}
Run Code Online (Sandbox Code Playgroud)
如何将存储桶的 id 分配给s3_moduleresource "aws_s3_bucket" "log_bucket"
中的 target_bucket ?main.tf
您可以使用 Terraform输出值来实现此功能。
在您的log_module目录中,您可以创建一个名为的新文件outputs.tf并定义一个新输出,如下所示:
output "bucket_id" {
value = aws_s3_bucket.log_bucket.id
}
Run Code Online (Sandbox Code Playgroud)
在您的 中s3_module,您需要创建一个变量文件(例如variables.tf),用于为target_bucket资源分配一个值aws_s3_bucket。
例如:
variable "target_bucket" {
description = "The name of the bucket that will receive the log objects"
type = string
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样修改目录main.tf中的文件:s3_module
resource "aws_s3_bucket" "b" {
bucket = "my-tf-test-bucket"
acl = "private"
logging {
target_bucket = var.target_bucket
target_prefix = "log/"
}
}
Run Code Online (Sandbox Code Playgroud)
其中 的值target_bucket源自var.target_bucket。
然后,您必须main.tf在存储库的根目录中创建一个文件,如下所示:
module "logging" {
source = "/path/to/log_module/directory"
// Any inputs to the module defined here
}
module "s3" {
source = "/path/to/s3_module/directory"
target_bucket = module.logging.bucket_id
}
Run Code Online (Sandbox Code Playgroud)
main.tf存储库根目录中的文件在 和 模块之间创建隐式依赖s3关系logging。该s3模块变得依赖于该logging模块,因为 的值target_bucket使用该模块的输出logging,即 S3 存储桶的 ID。
| 归档时间: |
|
| 查看次数: |
4401 次 |
| 最近记录: |