migrate.yml 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. ---
  2. - block:
  3. - name: scale down asb deploymentconfig
  4. oc_scale:
  5. name: asb
  6. namespace: openshift-ansible-service-broker
  7. kind: dc
  8. replicas: 0
  9. - name: Add required permissions to asb-auth clusterrole
  10. oc_clusterrole:
  11. state: present
  12. name: asb-auth
  13. rules:
  14. - apiGroups: [""]
  15. resources: ["namespaces"]
  16. verbs: ["create", "delete"]
  17. - apiGroups: ["authorization.openshift.io"]
  18. resources: ["subjectrulesreview"]
  19. verbs: ["create"]
  20. - apiGroups: ["authorization.k8s.io"]
  21. resources: ["subjectaccessreviews"]
  22. verbs: ["create"]
  23. - apiGroups: ["authentication.k8s.io"]
  24. resources: ["tokenreviews"]
  25. verbs: ["create"]
  26. - apiGroups: ["image.openshift.io", ""]
  27. resources: ["images"]
  28. verbs: ["get", "list"]
  29. - apiGroups: ["network.openshift.io"]
  30. resources: ["clusternetworks", "netnamespaces"]
  31. verbs: ["get"]
  32. - apiGroups: ["network.openshift.io"]
  33. resources: ["netnamespaces"]
  34. verbs: ["update"]
  35. - apiGroups: ["networking.k8s.io"]
  36. resources: ["networkpolicies"]
  37. verbs: ["create", "delete"]
  38. - apiGroups: ["automationbroker.io"]
  39. resources: ["bundles", "jobstates", "servicebindings", "serviceinstances"]
  40. verbs: ["*"]
  41. - name: Create custom resource definitions for asb
  42. oc_obj:
  43. name: '{{ crd.metadata.name }}'
  44. kind: CustomResourceDefinition
  45. state: present
  46. content:
  47. path: /tmp/{{ crd.metadata.name }}
  48. data: '{{ crd }}'
  49. vars:
  50. crd: "{{ lookup('file', item) | from_yaml }}"
  51. with_fileglob:
  52. - 'files/*.automationbroker.io.yaml'
  53. - name: Migrate from etcd to CustomResources
  54. oc_obj:
  55. force: yes
  56. name: asb-etcd-migration
  57. namespace: openshift-ansible-service-broker
  58. kind: Job
  59. state: present
  60. content:
  61. path: /tmp/asb_migrate_out
  62. data:
  63. apiVersion: batch/v1
  64. kind: Job
  65. metadata:
  66. name: asb-etcd-migration
  67. spec:
  68. parallelism: 1
  69. completions: 1
  70. backoffLimit: 3
  71. template:
  72. metadata:
  73. name: asb-etcd-migration
  74. spec:
  75. containers:
  76. - name: asb
  77. image: '{{ ansible_service_broker_image }}'
  78. imagePullPolicy: IfNotPresent
  79. command:
  80. - '/usr/bin/migration'
  81. args:
  82. - '-host=asb-etcd.openshift-ansible-service-broker.svc'
  83. - '-ca-file=/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt'
  84. - '-client-cert=/var/run/asb-etcd-auth/client.crt'
  85. - '-client-key=/var/run/asb-etcd-auth/client.key'
  86. - '-namespace=openshift-ansible-service-broker'
  87. volumeMounts:
  88. - name: config-volume
  89. mountPath: /etc/ansible-service-broker
  90. - name: asb-tls
  91. mountPath: /etc/tls/private
  92. - name: asb-etcd-auth
  93. mountPath: /var/run/asb-etcd-auth
  94. env:
  95. - name: BROKER_CONFIG
  96. value: /etc/ansible-service-broker/config.yaml
  97. - name: HTTP_PROXY
  98. value: "{{ openshift.common.http_proxy | default('') }}"
  99. - name: HTTPS_PROXY
  100. value: "{{ openshift.common.https_proxy | default('') }}"
  101. - name: NO_PROXY
  102. value: "{{ ([openshift.common.no_proxy, '.default'] | join(',')) if openshift.get('common', {}).get('no_proxy') else '' }}"
  103. volumes:
  104. - name: config-volume
  105. configMap:
  106. name: broker-config
  107. items:
  108. - key: broker-config
  109. path: config.yaml
  110. - name: asb-tls
  111. secret:
  112. secretName: asb-tls
  113. - name: asb-etcd-auth
  114. secret:
  115. secretName: broker-etcd-auth-secret
  116. restartPolicy: Never
  117. serviceAccount: asb
  118. serviceAccountName: asb
  119. - name: wait for migration to complete
  120. oc_obj:
  121. namespace: openshift-ansible-service-broker
  122. kind: Job
  123. state: list
  124. name: asb-etcd-migration
  125. register: migration_status
  126. ignore_errors: true
  127. until:
  128. - "'results' in migration_status.results and migration_status.results.results | count > 0"
  129. # Pod's 'Complete' status must be True
  130. - "migration_status.results.results | lib_utils_oo_collect(attribute='status.conditions') | lib_utils_oo_collect(attribute='status', filters={'type': 'Complete'}) | map('bool') | select | list | count == 1"
  131. delay: 10
  132. retries: "{{ (asb_migration_timeout|default(600) | int / 10) | int }}"
  133. failed_when:
  134. - "'results' in migration_status.results"
  135. - "migration_status.results.results | count > 0"
  136. # Fail when pod's 'Failed' status is True
  137. - "migration_status.results.results | lib_utils_oo_collect(attribute='status.conditions') | lib_utils_oo_collect(attribute='status', filters={'type': 'Failed'}) | map('bool') | select | list | count == 1"
  138. - when: not (migration_status is failed)
  139. block:
  140. - name: Update broker configmap to use CRD backend
  141. oc_obj:
  142. name: broker-config
  143. namespace: openshift-ansible-service-broker
  144. state: present
  145. kind: ConfigMap
  146. content:
  147. path: /tmp/cmout
  148. data: "{{ lookup('template', 'configmap.yaml.j2') | from_yaml }}"
  149. register: updated_configmap
  150. - name: Update broker deploymentconfig
  151. oc_obj:
  152. force: yes
  153. name: asb
  154. namespace: openshift-ansible-service-broker
  155. state: present
  156. kind: DeploymentConfig
  157. content:
  158. path: /tmp/dcout
  159. data: "{{ lookup('template', 'asb_dc.yaml.j2') | from_yaml }}"
  160. - name: delete etcd service
  161. oc_service:
  162. name: asb-etcd
  163. namespace: openshift-ansible-service-broker
  164. state: absent
  165. - name: delete etcd deploymentconfig
  166. oc_obj:
  167. name: asb-etcd
  168. namespace: openshift-ansible-service-broker
  169. kind: DeploymentConfig
  170. state: absent
  171. - name: delete broker etcd secret
  172. oc_secret:
  173. name: broker-etcd-auth-secret
  174. namespace: openshift_ansible_service_broker
  175. state: absent
  176. always:
  177. - name: scale up asb deploymentconfig
  178. oc_scale:
  179. name: asb
  180. namespace: openshift-ansible-service-broker
  181. kind: dc
  182. replicas: 1
  183. - name: Fail out because the ASB etcd to CRD migration was unsuccessful
  184. fail:
  185. msg: >
  186. The migration from etcd to CustomResourceDefinitions was not
  187. successful, aborting upgrade of the ansible service broker.
  188. when: migration_status is not defined or migration_status is failed or updated_configmap is not defined or updated_configmap is failed