2017-10-27 2 views
0

Ich habe ein Terraform-Modul, das einen Benutzer für meine CI-Umgebung erstellt, um in ECR zu veröffentlichen.Terraform, das aws_iam_access_key jedes Mal neu erstellt

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}" 
} 

Das Problem, das ich habe ist, dass auf jeden terraform apply, Terraforming will diese Ressourcen selbst löschen und neu erstellen, wenn sie sich nicht geändert haben.

Ich habe keine Ahnung, warum das passiert und kann leider niemanden in einer ähnlichen Position finden. Ideen?

+1

'terraform plan' sollte zeigen, warum es Ressourcen löschen und neu erstellen möchte. – Nickolay

+0

Nachdem Ihre Richtlinie erstellt wurde, kopieren Sie den Inhalt genau so, wie er in der AWS-Webkonsole angezeigt wird, und fügen Sie Ihr Skript ein –

Antwort

0

Dies geschieht meist in einigen IAM-Richtlinien oder s3 Richtlinien Definition.

Wenn es mit terraform plan/apply ausgeführt wird, exportiert es, dass einige Ressourcen neu erstellt werden müssen, und listet die Richtlinienänderungen in einer Zeile auf, sodass Sie die Änderungen nicht einfach identifizieren können.

Verwenden Sie bitte terraform-landscape, um die Terraform-Planausgabe dorthin umzuleiten und eine gut sortierte Ausgabe zu erhalten. Dann sollten Sie leicht erkennen, welcher Teil repariert werden muss.

gem install terraform_landscape 

terraform plan ... | landscape 
Verwandte Themen