install.yml 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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", "bundlebindings", "bundleinstances"]
  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. - name: port-1337
  129. port: 1337
  130. targetPort: 1337
  131. protocol: TCP
  132. selector:
  133. app: openshift-ansible-service-broker
  134. service: asb
  135. - name: create route for ansible-service-broker service
  136. oc_route:
  137. name: asb-1338
  138. namespace: openshift-ansible-service-broker
  139. state: present
  140. labels:
  141. app: openshift-ansible-service-broker
  142. service: asb
  143. service_name: asb
  144. port: 1338
  145. tls_termination: Reencrypt
  146. - name: create route for dashboard-redirector service
  147. oc_route:
  148. name: dr-1337
  149. namespace: openshift-ansible-service-broker
  150. state: present
  151. labels:
  152. app: openshift-ansible-service-broker
  153. service: asb
  154. service_name: asb
  155. port: 1337
  156. when: ansible_service_broker_enable_dashboard_redirector
  157. - name: Set Ansible Service Broker deployment config
  158. oc_obj:
  159. force: yes
  160. name: asb
  161. namespace: openshift-ansible-service-broker
  162. state: present
  163. kind: DeploymentConfig
  164. content:
  165. path: /tmp/dcout
  166. data: "{{ lookup('template', 'asb_dc.yaml.j2') | from_yaml }}"
  167. - name: set auth name and type facts if needed
  168. set_fact:
  169. ansible_service_broker_registry_auth_type: "secret"
  170. ansible_service_broker_registry_auth_name: "asb-registry-auth"
  171. when: ansible_service_broker_registry_user != "" and ansible_service_broker_registry_password != ""
  172. # TODO: saw a oc_configmap in the library, but didn't understand how to get it to do the following:
  173. - name: Create config map for ansible-service-broker
  174. oc_obj:
  175. name: broker-config
  176. namespace: openshift-ansible-service-broker
  177. state: present
  178. kind: ConfigMap
  179. content:
  180. path: /tmp/cmout
  181. data: "{{ lookup('template', 'configmap.yaml.j2') | from_yaml }}"
  182. - oc_secret:
  183. name: asb-registry-auth
  184. namespace: openshift-ansible-service-broker
  185. state: present
  186. contents:
  187. - path: username
  188. data: "{{ ansible_service_broker_registry_user }}"
  189. - path: password
  190. data: "{{ ansible_service_broker_registry_password }}"
  191. when: ansible_service_broker_registry_user != "" and ansible_service_broker_registry_password != ""
  192. - name: Create the Broker resource in the catalog
  193. oc_obj:
  194. name: ansible-service-broker
  195. state: present
  196. kind: ClusterServiceBroker
  197. content:
  198. path: /tmp/brokerout
  199. data:
  200. apiVersion: servicecatalog.k8s.io/v1beta1
  201. kind: ClusterServiceBroker
  202. metadata:
  203. name: ansible-service-broker
  204. spec:
  205. url: https://asb.openshift-ansible-service-broker.svc:1338/ansible-service-broker
  206. authInfo:
  207. bearer:
  208. secretRef:
  209. name: asb-client
  210. namespace: openshift-ansible-service-broker
  211. kind: Secret
  212. caBundle: "{{ service_ca_crt }}"