install.yml 7.1 KB

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