install.yml 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  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: create ansible-service-broker service
  36. oc_service:
  37. name: asb
  38. namespace: openshift-ansible-service-broker
  39. state: present
  40. labels:
  41. app: ansible-service-broker
  42. service: asb
  43. ports:
  44. - name: port-1338
  45. port: 1338
  46. selector:
  47. app: ansible-service-broker
  48. service: asb
  49. - name: create etcd service
  50. oc_service:
  51. name: etcd
  52. namespace: openshift-ansible-service-broker
  53. state: present
  54. ports:
  55. - name: etcd-advertise
  56. port: 2379
  57. selector:
  58. app: ansible-service-broker
  59. service: etcd
  60. - name: create route for ansible-service-broker service
  61. oc_route:
  62. name: asb-1338
  63. namespace: openshift-ansible-service-broker
  64. state: present
  65. service_name: asb
  66. port: 1338
  67. register: asb_route_out
  68. - name: get ansible-service-broker route name
  69. set_fact:
  70. ansible_service_broker_route: "{{ asb_route_out.results.results[0].spec.host }}"
  71. - name: create persistent volume claim for etcd
  72. oc_obj:
  73. name: etcd
  74. namespace: openshift-ansible-service-broker
  75. state: present
  76. kind: PersistentVolumeClaim
  77. content:
  78. path: /tmp/dcout
  79. data:
  80. apiVersion: v1
  81. kind: PersistentVolumeClaim
  82. metadata:
  83. name: etcd
  84. namespace: openshift-ansible-service-broker
  85. spec:
  86. accessModes:
  87. - ReadWriteOnce
  88. resources:
  89. requests:
  90. storage: 1Gi
  91. - name: create etcd deployment
  92. oc_obj:
  93. name: etcd
  94. namespace: openshift-ansible-service-broker
  95. state: present
  96. kind: Deployment
  97. content:
  98. path: /tmp/dcout
  99. data:
  100. apiVersion: extensions/v1beta1
  101. kind: Deployment
  102. metadata:
  103. name: etcd
  104. namespace: openshift-ansible-service-broker
  105. labels:
  106. app: ansible-service-broker
  107. service: etcd
  108. spec:
  109. selector:
  110. matchLabels:
  111. app: ansible-service-broker
  112. service: etcd
  113. strategy:
  114. type: RollingUpdate
  115. rollingUpdate:
  116. maxSurge: 1
  117. maxUnavailable: 1
  118. replicas: 1
  119. template:
  120. metadata:
  121. labels:
  122. app: ansible-service-broker
  123. service: etcd
  124. spec:
  125. restartPolicy: Always
  126. containers:
  127. - image: "{{ ansible_service_broker_etcd_image }}"
  128. name: etcd
  129. imagePullPolicy: IfNotPresent
  130. terminationMessagePath: /tmp/termination-log
  131. workingDir: /etcd
  132. args:
  133. - '{{ ansible_service_broker_etcd_image_etcd_path }}'
  134. - --data-dir=/data
  135. - "--listen-client-urls=http://0.0.0.0:2379"
  136. - "--advertise-client-urls=http://0.0.0.0:2379"
  137. ports:
  138. - containerPort: 2379
  139. protocol: TCP
  140. env:
  141. - name: ETCDCTL_API
  142. value: "3"
  143. volumeMounts:
  144. - mountPath: /data
  145. name: etcd
  146. volumes:
  147. - name: etcd
  148. persistentVolumeClaim:
  149. claimName: etcd
  150. - name: create ansible-service-broker deployment
  151. oc_obj:
  152. name: asb
  153. namespace: openshift-ansible-service-broker
  154. state: present
  155. kind: Deployment
  156. content:
  157. path: /tmp/dcout
  158. data:
  159. apiVersion: extensions/v1beta1
  160. kind: Deployment
  161. metadata:
  162. name: asb
  163. namespace: openshift-ansible-service-broker
  164. labels:
  165. app: openshift-ansible-service-broker
  166. service: asb
  167. spec:
  168. strategy:
  169. type: Recreate
  170. replicas: 1
  171. template:
  172. metadata:
  173. labels:
  174. app: openshift-ansible-service-broker
  175. service: asb
  176. spec:
  177. serviceAccount: asb
  178. restartPolicy: Always
  179. containers:
  180. - image: "{{ ansible_service_broker_image }}"
  181. name: asb
  182. imagePullPolicy: IfNotPresent
  183. volumeMounts:
  184. - name: config-volume
  185. mountPath: /etc/ansible-service-broker
  186. ports:
  187. - containerPort: 1338
  188. protocol: TCP
  189. env:
  190. - name: BROKER_CONFIG
  191. value: /etc/ansible-service-broker/config.yaml
  192. terminationMessagePath: /tmp/termination-log
  193. volumes:
  194. - name: config-volume
  195. configMap:
  196. name: broker-config
  197. items:
  198. - key: broker-config
  199. path: config.yaml
  200. # TODO: saw a oc_configmap in the library, but didn't understand how to get it to do the following:
  201. - name: Create config map for ansible-service-broker
  202. oc_obj:
  203. name: broker-config
  204. namespace: openshift-ansible-service-broker
  205. state: present
  206. kind: ConfigMap
  207. content:
  208. path: /tmp/cmout
  209. data:
  210. apiVersion: v1
  211. kind: ConfigMap
  212. metadata:
  213. name: broker-config
  214. namespace: openshift-ansible-service-broker
  215. labels:
  216. app: ansible-service-broker
  217. data:
  218. broker-config: |
  219. registry:
  220. name: "{{ ansible_service_broker_registry_type }}"
  221. url: "{{ ansible_service_broker_registry_url }}"
  222. user: "{{ ansible_service_broker_registry_user }}"
  223. pass: "{{ ansible_service_broker_registry_password }}"
  224. org: "{{ ansible_service_broker_registry_organization }}"
  225. dao:
  226. etcd_host: etcd
  227. etcd_port: 2379
  228. log:
  229. logfile: /var/log/ansible-service-broker/asb.log
  230. stdout: true
  231. level: "{{ ansible_service_broker_log_level }}"
  232. color: true
  233. openshift: {}
  234. broker:
  235. devbroker: false
  236. launchapbonbind: "{{ ansible_service_broker_launch_apb_on_bind }}"
  237. - name: Create the Broker resource in the catalog
  238. oc_obj:
  239. name: ansible-service-broker
  240. state: present
  241. kind: Broker
  242. content:
  243. path: /tmp/brokerout
  244. data:
  245. apiVersion: servicecatalog.k8s.io/v1alpha1
  246. kind: Broker
  247. metadata:
  248. name: ansible-service-broker
  249. spec:
  250. url: http://{{ ansible_service_broker_route }}