a43e0d3f95
* Switch to Kubernetes v1.16.0 Change-Id: I5d6a9528b2d443750fc5e031aff15ad3ffead158 * Fix download localhost cached file path Change-Id: I65e79b70e3d1b37265ebc60f41b460cf4b0a0d47 * fix kubeadm etcd for v1.16 Change-Id: I6888a00fd48b530a38b0b31c4095492476af42d2 * disable tf packet jobs Change-Id: I075c4666547fdea4c50ec04864f38e2cfaa79154 * Disable contiv packet jobs. Fix kube-router Change-Id: I3170e8789e60711d4cee8faf65f2094480b79b8d * bump sonobuoy version Change-Id: Ib946905629c7c53ed88f08fb2f41c454457a0097
122 lines
3.9 KiB
YAML
122 lines
3.9 KiB
YAML
---
|
|
- block:
|
|
- name: download_file | Starting download of file
|
|
debug:
|
|
msg: "{{ download.url }}"
|
|
run_once: "{{ download_run_once }}"
|
|
|
|
- name: download_file | Set pathname of cached file
|
|
set_fact:
|
|
file_path_cached: "{{ download_cache_dir }}/{{ download.dest | basename }}"
|
|
tags:
|
|
- facts
|
|
|
|
- name: download_file | Create dest directory on node
|
|
file:
|
|
path: "{{ download.dest | dirname }}"
|
|
owner: "{{ download.owner | default(omit) }}"
|
|
mode: 0755
|
|
state: directory
|
|
recurse: yes
|
|
|
|
- name: download_file | Create local cache directory
|
|
file:
|
|
path: "{{ file_path_cached | dirname }}"
|
|
state: directory
|
|
recurse: yes
|
|
delegate_to: localhost
|
|
delegate_facts: false
|
|
run_once: true
|
|
become: false
|
|
tags:
|
|
- localhost
|
|
|
|
- name: download_file | Check if file is available in cache
|
|
stat:
|
|
path: "{{ file_path_cached }}"
|
|
register: cache_file
|
|
run_once: true
|
|
changed_when: false
|
|
delegate_to: localhost
|
|
delegate_facts: no
|
|
become: false
|
|
when:
|
|
- download_force_cache
|
|
tags:
|
|
- facts
|
|
|
|
- name: download_file | Set file_is_cached fact based on previous task
|
|
set_fact:
|
|
file_is_cached: "{{ cache_file.stat.exists | default(false) }}"
|
|
when:
|
|
- download_force_cache
|
|
tags:
|
|
- facts
|
|
|
|
- name: download_file | Copy file from cache to nodes, if it is available
|
|
synchronize:
|
|
src: "{{ file_path_cached }}"
|
|
dest: "{{ download.dest }}"
|
|
use_ssh_args: "{{ has_bastion | default(false) }}"
|
|
mode: push
|
|
run_once: "{{ download_run_once }}"
|
|
register: get_task
|
|
until: get_task is succeeded
|
|
delay: "{{ retry_stagger | random + 3 }}"
|
|
retries: 4
|
|
when:
|
|
- download_force_cache
|
|
- file_is_cached
|
|
- ansible_os_family not in ["CoreOS", "Container Linux by CoreOS"]
|
|
|
|
- name: download_file | Set mode and owner
|
|
file:
|
|
path: "{{ download.dest }}"
|
|
mode: "{{ download.mode | default(omit) }}"
|
|
owner: "{{ download.owner | default(omit) }}"
|
|
run_once: "{{ download_run_once }}"
|
|
when:
|
|
- download_force_cache
|
|
- file_is_cached
|
|
- ansible_os_family not in ["CoreOS", "Container Linux by CoreOS"]
|
|
|
|
# This must always be called, to check if the checksum matches. On no-match the file is re-downloaded.
|
|
- name: download_file | Download item
|
|
get_url:
|
|
url: "{{ download.url }}"
|
|
dest: "{{ file_path_cached if download_localhost else download.dest }}"
|
|
owner: "{{ omit if download_localhost else (download.owner | default(omit)) }}"
|
|
mode: "{{ omit if download_localhost else (download.mode | default(omit)) }}"
|
|
checksum: "{{ 'sha256:' + download.sha256 if download.sha256 or omit }}"
|
|
validate_certs: "{{ download_validate_certs }}"
|
|
url_username: "{{ download.username | default(omit) }}"
|
|
url_password: "{{ download.password | default(omit) }}"
|
|
force_basic_auth: "{{ download.force_basic_auth | default(omit) }}"
|
|
delegate_to: "{{ download_delegate if download_run_once else inventory_hostname }}"
|
|
run_once: "{{ download_run_once }}"
|
|
register: get_url_result
|
|
become: "{{ not download_localhost }}"
|
|
until: "'OK' in get_url_result.msg or 'file already exists' in get_url_result.msg"
|
|
retries: 4
|
|
delay: "{{ retry_stagger | default(5) }}"
|
|
|
|
- name: "download_file | Extract file archives"
|
|
include_tasks: "extract_file.yml"
|
|
when:
|
|
- not download_localhost
|
|
|
|
- name: download_file | Copy file back to ansible host file cache
|
|
synchronize:
|
|
src: "{{ download.dest }}"
|
|
dest: "{{ file_path_cached }}"
|
|
use_ssh_args: "{{ has_bastion | default(false) }}"
|
|
mode: pull
|
|
when:
|
|
- download_force_cache
|
|
- not file_is_cached or get_url_result.changed
|
|
- download_delegate == inventory_hostname
|
|
- not (download_run_once and download_delegate == 'localhost')
|
|
- ansible_os_family not in ["CoreOS", "Container Linux by CoreOS"]
|
|
|
|
tags:
|
|
- download
|