upgrade.yml 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. ---
  2. ###############################################################################
  3. # The restart playbook should be run after this playbook completes.
  4. ###############################################################################
  5. - name: Upgrade docker
  6. hosts: oo_masters_to_config:oo_nodes_to_config
  7. roles:
  8. - openshift_facts
  9. tasks:
  10. - include: docker_upgrade.yml
  11. when: not openshift.common.is_atomic | bool
  12. - name: Set post docker install facts
  13. openshift_facts:
  14. role: "{{ item.role }}"
  15. local_facts: "{{ item.local_facts }}"
  16. with_items:
  17. - role: docker
  18. local_facts:
  19. openshift_image_tag: "v{{ g_new_version }}"
  20. openshift_version: "{{ g_new_version }}"
  21. - name: Upgrade docker
  22. hosts: oo_etcd_to_config
  23. roles:
  24. - openshift_facts
  25. tasks:
  26. # Upgrade docker when host is not atomic and host is not a non-containerized etcd node
  27. - include: docker_upgrade.yml
  28. when: not openshift.common.is_atomic | bool and not ('oo_etcd_to_config' in group_names and not openshift.common.is_containerized)
  29. # The cli image is used by openshift_docker_facts to determine the currently installed
  30. # version. We need to explicitly pull the latest image to handle cases where
  31. # the locally cached 'latest' tag is older the g_new_version.
  32. - name: Download cli image
  33. hosts: oo_masters_to_config:oo_nodes_to_config
  34. roles:
  35. - { role: openshift_docker_facts }
  36. vars:
  37. openshift_docker_hosted_registry_network: "{{ hostvars[groups.oo_first_master.0].openshift.common.portal_net }}"
  38. tasks:
  39. - name: Pull Images
  40. command: >
  41. docker pull {{ item }}:latest
  42. with_items:
  43. - "{{ openshift.common.cli_image }}"
  44. when: openshift.common.is_containerized | bool
  45. ###############################################################################
  46. # Upgrade Masters
  47. ###############################################################################
  48. - name: Upgrade master
  49. hosts: oo_masters_to_config
  50. handlers:
  51. - include: ../../../../../roles/openshift_master/handlers/main.yml
  52. roles:
  53. - openshift_facts
  54. tasks:
  55. - include: rpm_upgrade.yml component=master
  56. when: not openshift.common.is_containerized | bool
  57. - include_vars: ../../../../../roles/openshift_master/vars/main.yml
  58. - name: Update systemd units
  59. include: ../../../../../roles/openshift_master/tasks/systemd_units.yml openshift_version=v{{ g_new_version }}
  60. # - name: Upgrade master configuration
  61. # openshift_upgrade_config:
  62. # from_version: '3.1'
  63. # to_version: '3.2'
  64. # role: master
  65. # config_base: "{{ hostvars[inventory_hostname].openshift.common.config_base }}"
  66. - name: Set master update status to complete
  67. hosts: oo_masters_to_config
  68. tasks:
  69. - set_fact:
  70. master_update_complete: True
  71. ##############################################################################
  72. # Gate on master update complete
  73. ##############################################################################
  74. - name: Gate on master update
  75. hosts: localhost
  76. connection: local
  77. become: no
  78. tasks:
  79. - set_fact:
  80. master_update_completed: "{{ hostvars
  81. | oo_select_keys(groups.oo_masters_to_config)
  82. | oo_collect('inventory_hostname', {'master_update_complete': true}) }}"
  83. - set_fact:
  84. master_update_failed: "{{ groups.oo_masters_to_config | difference(master_update_completed) }}"
  85. - fail:
  86. msg: "Upgrade cannot continue. The following masters did not finish updating: {{ master_update_failed | join(',') }}"
  87. when: master_update_failed | length > 0
  88. ###############################################################################
  89. # Upgrade Nodes
  90. ###############################################################################
  91. - name: Upgrade nodes
  92. hosts: oo_nodes_to_config
  93. serial: 1
  94. roles:
  95. - openshift_facts
  96. handlers:
  97. - include: ../../../../../roles/openshift_node/handlers/main.yml
  98. tasks:
  99. - include: node_upgrade.yml
  100. - set_fact:
  101. node_update_complete: True
  102. ##############################################################################
  103. # Gate on nodes update
  104. ##############################################################################
  105. - name: Gate on nodes update
  106. hosts: localhost
  107. connection: local
  108. become: no
  109. tasks:
  110. - set_fact:
  111. node_update_completed: "{{ hostvars
  112. | oo_select_keys(groups.oo_nodes_to_config)
  113. | oo_collect('inventory_hostname', {'node_update_complete': true}) }}"
  114. - set_fact:
  115. node_update_failed: "{{ groups.oo_nodes_to_config | difference(node_update_completed) }}"
  116. - fail:
  117. msg: "Upgrade cannot continue. The following nodes did not finish updating: {{ node_update_failed | join(',') }}"
  118. when: node_update_failed | length > 0
  119. ###############################################################################
  120. # Reconcile Cluster Roles, Cluster Role Bindings and Security Context Constraints
  121. ###############################################################################
  122. - name: Reconcile Cluster Roles and Cluster Role Bindings and Security Context Constraints
  123. hosts: oo_masters_to_config
  124. roles:
  125. - { role: openshift_cli, openshift_image_tag: "v{{ g_new_version }}" }
  126. vars:
  127. origin_reconcile_bindings: "{{ deployment_type == 'origin' and g_new_version | version_compare('1.0.6', '>') }}"
  128. ent_reconcile_bindings: true
  129. openshift_docker_hosted_registry_network: "{{ hostvars[groups.oo_first_master.0].openshift.common.portal_net }}"
  130. upgrading: True
  131. tasks:
  132. - name: Verifying the correct commandline tools are available
  133. shell: grep {{ verify_upgrade_version }} {{ openshift.common.admin_binary}}
  134. when: openshift.common.is_containerized | bool and verify_upgrade_version is defined
  135. - name: Reconcile Cluster Roles
  136. command: >
  137. {{ openshift.common.admin_binary}} --config={{ openshift.common.config_base }}/master/admin.kubeconfig
  138. policy reconcile-cluster-roles --additive-only=true --confirm
  139. run_once: true
  140. - name: Reconcile Cluster Role Bindings
  141. command: >
  142. {{ openshift.common.admin_binary}} --config={{ openshift.common.config_base }}/master/admin.kubeconfig
  143. policy reconcile-cluster-role-bindings
  144. --exclude-groups=system:authenticated
  145. --exclude-groups=system:authenticated:oauth
  146. --exclude-groups=system:unauthenticated
  147. --exclude-users=system:anonymous
  148. --additive-only=true --confirm
  149. when: origin_reconcile_bindings | bool or ent_reconcile_bindings | bool
  150. run_once: true
  151. - name: Reconcile Security Context Constraints
  152. command: >
  153. {{ openshift.common.admin_binary}} policy reconcile-sccs --confirm --additive-only=true
  154. run_once: true
  155. - set_fact:
  156. reconcile_complete: True
  157. ##############################################################################
  158. # Gate on reconcile
  159. ##############################################################################
  160. - name: Gate on reconcile
  161. hosts: localhost
  162. connection: local
  163. become: no
  164. tasks:
  165. - set_fact:
  166. reconcile_completed: "{{ hostvars
  167. | oo_select_keys(groups.oo_masters_to_config)
  168. | oo_collect('inventory_hostname', {'reconcile_complete': true}) }}"
  169. - set_fact:
  170. reconcile_failed: "{{ groups.oo_masters_to_config | difference(reconcile_completed) }}"
  171. - fail:
  172. msg: "Upgrade cannot continue. The following masters did not finish reconciling: {{ reconcile_failed | join(',') }}"
  173. when: reconcile_failed | length > 0