install.yml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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. - name: Make kube-service-catalog project network global
  22. command: >
  23. oc adm pod-network make-projects-global kube-service-catalog
  24. when: os_sdn_network_plugin_name == 'redhat/openshift-ovs-multitenant'
  25. - include: generate_certs.yml
  26. - copy:
  27. src: kubeservicecatalog_roles_bindings.yml
  28. dest: "{{ mktemp.stdout }}/kubeservicecatalog_roles_bindings.yml"
  29. - oc_obj:
  30. name: service-catalog
  31. kind: template
  32. namespace: "kube-service-catalog"
  33. files:
  34. - "{{ mktemp.stdout }}/kubeservicecatalog_roles_bindings.yml"
  35. delete_after: yes
  36. - oc_process:
  37. create: True
  38. template_name: service-catalog
  39. namespace: "kube-service-catalog"
  40. - copy:
  41. src: kubesystem_roles_bindings.yml
  42. dest: "{{ mktemp.stdout }}/kubesystem_roles_bindings.yml"
  43. - oc_obj:
  44. name: kube-system-service-catalog
  45. kind: template
  46. namespace: kube-system
  47. files:
  48. - "{{ mktemp.stdout }}/kubesystem_roles_bindings.yml"
  49. delete_after: yes
  50. - oc_process:
  51. create: True
  52. template_name: kube-system-service-catalog
  53. namespace: kube-system
  54. - oc_obj:
  55. name: edit
  56. kind: clusterrole
  57. state: list
  58. register: edit_yaml
  59. # only do this if we don't already have the updated role info
  60. - name: Generate apply template for clusterrole/edit
  61. template:
  62. src: sc_role_patching.j2
  63. dest: "{{ mktemp.stdout }}/edit_sc_patch.yml"
  64. vars:
  65. original_content: "{{ edit_yaml.results.results[0] | to_yaml }}"
  66. when:
  67. - 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'])
  68. # only do this if we don't already have the updated role info
  69. - name: update edit role for service catalog and pod preset access
  70. command: >
  71. oc replace -f {{ mktemp.stdout }}/edit_sc_patch.yml
  72. when:
  73. - 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'])
  74. - oc_obj:
  75. name: admin
  76. kind: clusterrole
  77. state: list
  78. register: admin_yaml
  79. # only do this if we don't already have the updated role info
  80. - name: Generate apply template for clusterrole/admin
  81. template:
  82. src: sc_role_patching.j2
  83. dest: "{{ mktemp.stdout }}/admin_sc_patch.yml"
  84. vars:
  85. original_content: "{{ admin_yaml.results.results[0] | to_yaml }}"
  86. when:
  87. - 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'])
  88. # only do this if we don't already have the updated role info
  89. - name: update admin role for service catalog and pod preset access
  90. command: >
  91. oc replace -f {{ mktemp.stdout }}/admin_sc_patch.yml
  92. when:
  93. - 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'])
  94. - oc_adm_policy_user:
  95. namespace: kube-service-catalog
  96. resource_kind: scc
  97. resource_name: hostmount-anyuid
  98. state: present
  99. user: "system:serviceaccount:kube-service-catalog:service-catalog-apiserver"
  100. - name: Set SA cluster-role
  101. oc_adm_policy_user:
  102. state: present
  103. namespace: "kube-service-catalog"
  104. resource_kind: cluster-role
  105. resource_name: admin
  106. user: "system:serviceaccount:kube-service-catalog:default"
  107. - name: Checking for master.etcd-ca.crt
  108. stat:
  109. path: /etc/origin/master/master.etcd-ca.crt
  110. register: etcd_ca_crt
  111. check_mode: no
  112. ## api server
  113. - template:
  114. src: api_server.j2
  115. dest: "{{ mktemp.stdout }}/service_catalog_api_server.yml"
  116. vars:
  117. image: ""
  118. namespace: ""
  119. cpu_limit: none
  120. memory_limit: none
  121. cpu_requests: none
  122. memory_request: none
  123. cors_allowed_origin: localhost
  124. etcd_servers: "{{ openshift.master.etcd_urls | join(',') }}"
  125. etcd_cafile: "{{ '/etc/origin/master/master.etcd-ca.crt' if etcd_ca_crt.stat.exists else '/etc/origin/master/ca-bundle.crt' }}"
  126. node_selector: "{{ openshift_service_catalog_nodeselector | default ({'openshift-infra': 'apiserver'}) }}"
  127. - name: Set Service Catalog API Server daemonset
  128. oc_obj:
  129. state: present
  130. namespace: "kube-service-catalog"
  131. kind: daemonset
  132. name: apiserver
  133. files:
  134. - "{{ mktemp.stdout }}/service_catalog_api_server.yml"
  135. delete_after: yes
  136. - name: Set Service Catalog API Server service
  137. oc_service:
  138. name: apiserver
  139. namespace: kube-service-catalog
  140. state: present
  141. ports:
  142. - name: secure
  143. port: 443
  144. protocol: TCP
  145. targetPort: 6443
  146. selector:
  147. app: apiserver
  148. session_affinity: None
  149. - template:
  150. src: api_server_route.j2
  151. dest: "{{ mktemp.stdout }}/service_catalog_api_route.yml"
  152. - name: Set Service Catalog API Server route
  153. oc_obj:
  154. state: present
  155. namespace: "kube-service-catalog"
  156. kind: route
  157. name: apiserver
  158. files:
  159. - "{{ mktemp.stdout }}/service_catalog_api_route.yml"
  160. delete_after: yes
  161. ## controller manager
  162. - template:
  163. src: controller_manager.j2
  164. dest: "{{ mktemp.stdout }}/controller_manager.yml"
  165. vars:
  166. image: ""
  167. cpu_limit: none
  168. memory_limit: none
  169. node_selector: "{{ openshift_service_catalog_nodeselector | default ({'openshift-infra': 'apiserver'}) }}"
  170. - name: Set Controller Manager deployment
  171. oc_obj:
  172. state: present
  173. namespace: "kube-service-catalog"
  174. kind: daemonset
  175. name: controller-manager
  176. files:
  177. - "{{ mktemp.stdout }}/controller_manager.yml"
  178. delete_after: yes
  179. - name: Set Controller Manager service
  180. oc_service:
  181. name: controller-manager
  182. namespace: kube-service-catalog
  183. state: present
  184. ports:
  185. - port: 6443
  186. protocol: TCP
  187. targetPort: 6443
  188. selector:
  189. app: controller-manager
  190. session_affinity: None
  191. service_type: ClusterIP
  192. - include: start_api_server.yml
  193. - name: Delete temp directory
  194. file:
  195. name: "{{ mktemp.stdout }}"
  196. state: absent
  197. changed_when: False