install.yml 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. ---
  2. # do any asserts here
  3. - name: Create temp directory for doing work in
  4. command: mktemp -d /tmp/openshift-service-catalog-ansible-XXXXXX
  5. register: mktemp
  6. changed_when: False
  7. - name: Set default image variables based on deployment_type
  8. include_vars: "{{ item }}"
  9. with_first_found:
  10. - "{{ openshift_deployment_type | default(deployment_type) }}.yml"
  11. - "default_images.yml"
  12. - name: Set service_catalog image facts
  13. set_fact:
  14. openshift_service_catalog_image_prefix: "{{ openshift_service_catalog_image_prefix | default(__openshift_service_catalog_image_prefix) }}"
  15. openshift_service_catalog_image_version: "{{ openshift_service_catalog_image_version | default(__openshift_service_catalog_image_version) }}"
  16. - name: Set Service Catalog namespace
  17. oc_project:
  18. state: present
  19. name: "kube-service-catalog"
  20. node_selector: ""
  21. - when: os_sdn_network_plugin_name == 'redhat/openshift-ovs-multitenant'
  22. block:
  23. - name: Waiting for netnamespace kube-service-catalog to be ready
  24. oc_obj:
  25. kind: netnamespace
  26. name: kube-service-catalog
  27. state: list
  28. register: get_output
  29. until: not get_output.results.stderr is defined
  30. retries: 30
  31. delay: 1
  32. changed_when: false
  33. - name: Make kube-service-catalog project network global
  34. command: >
  35. oc adm pod-network make-projects-global kube-service-catalog
  36. - include: generate_certs.yml
  37. - copy:
  38. src: kubeservicecatalog_roles_bindings.yml
  39. dest: "{{ mktemp.stdout }}/kubeservicecatalog_roles_bindings.yml"
  40. - oc_obj:
  41. name: service-catalog
  42. kind: template
  43. namespace: "kube-service-catalog"
  44. files:
  45. - "{{ mktemp.stdout }}/kubeservicecatalog_roles_bindings.yml"
  46. delete_after: yes
  47. - oc_process:
  48. create: True
  49. template_name: service-catalog
  50. namespace: "kube-service-catalog"
  51. - copy:
  52. src: kubesystem_roles_bindings.yml
  53. dest: "{{ mktemp.stdout }}/kubesystem_roles_bindings.yml"
  54. - oc_obj:
  55. name: kube-system-service-catalog
  56. kind: template
  57. namespace: kube-system
  58. files:
  59. - "{{ mktemp.stdout }}/kubesystem_roles_bindings.yml"
  60. delete_after: yes
  61. - oc_process:
  62. create: True
  63. template_name: kube-system-service-catalog
  64. namespace: kube-system
  65. - oc_obj:
  66. name: edit
  67. kind: clusterrole
  68. state: list
  69. register: edit_yaml
  70. # only do this if we don't already have the updated role info
  71. - name: Generate apply template for clusterrole/edit
  72. template:
  73. src: sc_role_patching.j2
  74. dest: "{{ mktemp.stdout }}/edit_sc_patch.yml"
  75. vars:
  76. original_content: "{{ edit_yaml.results.results[0] | to_yaml }}"
  77. when:
  78. - not edit_yaml.results.results[0] | oo_contains_rule(['servicecatalog.k8s.io'], ['instances', 'bindings'], ['create', 'update', 'delete', 'get', 'list', 'watch']) or not edit_yaml.results.results[0] | oo_contains_rule(['settings.k8s.io'], ['podpresets'], ['create', 'update', 'delete', 'get', 'list', 'watch'])
  79. # only do this if we don't already have the updated role info
  80. - name: update edit role for service catalog and pod preset access
  81. command: >
  82. oc replace -f {{ mktemp.stdout }}/edit_sc_patch.yml
  83. when:
  84. - not edit_yaml.results.results[0] | oo_contains_rule(['servicecatalog.k8s.io'], ['instances', 'bindings'], ['create', 'update', 'delete', 'get', 'list', 'watch']) or not edit_yaml.results.results[0] | oo_contains_rule(['settings.k8s.io'], ['podpresets'], ['create', 'update', 'delete', 'get', 'list', 'watch'])
  85. - oc_obj:
  86. name: admin
  87. kind: clusterrole
  88. state: list
  89. register: admin_yaml
  90. # only do this if we don't already have the updated role info
  91. - name: Generate apply template for clusterrole/admin
  92. template:
  93. src: sc_role_patching.j2
  94. dest: "{{ mktemp.stdout }}/admin_sc_patch.yml"
  95. vars:
  96. original_content: "{{ admin_yaml.results.results[0] | to_yaml }}"
  97. when:
  98. - not admin_yaml.results.results[0] | oo_contains_rule(['servicecatalog.k8s.io'], ['instances', 'bindings'], ['create', 'update', 'delete', 'get', 'list', 'watch']) or not admin_yaml.results.results[0] | oo_contains_rule(['settings.k8s.io'], ['podpresets'], ['create', 'update', 'delete', 'get', 'list', 'watch'])
  99. # only do this if we don't already have the updated role info
  100. - name: update admin role for service catalog and pod preset access
  101. command: >
  102. oc replace -f {{ mktemp.stdout }}/admin_sc_patch.yml
  103. when:
  104. - not admin_yaml.results.results[0] | oo_contains_rule(['servicecatalog.k8s.io'], ['instances', 'bindings'], ['create', 'update', 'delete', 'get', 'list', 'watch']) or not admin_yaml.results.results[0] | oo_contains_rule(['settings.k8s.io'], ['podpresets'], ['create', 'update', 'delete', 'get', 'list', 'watch'])
  105. - oc_adm_policy_user:
  106. namespace: kube-service-catalog
  107. resource_kind: scc
  108. resource_name: hostmount-anyuid
  109. state: present
  110. user: "system:serviceaccount:kube-service-catalog:service-catalog-apiserver"
  111. - name: Set SA cluster-role
  112. oc_adm_policy_user:
  113. state: present
  114. namespace: "kube-service-catalog"
  115. resource_kind: cluster-role
  116. resource_name: admin
  117. user: "system:serviceaccount:kube-service-catalog:default"
  118. - name: Checking for master.etcd-ca.crt
  119. stat:
  120. path: /etc/origin/master/master.etcd-ca.crt
  121. register: etcd_ca_crt
  122. check_mode: no
  123. ## api server
  124. - template:
  125. src: api_server.j2
  126. dest: "{{ mktemp.stdout }}/service_catalog_api_server.yml"
  127. vars:
  128. image: ""
  129. namespace: ""
  130. cpu_limit: none
  131. memory_limit: none
  132. cpu_requests: none
  133. memory_request: none
  134. cors_allowed_origin: localhost
  135. etcd_servers: "{{ openshift.master.etcd_urls | join(',') }}"
  136. etcd_cafile: "{{ '/etc/origin/master/master.etcd-ca.crt' if etcd_ca_crt.stat.exists else '/etc/origin/master/ca-bundle.crt' }}"
  137. node_selector: "{{ openshift_service_catalog_nodeselector | default ({'openshift-infra': 'apiserver'}) }}"
  138. - name: Set Service Catalog API Server daemonset
  139. oc_obj:
  140. state: present
  141. namespace: "kube-service-catalog"
  142. kind: daemonset
  143. name: apiserver
  144. files:
  145. - "{{ mktemp.stdout }}/service_catalog_api_server.yml"
  146. delete_after: yes
  147. - name: Set Service Catalog API Server service
  148. oc_service:
  149. name: apiserver
  150. namespace: kube-service-catalog
  151. state: present
  152. ports:
  153. - name: secure
  154. port: 443
  155. protocol: TCP
  156. targetPort: 6443
  157. selector:
  158. app: apiserver
  159. session_affinity: None
  160. - template:
  161. src: api_server_route.j2
  162. dest: "{{ mktemp.stdout }}/service_catalog_api_route.yml"
  163. - name: Set Service Catalog API Server route
  164. oc_obj:
  165. state: present
  166. namespace: "kube-service-catalog"
  167. kind: route
  168. name: apiserver
  169. files:
  170. - "{{ mktemp.stdout }}/service_catalog_api_route.yml"
  171. delete_after: yes
  172. ## controller manager
  173. - template:
  174. src: controller_manager.j2
  175. dest: "{{ mktemp.stdout }}/controller_manager.yml"
  176. vars:
  177. image: ""
  178. cpu_limit: none
  179. memory_limit: none
  180. node_selector: "{{ openshift_service_catalog_nodeselector | default ({'openshift-infra': 'apiserver'}) }}"
  181. - name: Set Controller Manager deployment
  182. oc_obj:
  183. state: present
  184. namespace: "kube-service-catalog"
  185. kind: daemonset
  186. name: controller-manager
  187. files:
  188. - "{{ mktemp.stdout }}/controller_manager.yml"
  189. delete_after: yes
  190. - name: Set Controller Manager service
  191. oc_service:
  192. name: controller-manager
  193. namespace: kube-service-catalog
  194. state: present
  195. ports:
  196. - port: 6443
  197. protocol: TCP
  198. targetPort: 6443
  199. selector:
  200. app: controller-manager
  201. session_affinity: None
  202. service_type: ClusterIP
  203. - include: start_api_server.yml
  204. - name: Delete temp directory
  205. file:
  206. name: "{{ mktemp.stdout }}"
  207. state: absent
  208. changed_when: False