d6fd0d2aca
* Download to delegate and sync files when download_run_once * Fail on error after saving container image * Do not set changed status when downloaded container was up to date * Only sync containers when they are actually required Previously, non-required images (pull_required=false as image existed on target host) were synced to the target hosts. This failed as the image was not downloaded to the download_delegate and hence was not available for syncing. * Sync containers when only missing on some hosts * Consider images with multiple repo tags * Enable kubeadm images pull/syncing with download_delegate * Use kubeadm images list to pull/sync 'kubeadm config images pull' is replaced by collecting the images list with 'kubeadm config images list' and using the commonly used method of pull/syncing the images. * Ensure containers are downloaded and synced for all hosts * Fix download/syncing when download_delegate is a kubernetes host
40 lines
1.4 KiB
YAML
40 lines
1.4 KiB
YAML
---
|
|
- name: container_download | Make download decision if pull is required by tag or sha256
|
|
include_tasks: set_docker_image_facts.yml
|
|
when:
|
|
- download.enabled
|
|
- download.container
|
|
tags:
|
|
- facts
|
|
|
|
# FIXME(mattymo): In Ansible 2.4 omitting download delegate is broken. Move back
|
|
# to one task in the future.
|
|
- name: container_download | Download containers if pull is required or told to always pull (delegate)
|
|
command: "{{ docker_bin_dir }}/docker pull {{ pull_args }}"
|
|
register: pull_task_result
|
|
until: pull_task_result is succeeded
|
|
retries: 4
|
|
delay: "{{ retry_stagger | random + 3 }}"
|
|
changed_when: not 'up to date' in pull_task_result.stdout
|
|
when:
|
|
- download_run_once
|
|
- download.enabled
|
|
- download.container
|
|
- any_pull_required | default(download_always_pull)
|
|
delegate_to: "{{ download_delegate }}"
|
|
delegate_facts: yes
|
|
run_once: yes
|
|
|
|
- name: container_download | Download containers if pull is required or told to always pull (all nodes)
|
|
command: "{{ docker_bin_dir }}/docker pull {{ pull_args }}"
|
|
register: pull_task_result
|
|
until: pull_task_result is succeeded
|
|
retries: 4
|
|
delay: "{{ retry_stagger | random + 3 }}"
|
|
changed_when: not 'up to date' in pull_task_result.stdout
|
|
when:
|
|
- not download_run_once
|
|
- download.enabled
|
|
- download.container
|
|
- pull_required|default(download_always_pull)
|
|
- group_names | intersect(download.groups) | length
|