我正在尝试根据环境(开发、阶段或产品)统一资源的命名。我将举例说明。
假设我想创建一个 aws iam 用户资源,例如:
resource "aws_iam_user" "iam_foo" {
name = "foo_dev"
}
在这里,我将“dev”硬编码到资源的名称中。但理想情况下,我希望根据它所在的文件夹动态完成此操作(文件夹类似于 dev 或 prod 等环境)。
文件夹结构类似于:
├── README.md
├── meow-development
│ ├── locals.tf -> ../locals.tf
│ ├── main.tf
│ └── s3.tf
├── meow-production
│ ├── locals.tf -> ../locals.tf
│ ├── main.tf
│ └── s3.tf
├── meow-staging
│ ├── locals.tf -> ../locals.tf
│ ├── main.tf
│ └── s3.tf
所以我想要实现的是:
resource "aws_iam_user" "iam_foo" {
name = naming_function(name) # Not intended as actual code
}
命名函数将名称作为输入并根据环境对其进行命名。所以如果这个资源是在dev下创建的,那么naming_function(woof)
应该返回字符串“woof_dev”
所以我的问题是:
- 如何动态命名事物?
- 使用包含诸如 meow_{env_name} 之类的环境的命名约定是否正确?