install.yml 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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 Service Catalog namespace
  8. oc_project:
  9. state: present
  10. name: "kube-service-catalog"
  11. node_selector: ""
  12. - when: os_sdn_network_plugin_name == 'redhat/openshift-ovs-multitenant'
  13. block:
  14. - name: Waiting for netnamespace kube-service-catalog to be ready
  15. oc_obj:
  16. kind: netnamespace
  17. name: kube-service-catalog
  18. state: list
  19. register: get_output
  20. until: not get_output.results.stderr is defined
  21. retries: 30
  22. delay: 1
  23. changed_when: false
  24. - name: Make kube-service-catalog project network global
  25. command: >
  26. {{ openshift_client_binary }} --config=/etc/origin/master/admin.kubeconfig adm pod-network make-projects-global kube-service-catalog
  27. - include_tasks: generate_certs.yml
  28. - copy:
  29. src: kubeservicecatalog_roles_bindings.yml
  30. dest: "{{ mktemp.stdout }}/kubeservicecatalog_roles_bindings.yml"
  31. - oc_obj:
  32. name: service-catalog-role-bindings
  33. kind: template
  34. namespace: "kube-service-catalog"
  35. files:
  36. - "{{ mktemp.stdout }}/kubeservicecatalog_roles_bindings.yml"
  37. - oc_process:
  38. create: True
  39. template_name: service-catalog-role-bindings
  40. namespace: "kube-service-catalog"
  41. - copy:
  42. src: kubesystem_roles_bindings.yml
  43. dest: "{{ mktemp.stdout }}/kubesystem_roles_bindings.yml"
  44. - oc_obj:
  45. name: kube-system-service-catalog-role-bindings
  46. kind: template
  47. namespace: kube-system
  48. files:
  49. - "{{ mktemp.stdout }}/kubesystem_roles_bindings.yml"
  50. - oc_process:
  51. create: True
  52. template_name: kube-system-service-catalog-role-bindings
  53. namespace: kube-system
  54. - copy:
  55. src: openshift_catalog_clusterroles.yml
  56. dest: "{{ mktemp.stdout }}/openshift_catalog_clusterroles.yml"
  57. - name: Apply Service Catalog cluster roles
  58. retries: 5
  59. delay: 2
  60. register: task_result
  61. until: task_result.rc == 0
  62. shell: >
  63. {{ openshift_client_binary }} auth reconcile --config={{ openshift.common.config_base }}/master/admin.kubeconfig -f {{ mktemp.stdout}}/openshift_catalog_clusterroles.yml
  64. - oc_adm_policy_user:
  65. namespace: kube-service-catalog
  66. resource_kind: scc
  67. resource_name: hostmount-anyuid
  68. state: present
  69. user: "system:serviceaccount:kube-service-catalog:service-catalog-apiserver"
  70. - name: Set SA cluster-role
  71. oc_adm_policy_user:
  72. state: present
  73. namespace: "kube-service-catalog"
  74. resource_kind: cluster-role
  75. resource_name: admin
  76. user: "system:serviceaccount:kube-service-catalog:default"
  77. - name: Checking for master.etcd-ca.crt
  78. stat:
  79. path: /etc/origin/master/master.etcd-ca.crt
  80. register: etcd_ca_crt
  81. check_mode: no
  82. ## api server
  83. - template:
  84. src: api_server.j2
  85. dest: "{{ mktemp.stdout }}/service_catalog_api_server.yml"
  86. vars:
  87. image: ""
  88. namespace: ""
  89. cpu_limit: none
  90. memory_limit: none
  91. cpu_requests: none
  92. memory_request: none
  93. cors_allowed_origin: localhost
  94. etcd_servers: "{{ openshift_master_etcd_urls | join(',') }}"
  95. etcd_cafile: "{{ '/etc/origin/master/master.etcd-ca.crt' if etcd_ca_crt.stat.exists else '/etc/origin/master/ca-bundle.crt' }}"
  96. node_selector: {'node-role.kubernetes.io/master': 'true'}
  97. # apiserver_ca is defined in generate_certs.yml
  98. ca_hash: "{{ apiserver_ca.content|hash('sha1') }}"
  99. - name: Set Service Catalog API Server daemonset
  100. oc_obj:
  101. state: present
  102. namespace: "kube-service-catalog"
  103. kind: daemonset
  104. name: apiserver
  105. files:
  106. - "{{ mktemp.stdout }}/service_catalog_api_server.yml"
  107. delete_after: yes
  108. - name: Set Service Catalog API Server service
  109. oc_service:
  110. name: apiserver
  111. namespace: kube-service-catalog
  112. state: present
  113. ports:
  114. - name: secure
  115. port: 443
  116. protocol: TCP
  117. targetPort: 6443
  118. selector:
  119. app: apiserver
  120. session_affinity: None
  121. - template:
  122. src: api_server_route.j2
  123. dest: "{{ mktemp.stdout }}/service_catalog_api_route.yml"
  124. - name: Set Service Catalog API Server route
  125. oc_obj:
  126. state: present
  127. namespace: "kube-service-catalog"
  128. kind: route
  129. name: apiserver
  130. files:
  131. - "{{ mktemp.stdout }}/service_catalog_api_route.yml"
  132. delete_after: yes
  133. ## controller manager
  134. - template:
  135. src: controller_manager.j2
  136. dest: "{{ mktemp.stdout }}/controller_manager.yml"
  137. vars:
  138. image: ""
  139. cpu_limit: none
  140. memory_limit: none
  141. node_selector: {'node-role.kubernetes.io/master': 'true'}
  142. - name: Set Controller Manager deployment
  143. oc_obj:
  144. state: present
  145. namespace: "kube-service-catalog"
  146. kind: daemonset
  147. name: controller-manager
  148. files:
  149. - "{{ mktemp.stdout }}/controller_manager.yml"
  150. delete_after: yes
  151. - name: Set Controller Manager service
  152. oc_service:
  153. name: controller-manager
  154. namespace: kube-service-catalog
  155. state: present
  156. annotations:
  157. service.alpha.openshift.io/serving-cert-secret-name: controllermanager-ssl
  158. prometheus.io/scrape: "true"
  159. prometheus.io/scheme: https
  160. ports:
  161. - name: secure
  162. port: 443
  163. protocol: TCP
  164. targetPort: 6443
  165. selector:
  166. app: controller-manager
  167. session_affinity: None
  168. service_type: ClusterIP
  169. - name: Delete temp directory
  170. file:
  171. name: "{{ mktemp.stdout }}"
  172. state: absent
  173. changed_when: False
  174. - include_tasks: start.yml