为什么terraform local-exec要花很长时间才能完成


resource "null_resource" "example" {
provisioner "local-exec" {
command = <<EOT
docker build -t imagename -f devops/Dockerfile .
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin xxxxx.dkr.ecr.us-east-2.amazonaws.com
docker tag imagename:latest xxxxx.dkr.ecr.us-east-2.amazonaws.com/imagename:latest
docker push xxxxx.dkr.ecr.us-east-2.amazonaws.com/imagename:latest
EOT
working_dir = "${path.module}/.."
}
depends_on = [
aws_ecr_repository.example
]
}
resource "aws_instance" "example" {
# ... instance configuration ...

depends_on = [
null_resource.example
]
}

这是我的地形的一小部分。所以基本上我需要运行docker build然后docker push到ecr。
aws_instance将在null_resource完成后创建。

已运行17分钟

null_resource.example: Still creating... [30s elapsed]
null_resource.example: Still creating... [40s elapsed]
null_resource.example: Still creating... [50s elapsed]
null_resource.example: Still creating... [1m50s elapsed]
null_resource.example: Still creating... [2m50s elapsed]
null_resource.example: Still creating... [3m0s elapsed]
null_resource.example: Still creating... [4m0s elapsed]
null_resource.example: Still creating... [5m0s elapsed]
null_resource.example: Still creating... [6m0s elapsed]
null_resource.example: Still creating... [16m51s elapsed]
null_resource.example: Still creating... [17m1s elapsed]
null_resource.example: Still creating... [17m11s elapsed]

我在我的命令行中运行命令,在windows10。效果很好。图像的大小是2.85GB,只花了3分钟就建立了图像。
我的null_resource也依赖于ecr,所以当ecr完成创建repo时,它可能会推送docker

如果我删除null_resource,它运行完美,它创建ec2和ecr。

删除关闭EOT作品前的空白。检查更新后的资源块,如下所示:

resource "null_resource" "example" {
provisioner "local-exec" {
command = <<EOT
docker build -t imagename -f devops/Dockerfile .
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin xxxxx.dkr.ecr.us-east-2.amazonaws.com
docker tag imagename:latest xxxxx.dkr.ecr.us-east-2.amazonaws.com/imagename:latest
docker push xxxxx.dkr.ecr.us-east-2.amazonaws.com/imagename:latest
EOT
working_dir = "${path.module}/.."
}
depends_on = [
aws_ecr_repository.example
]
}

最新更新