main.yaml 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. ---
  2. - fail:
  3. msg: Application logs destination is required
  4. when: not openshift_logging_mux_app_host or openshift_logging_mux_app_host == ''
  5. - fail:
  6. msg: Operations logs destination is required
  7. when: not openshift_logging_mux_ops_host or openshift_logging_mux_ops_host == ''
  8. - fail:
  9. msg: openshift_logging_mux_default_namespaces is not supported; use openshift_logging_mux_namespaces instead.
  10. when: openshift_logging_mux_default_namespaces is defined
  11. - name: Ensure that Logging Mux has nodes to run on
  12. import_role:
  13. name: openshift_control_plane
  14. tasks_from: ensure_nodes_matching_selector.yml
  15. vars:
  16. openshift_master_ensure_nodes_selector: "{{ openshift_logging_mux_nodeselector | map_to_pairs }}"
  17. openshift_master_ensure_nodes_service: Logging Mux
  18. - name: Set default image variables based on openshift_deployment_type
  19. include_vars: "{{ var_file_name }}"
  20. with_first_found:
  21. - "{{ openshift_deployment_type }}.yml"
  22. - "default_images.yml"
  23. loop_control:
  24. loop_var: var_file_name
  25. - name: Set mux image facts
  26. set_fact:
  27. openshift_logging_mux_image_prefix: "{{ openshift_logging_mux_image_prefix | default(__openshift_logging_mux_image_prefix) }}"
  28. openshift_logging_mux_image_version: "{{ openshift_logging_mux_image_version | default(__openshift_logging_mux_image_version) }}"
  29. # allow passing in a tempdir
  30. - name: Create temp directory for doing work in
  31. command: mktemp -d /tmp/openshift-logging-ansible-XXXXXX
  32. register: mktemp
  33. changed_when: False
  34. - set_fact:
  35. tempdir: "{{ mktemp.stdout }}"
  36. - name: Create templates subdirectory
  37. file:
  38. state: directory
  39. path: "{{ tempdir }}/templates"
  40. mode: 0755
  41. changed_when: False
  42. # we want to make sure we have all the necessary components here
  43. # create service account
  44. - name: Create Mux service account
  45. oc_serviceaccount:
  46. state: present
  47. name: "aggregated-logging-mux"
  48. namespace: "{{ openshift_logging_mux_namespace }}"
  49. image_pull_secrets: "{{ openshift_logging_image_pull_secret }}"
  50. when: openshift_logging_image_pull_secret != ''
  51. - name: Create Mux service account
  52. oc_serviceaccount:
  53. state: present
  54. name: "aggregated-logging-mux"
  55. namespace: "{{ openshift_logging_mux_namespace }}"
  56. when:
  57. - openshift_logging_image_pull_secret == ''
  58. # set service account scc
  59. - name: Set privileged permissions for Mux
  60. oc_adm_policy_user:
  61. namespace: "{{ openshift_logging_mux_namespace }}"
  62. resource_kind: scc
  63. resource_name: privileged
  64. state: present
  65. user: "system:serviceaccount:{{ openshift_logging_mux_namespace }}:aggregated-logging-mux"
  66. # set service account permissions
  67. - name: Set cluster-reader permissions for Mux
  68. oc_adm_policy_user:
  69. namespace: "{{ openshift_logging_mux_namespace }}"
  70. resource_kind: cluster-role
  71. resource_name: cluster-reader
  72. state: present
  73. user: "system:serviceaccount:{{ openshift_logging_mux_namespace }}:aggregated-logging-mux"
  74. # set hostmount-anyuid permissions
  75. - name: Set hostmount-anyuid permissions for Mux
  76. oc_adm_policy_user:
  77. namespace: "{{ openshift_logging_mux_namespace }}"
  78. resource_kind: scc
  79. resource_name: hostmount-anyuid
  80. state: present
  81. user: "system:serviceaccount:{{ openshift_logging_mux_namespace }}:aggregated-logging-mux"
  82. # create Mux configmap
  83. - copy:
  84. src: "{{ __base_file_dir }}/fluent.conf"
  85. dest: "{{mktemp.stdout}}/fluent-mux.conf"
  86. changed_when: no
  87. - copy:
  88. src: "{{ __base_file_dir }}/secure-forward.conf"
  89. dest: "{{mktemp.stdout}}/secure-forward-mux.conf"
  90. changed_when: no
  91. - import_role:
  92. name: openshift_logging
  93. tasks_from: patch_configmap_files.yaml
  94. vars:
  95. configmap_name: "logging-mux"
  96. configmap_namespace: "{{ openshift_logging_mux_namespace }}"
  97. configmap_file_names:
  98. - current_file: "fluent.conf"
  99. new_file: "{{ tempdir }}/fluent-mux.conf"
  100. - current_file: "secure-forward.conf"
  101. new_file: "{{ tempdir }}/secure-forward-mux.conf"
  102. - name: Set Mux configmap
  103. oc_configmap:
  104. state: present
  105. name: "logging-mux"
  106. namespace: "{{ openshift_logging_mux_namespace }}"
  107. from_file:
  108. fluent.conf: "{{ tempdir }}/fluent-mux.conf"
  109. secure-forward.conf: "{{ tempdir }}/secure-forward-mux.conf"
  110. # create Mux secret
  111. - name: Set logging-mux secret
  112. oc_secret:
  113. state: present
  114. name: logging-mux
  115. namespace: "{{ openshift_logging_mux_namespace }}"
  116. files:
  117. - name: ca
  118. path: "{{ generated_certs_dir }}/ca.crt"
  119. - name: key
  120. path: "{{ generated_certs_dir }}/system.logging.mux.key"
  121. - name: cert
  122. path: "{{ generated_certs_dir }}/system.logging.mux.crt"
  123. - name: shared_key
  124. path: "{{ generated_certs_dir }}/mux_shared_key"
  125. # services
  126. - name: Set logging-mux service for external communication
  127. oc_service:
  128. state: present
  129. name: "logging-mux"
  130. namespace: "{{ openshift_logging_mux_namespace }}"
  131. selector:
  132. component: mux
  133. provider: openshift
  134. labels:
  135. logging-infra: 'support'
  136. ports:
  137. - name: mux-forward
  138. port: "{{ openshift_logging_mux_port }}"
  139. targetPort: "mux-forward"
  140. external_ips:
  141. - "{{ openshift_logging_mux_external_address }}"
  142. when: openshift_logging_mux_allow_external | bool
  143. - name: Set logging-mux service for internal communication
  144. oc_service:
  145. state: present
  146. name: "logging-mux"
  147. namespace: "{{ openshift_logging_mux_namespace }}"
  148. selector:
  149. component: mux
  150. provider: openshift
  151. labels:
  152. logging-infra: 'support'
  153. ports:
  154. - name: mux-forward
  155. port: "{{ openshift_logging_mux_port }}"
  156. targetPort: "mux-forward"
  157. when: not openshift_logging_mux_allow_external | bool
  158. # create Mux DC
  159. - name: Generating mux deploymentconfig
  160. template:
  161. src: "{{ __base_file_dir }}/mux.j2"
  162. dest: "{{mktemp.stdout}}/templates/logging-mux-dc.yaml"
  163. vars:
  164. component: mux
  165. logging_component: mux
  166. deploy_name: "logging-{{ component }}"
  167. image: "{{ openshift_logging_mux_image_prefix }}logging-fluentd:{{ openshift_logging_mux_image_version }}"
  168. es_host: "{{ openshift_logging_mux_app_host }}"
  169. es_port: "{{ openshift_logging_mux_app_port }}"
  170. ops_host: "{{ openshift_logging_mux_ops_host }}"
  171. ops_port: "{{ openshift_logging_mux_ops_port }}"
  172. mux_cpu_limit: "{{ openshift_logging_mux_cpu_limit }}"
  173. mux_cpu_request: "{{ openshift_logging_mux_cpu_request | min_cpu(openshift_logging_mux_cpu_limit | default(none)) }}"
  174. mux_memory_limit: "{{ openshift_logging_mux_memory_limit }}"
  175. mux_replicas: "{{ openshift_logging_mux_replicas | default(1) }}"
  176. mux_node_selector: "{{ openshift_logging_mux_nodeselector | default({}) }}"
  177. check_mode: no
  178. changed_when: no
  179. - name: Create Mux PVC
  180. oc_pvc:
  181. state: present
  182. name: "{{ openshift_logging_mux_file_buffer_pvc_name }}"
  183. namespace: "{{ openshift_logging_mux_namespace }}"
  184. volume_capacity: "{{ openshift_logging_mux_file_buffer_pvc_size }}"
  185. access_modes: "{{ openshift_logging_mux_file_buffer_pvc_access_modes | list }}"
  186. selector: "{{ openshift_logging_mux_file_buffer_pvc_pv_selector }}"
  187. storage_class_name: "{{ openshift_logging_mux_file_buffer_pvc_storage_class_name | default('', true) }}"
  188. when:
  189. - openshift_logging_mux_file_buffer_storage_type == "pvc"
  190. - name: Set logging-mux DC
  191. oc_obj:
  192. state: present
  193. name: logging-mux
  194. namespace: "{{ openshift_logging_mux_namespace }}"
  195. kind: dc
  196. files:
  197. - "{{ tempdir }}/templates/logging-mux-dc.yaml"
  198. delete_after: true
  199. - name: Add mux namespaces
  200. oc_project:
  201. state: present
  202. name: "{{ item }}"
  203. node_selector: ""
  204. with_items: "{{ openshift_logging_mux_namespaces }}"
  205. - name: Delete temp directory
  206. file:
  207. name: "{{ tempdir }}"
  208. state: absent
  209. changed_when: False