2017-10-27 5 views
0

CI 환경에 사용할 사용자를 생성하는 Terraform 모듈이 ECR에 게시됩니다.매번 aws_iam_access_key를 다시 만드는 Terraform

resource "aws_iam_user" "continuous-deployment" { 
    name = "continuous-deployment" 
    path = "/system/" 
} 

resource "aws_iam_access_key" "continuous-deployment" { 
    user = "${aws_iam_user.continuous-deployment.name}" 
    pgp_key = "${var.pgp_key}" 
} 

resource "aws_iam_user_policy" "continuous-deployment" { 
    name = "continuous-deployment" 
    user = "${aws_iam_user.continuous-deployment.name}" 

    policy = <<EOF 
{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Action": [ 
      "ecr:GetAuthorizationToken", 
      "ecr:BatchCheckLayerAvailability", 
      "ecr:GetDownloadUrlForLayer", 
      "ecr:GetRepositoryPolicy", 
      "ecr:DescribeRepositories", 
      "ecr:ListImages", 
      "ecr:DescribeImages", 
      "ecr:BatchGetImage", 
      "ecr:InitiateLayerUpload", 
      "ecr:UploadLayerPart", 
      "ecr:CompleteLayerUpload", 
      "ecr:PutImage", 
      "ecr:GetLoginToken" 
     ], 
     "Effect": "Allow", 
     "Resource": "*" 
    } 
    ] 
} 
EOF 
} 

output "aws_access_key_id" { 
    value = "${aws_iam_access_key.continuous-deployment.id}" 
} 

output "aws_secret_access_key" { 
    value = "${aws_iam_access_key.continuous-deployment.encrypted_secret}" 
} 

오전 데 문제는 각 terraform apply에 Terraform 삭제하고이 변경되지 않은 경우에도 이러한 리소스를 다시하고 싶어한다는 것입니다.

나는 이런 일이 일어나고 있으며 불행히도 비슷한 위치에있는 사람을 찾을 수 없다는 것을 알지 못합니다. 아이디어?

+1

'terraform plan'은 왜 자원을 삭제하고 다시 만들고 싶은지 보여줘야합니다. – Nickolay

+0

정책을 만든 후에는 AWS 웹 콘솔에 표시된 것과 똑같이 콘텐츠를 복사하여 스크립트에 붙여 넣으십시오. –

답변

0

이는 주로 일부 IAM 정책 또는 s3 정책 정의에서 발생합니다.

terraform plan/apply과 함께 실행하면 일부 리소스를 다시 만들어야한다는 내용이 내보내지고 정책 변경 내용이 한 줄에 표시되므로 변경 사항을 쉽게 식별 할 수 없습니다.

terraform 플랜 출력을 리디렉션하고 잘 정렬 된 출력을 얻으려면 terraform-landscape을 사용하십시오. 그런 다음 어떤 부분을 수정해야하는지 쉽게 식별해야합니다.

gem install terraform_landscape 

terraform plan ... | landscape