upgrade.yml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. ---
  2. - name: Verify upgrade can proceed
  3. hosts: masters
  4. tasks:
  5. # Checking the global deployment type rather than host facts, this is about
  6. # what the user is requesting.
  7. - fail: msg="Deployment type enterprise not supported for upgrade"
  8. when: deployment_type == "enterprise"
  9. - name: Backup etcd
  10. hosts: masters
  11. vars:
  12. embedded_etcd: "{{ openshift.master.embedded_etcd }}"
  13. roles:
  14. - openshift_facts
  15. tasks:
  16. - name: display all variables set for the current host
  17. debug:
  18. var: hostvars[inventory_hostname]
  19. - debug: var=embedded_etcd
  20. - name: Check available data dir disk space
  21. shell: >
  22. df --output=avail -k {{ openshift.common.data_dir }} | tail -n 1
  23. register: avail_disk
  24. when: embedded_etcd | bool
  25. - debug: var=avail_disk.stdout
  26. - name: Check current etcd disk usage
  27. shell: >
  28. du -k {{ openshift.common.data_dir }}/openshift.local.etcd | tail -n 1 | cut -f1
  29. register: etc_disk_usage
  30. when: embedded_etcd | bool
  31. - debug: var=etc_disk_usage.stdout
  32. - name: Abort if insufficient disk space for etcd backup
  33. fail: msg="{{ etc_disk_usage.stdout }} Kb disk space required for etcd backup, {{ avail_disk.stdout }} Kb available."
  34. when: (embedded_etcd | bool) and (etc_disk_usage.stdout|int > avail_disk.stdout|int)
  35. - fail: msg="All done for now."
  36. - name: Re-Run cluster configuration to apply latest configuration changes
  37. include: ../../common/openshift-cluster/config.yml
  38. vars:
  39. g_etcd_group: "{{ 'etcd' }}"
  40. g_masters_group: "{{ 'masters' }}"
  41. g_nodes_group: "{{ 'nodes' }}"
  42. openshift_cluster_id: "{{ cluster_id | default('default') }}"
  43. openshift_deployment_type: "{{ deployment_type }}"
  44. - name: Upgrade masters
  45. hosts: masters
  46. vars:
  47. openshift_version: "{{ openshift_pkg_version | default('') }}"
  48. tasks:
  49. - name: Upgrade master packages
  50. yum: pkg={{ openshift.common.service_type }}-master{{ openshift_version }} state=latest
  51. - name: Restart master services
  52. service: name="{{ openshift.common.service_type}}-master" state=restarted
  53. - name: Upgrade nodes
  54. hosts: nodes
  55. vars:
  56. openshift_version: "{{ openshift_pkg_version | default('') }}"
  57. tasks:
  58. - name: Upgrade node packages
  59. yum: pkg={{ openshift.common.service_type }}-node{{ openshift_version }} state=latest
  60. - name: Restart node services
  61. service: name="{{ openshift.common.service_type }}-node" state=restarted
  62. - name: Determine new master version
  63. hosts: oo_first_master
  64. tasks:
  65. - name: Determine new version
  66. command: >
  67. rpm -q --queryformat '%{version}' {{ openshift.common.service_type }}-master
  68. register: _new_version
  69. - name: Ensure AOS 3.0.2 or Origin 1.0.6
  70. hosts: oo_first_master
  71. tasks:
  72. fail: This playbook requires Origin 1.0.6 or Atomic OpenShift 3.0.2 or later
  73. when: _new_version.stdout | version_compare('1.0.6','<') or ( _new_version.stdout | version_compare('3.0','>=' and _new_version.stdout | version_compare('3.0.2','<') )
  74. - name: Update cluster policy
  75. hosts: oo_first_master
  76. tasks:
  77. - name: oadm policy reconcile-cluster-roles --confirm
  78. command: >
  79. {{ openshift.common.admin_binary}} --config={{ openshift.common.config_base }}/master/admin.kubeconfig
  80. policy reconcile-cluster-roles --confirm
  81. - name: Update cluster policy bindings
  82. hosts: oo_first_master
  83. tasks:
  84. - name: oadm policy reconcile-cluster-role-bindings --confirm
  85. command: >
  86. {{ openshift.common.admin_binary}} --config={{ openshift.common.config_base }}/master/admin.kubeconfig
  87. policy reconcile-cluster-role-bindings
  88. --exclude-groups=system:authenticated
  89. --exclude-groups=system:unauthenticated
  90. --exclude-users=system:anonymous
  91. --additive-only=true --confirm
  92. when: ( _new_version.stdout | version_compare('1.0.6', '>') and _new_version.stdout | version_compare('3.0','<') ) or _new_version.stdout | version_compare('3.0.2','>')
  93. - name: Upgrade default router
  94. hosts: oo_first_master
  95. vars:
  96. - router_image: "{{ openshift.master.registry_url | replace( '${component}', 'haproxy-router' ) | replace ( '${version}', 'v' + _new_version.stdout ) }}"
  97. - oc_cmd: "{{ openshift.common.client_binary }} --config={{ openshift.common.config_base }}/master/admin.kubeconfig"
  98. tasks:
  99. - name: Check for default router
  100. command: >
  101. {{ oc_cmd }} get -n default dc/router
  102. register: _default_router
  103. failed_when: false
  104. changed_when: false
  105. - name: Check for allowHostNetwork and allowHostPorts
  106. when: _default_router.rc == 0
  107. shell: >
  108. {{ oc_cmd }} get -o yaml scc/privileged | /usr/bin/grep -e allowHostPorts -e allowHostNetwork
  109. register: _scc
  110. - name: Grant allowHostNetwork and allowHostPorts
  111. when:
  112. - _default_router.rc == 0
  113. - "'false' in _scc.stdout"
  114. command: >
  115. {{ oc_cmd }} patch scc/privileged -p '{"allowHostPorts":true,"allowHostNetwork":true}' --loglevel=9
  116. - name: Update deployment config to 1.0.4/3.0.1 spec
  117. when: _default_router.rc == 0
  118. command: >
  119. {{ oc_cmd }} patch dc/router -p
  120. '{"spec":{"strategy":{"rollingParams":{"updatePercent":-10},"spec":{"serviceAccount":"router","serviceAccountName":"router"}}}}'
  121. - name: Switch to hostNetwork=true
  122. when: _default_router.rc == 0
  123. command: >
  124. {{ oc_cmd }} patch dc/router -p '{"spec":{"template":{"spec":{"hostNetwork":true}}}}'
  125. - name: Update router image to current version
  126. when: _default_router.rc == 0
  127. command: >
  128. {{ oc_cmd }} patch dc/router -p
  129. '{"spec":{"template":{"spec":{"containers":[{"name":"router","image":"{{ router_image }}"}]}}}}'
  130. - name: Upgrade default
  131. hosts: oo_first_master
  132. vars:
  133. - registry_image: "{{ openshift.master.registry_url | replace( '${component}', 'docker-registry' ) | replace ( '${version}', 'v' + _new_version.stdout ) }}"
  134. - oc_cmd: "{{ openshift.common.client_binary }} --config={{ openshift.common.config_base }}/master/admin.kubeconfig"
  135. tasks:
  136. - name: Check for default registry
  137. command: >
  138. {{ oc_cmd }} get -n default dc/docker-registry
  139. register: _default_registry
  140. failed_when: false
  141. changed_when: false
  142. - name: Update registry image to current version
  143. when: _default_registry.rc == 0
  144. command: >
  145. {{ oc_cmd }} patch dc/docker-registry -p
  146. '{"spec":{"template":{"spec":{"containers":[{"name":"registry","image":"{{ registry_image }}"}]}}}}'
  147. - name: Update image streams and templates
  148. hosts: oo_first_master
  149. vars:
  150. openshift_examples_import_command: "update"
  151. openshift_deployment_type: "{{ deployment_type }}"
  152. roles:
  153. - openshift_examples