[英]Terraform: depends_on for module not working as expected in AWS
我是 terraform 的新手。 我之前使用 terraform v0.12,因为我想在模块之间引入依赖关系,所以我最近开始使用 terraform v0.13。 我正在尝试创建一个 IAM 角色并将一些策略附加到创建的角色。 但问题出现在对角色的政策依附中。 很少有策略附加到角色,但有些策略会抛出错误,指出不存在此类角色,而其他策略则正确附加到角色。 我的实现有什么问题吗?
模块.tf
provider "aws" {
region = "ap-southeast-1"
}
#Control Plane role and policies
module "ControlPlane_Role" {
source = "../../templates/IAM/roles"
role_name = var.EKS-master-role
}
module "ControlPlane_Policy1" {
source = "../../templates/IAM/aws_policy"
role_name = var.EKS-master-role
policy_arn = "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy"
depends_on = [module.ControlPlane_Role.role_create]
}
module "ControlPlane_Policy2" {
source = "../../templates/IAM/aws_policy"
role_name = var.EKS-master-role
policy_arn = "arn:aws:iam::aws:policy/AmazonEKSServicePolicy"
depends_on = [module.ControlPlane_Role.role_create]
}
模板/IAM/roles/role.tf
resource "aws_iam_role" "role_create" {
assume_role_policy = data.aws_iam_policy_document.trusted_entity.json
name = var.role_name
}
aws_policy.tf
resource "aws_iam_role_policy_attachment" "aws_policy" {
role = var.role_name
policy_arn = var.policy_arn
}
我将分别传递变量文件,这没有问题。
错误:
Error: Error attaching policy arn:aws:iam::aws:policy/AmazonEKSClusterPolicy to IAM Role EKS-master: NoSuchEntity: The role with name EKS-master cannot be found.
Error attaching policy arn:aws:iam::aws:policy/AmazonEKSServicePolicy to IAM Role EKS-master: NoSuchEntity: The role with name EKS-master cannot be found.
如果我在相同的资源上再次运行命令 terraform apply 而不做任何更改,则策略将被附加。
除了某些特殊情况外,您不应该使用depends_on
。 从templates/IAM/roles
,定义一个作为角色名称的输出,并在其他模块中传递此输出 ( role_name = module.ControlPlane_Role.output_role_name
)。 通过这种设置,依赖关系图很清晰(创建角色,创建依赖于角色的东西),而不必手动定义依赖关系depends_on
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.