Я пытаюсь унифицировать именование ресурсов в зависимости от среды (dev, stage или prod). Я проиллюстрирую это на примере.
Допустим, я хочу создать пользовательский ресурс 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
}
Функция именования принимает имя в качестве входных данных и называет его в соответствии с env. Поэтому, если этот ресурс создается в dev, то naming_function(woof)
должен вернуть строку woof_dev
Итак, мои вопросы:
- Как я могу динамически называть вещи?
- Правильно ли используется соглашение об именах, включающее такую среду, как meow_ {env_name}?