diff --git a/changelogs/fragments/33754-docker_image_fix_changed_in_force_mode.yaml b/changelogs/fragments/33754-docker_image_fix_changed_in_force_mode.yaml new file mode 100644 index 00000000000..8df8fd602f6 --- /dev/null +++ b/changelogs/fragments/33754-docker_image_fix_changed_in_force_mode.yaml @@ -0,0 +1,2 @@ +minor_changes: +- "docker_image - set ``changed`` to ``false`` when using ``force: yes`` to load or build an image that ends up being identical to one already present on the Docker host." diff --git a/lib/ansible/modules/cloud/docker/docker_image.py b/lib/ansible/modules/cloud/docker/docker_image.py index b6ef08c4c3d..b876c031ad0 100644 --- a/lib/ansible/modules/cloud/docker/docker_image.py +++ b/lib/ansible/modules/cloud/docker/docker_image.py @@ -348,9 +348,9 @@ class ImageManager(DockerBaseClass): self.results['actions'].append('Pulled image %s:%s' % (self.name, self.tag)) self.results['changed'] = True if not self.check_mode: - self.results['image'], already_latest = self.client.pull_image(self.name, tag=self.tag) - if already_latest: - self.results['changed'] = False + self.results['image'], dummy = self.client.pull_image(self.name, tag=self.tag) + if not self.check_mode and image and image['Id'] == self.results['image']['Id']: + self.results['changed'] = False if self.archive_path: self.archive_image(self.name, self.tag)