diff options
Diffstat (limited to 'roles')
| -rw-r--r-- | roles/container_runtime/tasks/docker_upgrade_check.yml | 67 | ||||
| -rw-r--r-- | roles/openshift_node/tasks/docker/upgrade.yml | 15 | 
2 files changed, 67 insertions, 15 deletions
| diff --git a/roles/container_runtime/tasks/docker_upgrade_check.yml b/roles/container_runtime/tasks/docker_upgrade_check.yml new file mode 100644 index 000000000..f29619f42 --- /dev/null +++ b/roles/container_runtime/tasks/docker_upgrade_check.yml @@ -0,0 +1,67 @@ +--- + +# This snippet determines if a Docker upgrade is required by checking the inventory +# variables, the available packages, and sets l_docker_upgrade to True if so. + +- set_fact: +    docker_upgrade: True +  when: docker_upgrade is not defined + +- name: Check if Docker is installed +  command: rpm -q docker +  args: +    warn: no +  register: pkg_check +  failed_when: pkg_check.rc > 1 +  changed_when: no + +- name: Get current version of Docker +  command: "{{ repoquery_installed }} --qf '%{version}' docker" +  register: curr_docker_version +  retries: 4 +  until: curr_docker_version | succeeded +  changed_when: false + +- name: Get latest available version of Docker +  command: > +    {{ repoquery_cmd }} --qf '%{version}' "docker" +  register: avail_docker_version +  retries: 4 +  until: avail_docker_version | succeeded +  # Don't expect docker rpm to be available on hosts that don't already have it installed: +  when: pkg_check.rc == 0 +  failed_when: false +  changed_when: false + +- fail: +    msg: This playbook requires access to Docker 1.12 or later +  # Disable the 1.12 requirement if the user set a specific Docker version +  when: docker_version is not defined and (docker_upgrade is not defined or docker_upgrade | bool == True) and (pkg_check.rc == 0 and (avail_docker_version.stdout == "" or avail_docker_version.stdout | version_compare('1.12','<'))) + +# Default l_docker_upgrade to False, we'll set to True if an upgrade is required: +- set_fact: +    l_docker_upgrade: False + +# Make sure a docker_version is set if none was requested: +- set_fact: +    docker_version: "{{ avail_docker_version.stdout }}" +  when: pkg_check.rc == 0 and docker_version is not defined + +- name: Flag for Docker upgrade if necessary +  set_fact: +    l_docker_upgrade: True +  when: pkg_check.rc == 0 and curr_docker_version.stdout | version_compare(docker_version,'<') + +# Additional checks for Atomic hosts: +- name: Determine available Docker +  shell: "rpm -q --queryformat '---\ncurr_version: %{VERSION}\navail_version: \n' docker" +  register: g_atomic_docker_version_result +  when: openshift.common.is_atomic | bool + +- set_fact: +    l_docker_version: "{{ g_atomic_docker_version_result.stdout | from_yaml }}" +  when: openshift.common.is_atomic | bool + +- fail: +    msg: This playbook requires access to Docker 1.12 or later +  when: openshift.common.is_atomic | bool and l_docker_version.avail_version | default(l_docker_version.curr_version, true) | version_compare('1.12','<') diff --git a/roles/openshift_node/tasks/docker/upgrade.yml b/roles/openshift_node/tasks/docker/upgrade.yml index c13a6cf6c..bbe9c71f5 100644 --- a/roles/openshift_node/tasks/docker/upgrade.yml +++ b/roles/openshift_node/tasks/docker/upgrade.yml @@ -2,7 +2,6 @@  # input variables:  # - openshift_service_type  # - openshift.common.is_containerized -# - docker_upgrade_nuke_images  # - docker_version  # - skip_docker_restart @@ -12,20 +11,6 @@  - debug: var=docker_image_count.stdout -# TODO(jchaloup): put all docker_upgrade_nuke_images into a block with only one condition -- name: Remove all containers and images -  script: nuke_images.sh -  register: nuke_images_result -  when: docker_upgrade_nuke_images is defined and docker_upgrade_nuke_images | bool - -- name: Check Docker image count -  shell: "docker images -aq | wc -l" -  register: docker_image_count -  when: docker_upgrade_nuke_images is defined and docker_upgrade_nuke_images | bool - -- debug: var=docker_image_count.stdout -  when: docker_upgrade_nuke_images is defined and docker_upgrade_nuke_images | bool -  - service:      name: docker      state: stopped | 
