Как пропустить цикл for_each, если ключ не существует в terraform
Моя формулировка проблемы проста, но я не могу найти решение нигде в Интернете.
У меня есть список пользователей как:
// users
locals {
allUsers = {
dev_user_1 = {
Name = "user1"
Email = "user1@abc.com"
GitHub = "user1" # github username
Team = "Dev"
}
devops_user_2 = {
Name = "user2"
Email = "user2@abc.com"
GitHub = "user2" # github username
Team = "DevOps"
}
product_user_3 = {
Name = "user3"
Email = "user3@abc.com"
Team = "Product"
}
}
}
Эти
local
теги, которые используются для создания доступа к внутренним инструментам, таким как Github, инструменты мониторинга и т. д.
Теперь для 2 пользователей, принадлежащих
Dev
а также
DevOps
team, им нужен доступ к Github ORG, в то время как пользователю продукта нужен доступ только к некоторым панелям, но не к Github, поэтому тег отсутствует.
Как я могу перебрать ресурс terraform
github_membership
чтобы пропустить этого пользователя продукта (или просто любого, у кого нет тега GitHub?)
Я пытаюсь использовать следующий код, но не повезло
// Send GitHub invite
resource "github_membership" "xyzTeam" {
for_each = local.allUsers
username = each.value.GitHub
role = "member"
}
Ошибки:
╷
│ Error: Unsupported attribute
│
│ on users.tf line 12, in resource "github_membership" "xyzTeam":
│ 12: username = each.value.GitHub
│ ├────────────────
│ │ each.value is object with 3 attributes
│
│ This object does not have an attribute named "GitHub".
Что я сделал, чтобы решить эту проблему?
- Установить GitHub
key
для всех, но этоvalue
в качествеnull
. Ошибка:
╷
│ Error: "username": required field is not set
│
│ with github_membership.xyzTeam["user3"],
│ on users.tf line 10, in resource "github_membership" "xyzTeam":
│ 10: resource "github_membership" "devops" {
│
╵
- Если я оставил значение пустым, ошибки:
Error: PATCH https://api.github.com/user/memberships/orgs/XYZ: 422 You can only update an organization membership's state to 'active'. []
-
for k, v in local.allUsers : k => v if v != ""
Та же ошибка, потому что он пытается создать пользователя с пустым значением и в конечном итоге терпит неудачу.
Я не могу думать ни о чем другом. Если кто-то может помочь создать отдельный из этих существующих , который создает список
locals
что grep
GitHub
значения, этот хак был бы очень полезен.