install.yml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. ---
  2. - import_tasks: facts.yml
  3. - import_tasks: upgrade.yml
  4. when: openshift_upgrade_target is defined
  5. - include_tasks: generate_certs.yml
  6. # Deployment of ansible-service-broker starts here
  7. - name: create openshift-ansible-service-broker project
  8. oc_project:
  9. name: openshift-ansible-service-broker
  10. state: present
  11. - name: create ansible-service-broker serviceaccount
  12. oc_serviceaccount:
  13. name: asb
  14. namespace: openshift-ansible-service-broker
  15. state: present
  16. - name: create ansible-service-broker client serviceaccount
  17. oc_serviceaccount:
  18. name: asb-client
  19. namespace: openshift-ansible-service-broker
  20. state: present
  21. - name: Create asb-auth cluster role
  22. oc_clusterrole:
  23. state: present
  24. name: asb-auth
  25. rules:
  26. - apiGroups: [""]
  27. resources: ["namespaces"]
  28. verbs: ["create", "delete"]
  29. - apiGroups: ["authorization.openshift.io"]
  30. resources: ["subjectrulesreview"]
  31. verbs: ["create"]
  32. - apiGroups: ["authorization.k8s.io"]
  33. resources: ["subjectaccessreviews"]
  34. verbs: ["create"]
  35. - apiGroups: ["authentication.k8s.io"]
  36. resources: ["tokenreviews"]
  37. verbs: ["create"]
  38. - apiGroups: ["image.openshift.io", ""]
  39. resources: ["images"]
  40. verbs: ["get", "list"]
  41. - apiGroups: ["network.openshift.io"]
  42. resources: ["clusternetworks", "netnamespaces"]
  43. verbs: ["get"]
  44. - apiGroups: ["network.openshift.io"]
  45. resources: ["netnamespaces"]
  46. verbs: ["update"]
  47. - apiGroups: ["networking.k8s.io"]
  48. resources: ["networkpolicies"]
  49. verbs: ["create", "delete"]
  50. - apiGroups: ["automationbroker.io"]
  51. resources: ["bundles", "jobstates", "servicebindings", "serviceinstances"]
  52. verbs: ["*"]
  53. - name: Create asb-access cluster role
  54. oc_clusterrole:
  55. state: present
  56. name: asb-access
  57. rules:
  58. - nonResourceURLs: ["/ansible-service-broker", "/ansible-service-broker/*"]
  59. verbs: ["get", "post", "put", "patch", "delete"]
  60. - name: Bind admin cluster-role to asb serviceaccount
  61. oc_adm_policy_user:
  62. state: present
  63. resource_kind: cluster-role
  64. resource_name: admin
  65. user: "system:serviceaccount:openshift-ansible-service-broker:asb"
  66. - name: Bind auth cluster role to asb service account
  67. oc_adm_policy_user:
  68. state: present
  69. resource_kind: cluster-role
  70. resource_name: asb-auth
  71. user: "system:serviceaccount:openshift-ansible-service-broker:asb"
  72. - name: Bind asb-access role to asb-client service account
  73. oc_adm_policy_user:
  74. state: present
  75. resource_kind: cluster-role
  76. resource_name: asb-access
  77. user: "system:serviceaccount:openshift-ansible-service-broker:asb-client"
  78. - name: create asb-client token secret
  79. oc_obj:
  80. name: asb-client
  81. namespace: openshift-ansible-service-broker
  82. state: present
  83. kind: Secret
  84. content:
  85. path: /tmp/asbclientsecretout
  86. data:
  87. apiVersion: v1
  88. kind: Secret
  89. metadata:
  90. name: asb-client
  91. namespace: openshift-ansible-service-broker
  92. annotations:
  93. kubernetes.io/service-account.name: asb-client
  94. type: kubernetes.io/service-account-token
  95. - oc_secret:
  96. state: list
  97. namespace: openshift-ansible-service-broker
  98. name: asb-client
  99. register: asb_client_secret
  100. - set_fact:
  101. service_ca_crt: "{{ asb_client_secret.results.results.0.data['service-ca.crt'] }}"
  102. - name: Create custom resource definitions for asb
  103. oc_obj:
  104. name: '{{ crd.metadata.name }}'
  105. kind: CustomResourceDefinition
  106. state: present
  107. content:
  108. path: /tmp/{{ crd.metadata.name }}
  109. data: '{{ crd }}'
  110. vars:
  111. crd: "{{ lookup('file', item) | from_yaml }}"
  112. with_fileglob:
  113. - 'files/*.automationbroker.io.yaml'
  114. - name: create ansible-service-broker service
  115. oc_service:
  116. name: asb
  117. namespace: openshift-ansible-service-broker
  118. labels:
  119. app: openshift-ansible-service-broker
  120. service: asb
  121. annotations:
  122. service.alpha.openshift.io/serving-cert-secret-name: asb-tls
  123. ports:
  124. - name: port-1338
  125. port: 1338
  126. targetPort: 1338
  127. protocol: TCP
  128. selector:
  129. app: openshift-ansible-service-broker
  130. service: asb
  131. - name: create route for ansible-service-broker service
  132. oc_route:
  133. name: asb-1338
  134. namespace: openshift-ansible-service-broker
  135. state: present
  136. labels:
  137. app: openshift-ansible-service-broker
  138. service: asb
  139. service_name: asb
  140. port: 1338
  141. tls_termination: Reencrypt
  142. - name: Set Ansible Service Broker deployment config
  143. oc_obj:
  144. force: yes
  145. name: asb
  146. namespace: openshift-ansible-service-broker
  147. state: present
  148. kind: DeploymentConfig
  149. content:
  150. path: /tmp/dcout
  151. data: "{{ lookup('template', 'asb_dc.yaml.j2') | from_yaml }}"
  152. - name: set auth name and type facts if needed
  153. set_fact:
  154. ansible_service_broker_registry_auth_type: "secret"
  155. ansible_service_broker_registry_auth_name: "asb-registry-auth"
  156. when: ansible_service_broker_registry_user != "" and ansible_service_broker_registry_password != ""
  157. # TODO: saw a oc_configmap in the library, but didn't understand how to get it to do the following:
  158. - name: Create config map for ansible-service-broker
  159. oc_obj:
  160. name: broker-config
  161. namespace: openshift-ansible-service-broker
  162. state: present
  163. kind: ConfigMap
  164. content:
  165. path: /tmp/cmout
  166. data: "{{ lookup('template', 'configmap.yaml.j2') | from_yaml }}"
  167. - oc_secret:
  168. name: asb-registry-auth
  169. namespace: openshift-ansible-service-broker
  170. state: present
  171. contents:
  172. - path: username
  173. data: "{{ ansible_service_broker_registry_user }}"
  174. - path: password
  175. data: "{{ ansible_service_broker_registry_password }}"
  176. when: ansible_service_broker_registry_user != "" and ansible_service_broker_registry_password != ""
  177. - name: Create the Broker resource in the catalog
  178. oc_obj:
  179. name: ansible-service-broker
  180. state: present
  181. kind: ClusterServiceBroker
  182. content:
  183. path: /tmp/brokerout
  184. data:
  185. apiVersion: servicecatalog.k8s.io/v1beta1
  186. kind: ClusterServiceBroker
  187. metadata:
  188. name: ansible-service-broker
  189. spec:
  190. url: https://asb.openshift-ansible-service-broker.svc:1338/ansible-service-broker
  191. authInfo:
  192. bearer:
  193. secretRef:
  194. name: asb-client
  195. namespace: openshift-ansible-service-broker
  196. kind: Secret
  197. caBundle: "{{ service_ca_crt }}"