install.yml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. ---
  2. # Fact setting and validations
  3. - name: Set default image variables based on deployment type
  4. include_vars: "{{ item }}"
  5. with_first_found:
  6. - "{{ openshift_deployment_type | default(deployment_type) }}.yml"
  7. - "default_images.yml"
  8. - name: set ansible_service_broker facts
  9. set_fact:
  10. ansible_service_broker_image_prefix: "{{ ansible_service_broker_image_prefix | default(__ansible_service_broker_image_prefix) }}"
  11. ansible_service_broker_image_tag: "{{ ansible_service_broker_image_tag | default(__ansible_service_broker_image_tag) }}"
  12. ansible_service_broker_etcd_image_prefix: "{{ ansible_service_broker_etcd_image_prefix | default(__ansible_service_broker_etcd_image_prefix) }}"
  13. ansible_service_broker_etcd_image_tag: "{{ ansible_service_broker_etcd_image_tag | default(__ansible_service_broker_etcd_image_tag) }}"
  14. ansible_service_broker_etcd_image_etcd_path: "{{ ansible_service_broker_etcd_image_etcd_path | default(__ansible_service_broker_etcd_image_etcd_path) }}"
  15. ansible_service_broker_registry_type: "{{ ansible_service_broker_registry_type | default(__ansible_service_broker_registry_type) }}"
  16. ansible_service_broker_registry_url: "{{ ansible_service_broker_registry_url | default(__ansible_service_broker_registry_url) }}"
  17. ansible_service_broker_registry_user: "{{ ansible_service_broker_registry_user | default(__ansible_service_broker_registry_user) }}"
  18. ansible_service_broker_registry_password: "{{ ansible_service_broker_registry_password | default(__ansible_service_broker_registry_password) }}"
  19. ansible_service_broker_registry_organization: "{{ ansible_service_broker_registry_organization | default(__ansible_service_broker_registry_organization) }}"
  20. - name: set ansible-service-broker image facts using set prefix and tag
  21. set_fact:
  22. ansible_service_broker_image: "{{ ansible_service_broker_image_prefix }}ansible-service-broker:{{ ansible_service_broker_image_tag }}"
  23. ansible_service_broker_etcd_image: "{{ ansible_service_broker_etcd_image_prefix }}etcd:{{ ansible_service_broker_etcd_image_tag }}"
  24. - include: validate_facts.yml
  25. # Deployment of ansible-service-broker starts here
  26. - name: create openshift-ansible-service-broker project
  27. oc_project:
  28. name: openshift-ansible-service-broker
  29. state: present
  30. - name: create ansible-service-broker serviceaccount
  31. oc_serviceaccount:
  32. name: asb
  33. namespace: openshift-ansible-service-broker
  34. state: present
  35. - name: Set SA cluster-role
  36. oc_adm_policy_user:
  37. state: present
  38. namespace: "openshift-ansible-service-broker"
  39. resource_kind: cluster-role
  40. resource_name: admin
  41. user: "system:serviceaccount:openshift-ansible-service-broker:asb"
  42. - name: create ansible-service-broker service
  43. oc_service:
  44. name: asb
  45. namespace: openshift-ansible-service-broker
  46. state: present
  47. labels:
  48. app: openshift-ansible-service-broker
  49. service: asb
  50. ports:
  51. - name: port-1338
  52. port: 1338
  53. selector:
  54. app: openshift-ansible-service-broker
  55. service: asb
  56. - name: create etcd service
  57. oc_service:
  58. name: etcd
  59. namespace: openshift-ansible-service-broker
  60. state: present
  61. ports:
  62. - name: etcd-advertise
  63. port: 2379
  64. selector:
  65. app: openshift-ansible-service-broker
  66. service: etcd
  67. - name: create route for ansible-service-broker service
  68. oc_route:
  69. name: asb-1338
  70. namespace: openshift-ansible-service-broker
  71. state: present
  72. service_name: asb
  73. port: 1338
  74. register: asb_route_out
  75. - name: get ansible-service-broker route name
  76. set_fact:
  77. ansible_service_broker_route: "{{ asb_route_out.results.results[0].spec.host }}"
  78. - name: create persistent volume claim for etcd
  79. oc_obj:
  80. name: etcd
  81. namespace: openshift-ansible-service-broker
  82. state: present
  83. kind: PersistentVolumeClaim
  84. content:
  85. path: /tmp/dcout
  86. data:
  87. apiVersion: v1
  88. kind: PersistentVolumeClaim
  89. metadata:
  90. name: etcd
  91. namespace: openshift-ansible-service-broker
  92. spec:
  93. accessModes:
  94. - ReadWriteOnce
  95. resources:
  96. requests:
  97. storage: 1Gi
  98. - name: create etcd deployment
  99. oc_obj:
  100. name: etcd
  101. namespace: openshift-ansible-service-broker
  102. state: present
  103. kind: Deployment
  104. content:
  105. path: /tmp/dcout
  106. data:
  107. apiVersion: extensions/v1beta1
  108. kind: Deployment
  109. metadata:
  110. name: etcd
  111. namespace: openshift-ansible-service-broker
  112. labels:
  113. app: openshift-ansible-service-broker
  114. service: etcd
  115. spec:
  116. selector:
  117. matchLabels:
  118. app: openshift-ansible-service-broker
  119. service: etcd
  120. strategy:
  121. type: RollingUpdate
  122. rollingUpdate:
  123. maxSurge: 1
  124. maxUnavailable: 1
  125. replicas: 1
  126. template:
  127. metadata:
  128. labels:
  129. app: openshift-ansible-service-broker
  130. service: etcd
  131. spec:
  132. restartPolicy: Always
  133. containers:
  134. - image: "{{ ansible_service_broker_etcd_image }}"
  135. name: etcd
  136. imagePullPolicy: IfNotPresent
  137. terminationMessagePath: /tmp/termination-log
  138. workingDir: /etcd
  139. args:
  140. - '{{ ansible_service_broker_etcd_image_etcd_path }}'
  141. - --data-dir=/data
  142. - "--listen-client-urls=http://0.0.0.0:2379"
  143. - "--advertise-client-urls=http://0.0.0.0:2379"
  144. ports:
  145. - containerPort: 2379
  146. protocol: TCP
  147. env:
  148. - name: ETCDCTL_API
  149. value: "3"
  150. volumeMounts:
  151. - mountPath: /data
  152. name: etcd
  153. volumes:
  154. - name: etcd
  155. persistentVolumeClaim:
  156. claimName: etcd
  157. - name: create ansible-service-broker deployment
  158. oc_obj:
  159. name: asb
  160. namespace: openshift-ansible-service-broker
  161. state: present
  162. kind: Deployment
  163. content:
  164. path: /tmp/dcout
  165. data:
  166. apiVersion: extensions/v1beta1
  167. kind: Deployment
  168. metadata:
  169. name: asb
  170. namespace: openshift-ansible-service-broker
  171. labels:
  172. app: openshift-ansible-service-broker
  173. service: asb
  174. spec:
  175. strategy:
  176. type: Recreate
  177. replicas: 1
  178. template:
  179. metadata:
  180. labels:
  181. app: openshift-ansible-service-broker
  182. service: asb
  183. spec:
  184. serviceAccount: asb
  185. restartPolicy: Always
  186. containers:
  187. - image: "{{ ansible_service_broker_image }}"
  188. name: asb
  189. imagePullPolicy: IfNotPresent
  190. volumeMounts:
  191. - name: config-volume
  192. mountPath: /etc/ansible-service-broker
  193. ports:
  194. - containerPort: 1338
  195. protocol: TCP
  196. env:
  197. - name: BROKER_CONFIG
  198. value: /etc/ansible-service-broker/config.yaml
  199. terminationMessagePath: /tmp/termination-log
  200. volumes:
  201. - name: config-volume
  202. configMap:
  203. name: broker-config
  204. items:
  205. - key: broker-config
  206. path: config.yaml
  207. # TODO: saw a oc_configmap in the library, but didn't understand how to get it to do the following:
  208. - name: Create config map for ansible-service-broker
  209. oc_obj:
  210. name: broker-config
  211. namespace: openshift-ansible-service-broker
  212. state: present
  213. kind: ConfigMap
  214. content:
  215. path: /tmp/cmout
  216. data:
  217. apiVersion: v1
  218. kind: ConfigMap
  219. metadata:
  220. name: broker-config
  221. namespace: openshift-ansible-service-broker
  222. labels:
  223. app: ansible-service-broker
  224. data:
  225. broker-config: |
  226. registry:
  227. name: "{{ ansible_service_broker_registry_type }}"
  228. url: "{{ ansible_service_broker_registry_url }}"
  229. user: "{{ ansible_service_broker_registry_user }}"
  230. pass: "{{ ansible_service_broker_registry_password }}"
  231. org: "{{ ansible_service_broker_registry_organization }}"
  232. dao:
  233. etcd_host: etcd
  234. etcd_port: 2379
  235. log:
  236. logfile: /var/log/ansible-service-broker/asb.log
  237. stdout: true
  238. level: "{{ ansible_service_broker_log_level }}"
  239. color: true
  240. openshift: {}
  241. broker:
  242. dev_broker: {{ ansible_service_broker_dev_broker | bool | lower }}
  243. launch_apb_on_bind: {{ ansible_service_broker_launch_apb_on_bind | bool | lower }}
  244. recovery: {{ ansible_service_broker_recovery | bool | lower }}
  245. output_request: {{ ansible_service_broker_output_request | bool | lower }}
  246. bootstrap_on_startup: {{ ansible_service_broker_bootstrap_on_startup | bool | lower }}
  247. - name: Create the Broker resource in the catalog
  248. oc_obj:
  249. name: ansible-service-broker
  250. state: present
  251. kind: Broker
  252. content:
  253. path: /tmp/brokerout
  254. data:
  255. apiVersion: servicecatalog.k8s.io/v1alpha1
  256. kind: Broker
  257. metadata:
  258. name: ansible-service-broker
  259. spec:
  260. url: http://asb.openshift-ansible-service-broker.svc:1338