我想使用Ansible删除AWS ECS存储库。 我的Ansible版本是2.4.1.0,它应该"#34;支持这一点,因为您可以在此处查找:http://docs.ansible.com/ansible/latest/ecs_ecr_module
但是它没有按预期工作,因为我的存储库仍然包含docker镜像。
以下是代码段:
- name: destroy-ecr-repos
ecs_ecr: name=jenkins-app state=absent
生成的错误消息为:
...
The error was: RepositoryNotEmptyException: An error occurred (RepositoryNotEmptyException) when calling the DeleteRepository operation: The repository with name 'jenkins-app' in registry with id 'xyz' cannot be deleted because it still contains images
...
在AWS控制台中,它可以正常运行。只有一个警告文本提醒您存储库中仍有图像。但是你仍然可以强制删除。
现在我的问题:
是否有可能强制删除存储库,包括其图像?
......或者......
在删除存储库之前,我可以单独使用其他工具删除它们吗?
也许没有来自ansible方面的实现,我必须使用' shell'而不是模块(也许可以打开一个功能请求)。
我非常感谢任何建议。
答案 0 :(得分:2)
好的,现在我发现,目前没有任何ansible功能支持在删除ecs上的存储库时隐式删除图像。
BUT
尽管我的丑陋对我有用,但我已经实施了一个解决方法。
我只是在实际删除ecs repo之前使用aws cli删除每个shell模块的图像。
以下是要执行此操作的代码段:
- name: Delete remaining images in our repositories
shell: |
aws ecr list-images --repository-name jenkins-app --query 'imageIds[*]' --output text | while read imageId; do aws ecr batch-delete-image --repository-name jenkins-app --image-ids imageDigest=$imageId; done
- name: destroy-ecr-repo jenkins-app
ecs_ecr: name=jenkins-app state=absent
希望在ansible之前帮助遇到此问题的人实现通过内置模块删除图像的可能性。