terraform .12 - добавить несколько встроенных политик - PullRequest
1 голос
/ 03 августа 2020

Мне интересно, есть ли простой способ добавить несколько политик json файлов

mypolicy1. json, mypolicy2. json, mypolicy3. json

как теперь это мой код .. отлично работает для одной политики

variable "iam_policy_path" {
  default = "./mypolicy.json"  
}

resource "aws_iam_role_policy" "role" {
  name   = var.name
  role   = var.role
  policy = file(var.iam_policy_path)
}

module "aws_iam_role_policy" {
   source = "../modules/mypolicypolicy/"
   name = "mypolicy"
   role = module.myrole.myroleout
   iam_policy_path = "new_policy_path.json"
}

1 Ответ

1 голос
/ 03 августа 2020

Одним из способов было бы использовать for_each и иметь iam_policy_path как список путей.

Например:

variable "iam_policy_path" {
  default = ["./mypolicy.json", "./mypolicy2.json"]  
}

resource "aws_iam_role_policy" "role" {
  
  for_each = toset(var.iam_policy_path) # for each requires set. 
 
  name   = var.name
  role   = var.role

  policy = file(each.key)
}

Затем при использовании модуль:

module "aws_iam_role_policy" {
   source = "../modules/mypolicypolicy/"
   name = "mypolicy"
   role = module.myrole.myroleout
   iam_policy_path = ["new_policy_path.json", "new_policy_path2.json"]
}

На основании доп. информации. Для полного решения может также потребоваться использование aws_iam_role_policy_attachment , которое присоединяет управляемую политику к роли.

...