upgrade.yml 6.9 KB

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