upgrade_check.yml 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. ---
  2. # This snippet determines if a Docker upgrade is required by checking the inventory
  3. # variables, the available packages, and sets l_docker_upgrade to True if so.
  4. - set_fact:
  5. docker_upgrade: True
  6. when: docker_upgrade is not defined
  7. - name: Check if Docker is installed
  8. command: rpm -q docker
  9. register: pkg_check
  10. failed_when: pkg_check.rc > 1
  11. changed_when: no
  12. - name: Get current version of Docker
  13. command: "{{ repoquery_cmd }} --installed --qf '%{version}' docker"
  14. register: curr_docker_version
  15. changed_when: false
  16. - name: Get latest available version of Docker
  17. command: >
  18. {{ repoquery_cmd }} --qf '%{version}' "docker"
  19. register: avail_docker_version
  20. # Don't expect docker rpm to be available on hosts that don't already have it installed:
  21. when: pkg_check.rc == 0
  22. failed_when: false
  23. changed_when: false
  24. - fail:
  25. msg: This playbook requires access to Docker 1.10 or later
  26. # Disable the 1.10 requirement if the user set a specific Docker version
  27. 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.10','<')))
  28. # Default l_docker_upgrade to False, we'll set to True if an upgrade is required:
  29. - set_fact:
  30. l_docker_upgrade: False
  31. # Make sure a docker_version is set if none was requested:
  32. - set_fact:
  33. docker_version: "{{ avail_docker_version.stdout }}"
  34. when: pkg_check.rc == 0 and docker_version is not defined
  35. - name: Flag for Docker upgrade if necessary
  36. set_fact:
  37. l_docker_upgrade: True
  38. when: pkg_check.rc == 0 and curr_docker_version.stdout | version_compare(docker_version,'<')
  39. - name: Flag to delete all images prior to upgrade if crossing Docker 1.10 boundary
  40. set_fact:
  41. docker_upgrade_nuke_images: True
  42. when: l_docker_upgrade | bool and docker_upgrade_nuke_images is not defined and curr_docker_version.stdout | version_compare('1.10','<') and docker_version | version_compare('1.10','>=')