модуль terraform - как поместить политику в переменную

У меня есть этот фрагмент кода, который я использую в качестве модуля.

Мне интересно, как я могу оформить политику

resource "aws_iam_role_policy" "role" {
  name   = var.name
  role   = var.role
  policy = file("${path.module}/mypolicy.json")
}

вот мой код, из которого я создаю свой TF:

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

Я хочу знать, как лучше всего ссылаться на «политику» в моем модуле и на код, который я запускаю, чтобы фактически создать политику на основе моего модуля. Я не хочу жестко кодировать фактический json в моем модуле. Как я могу сделать это более пригодным для повторного использования в дальнейшем для других политик?


person Randal    schedule 01.08.2020    source источник


Ответы (1)


Как насчет передачи пути к политике в качестве переменной вашему модулю?

В модуле:

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"
}
person Marcin    schedule 01.08.2020
comment
вот и все. Я действительно над этим подумал. модульность иногда бывает трудно собрать вместе. Я не смог найти там конкретного примера .. Найти хорошие модули для использования в качестве примеров в целом сложно для новичка ... еще раз спасибо. - person Randal; 01.08.2020
comment
@Randal Нет проблем. Рад, что смог помочь :-) - person Marcin; 01.08.2020