main.yaml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. ---
  2. - fail:
  3. msg: Only one Fluentd nodeselector key pair should be provided
  4. when: "{{ openshift_logging_fluentd_nodeselector.keys() | count }} > 1"
  5. - fail:
  6. msg: Application logs destination is required
  7. when: not openshift_logging_fluentd_app_host or openshift_logging_fluentd_app_host == ''
  8. - fail:
  9. msg: Operations logs destination is required
  10. when: not openshift_logging_fluentd_ops_host or openshift_logging_fluentd_ops_host == ''
  11. - fail:
  12. msg: Invalid deployment type, one of ['hosted', 'secure-aggregator', 'secure-host'] allowed
  13. when: not openshift_logging_fluentd_deployment_type in __allowed_fluentd_types
  14. - include: determine_version.yaml
  15. - set_fact:
  16. openshift_logging_fluentd_use_journal: "{{ openshift_hosted_logging_use_journal }}"
  17. when:
  18. - openshift_hosted_logging_use_journal is defined
  19. - openshift_logging_fluentd_use_journal is not defined
  20. - set_fact:
  21. openshift_logging_fluentd_use_journal: "{{ __fluentd_use_journal }}"
  22. when:
  23. - openshift_hosted_logging_use_journal is not defined
  24. - openshift_logging_fluentd_use_journal is not defined
  25. # allow passing in a tempdir
  26. - name: Create temp directory for doing work in
  27. command: mktemp -d /tmp/openshift-logging-ansible-XXXXXX
  28. register: mktemp
  29. changed_when: False
  30. - set_fact:
  31. tempdir: "{{ mktemp.stdout }}"
  32. - name: Create templates subdirectory
  33. file:
  34. state: directory
  35. path: "{{ tempdir }}/templates"
  36. mode: 0755
  37. changed_when: False
  38. # we want to make sure we have all the necessary components here
  39. # create service account
  40. - name: Create Fluentd service account
  41. oc_serviceaccount:
  42. state: present
  43. name: "aggregated-logging-fluentd"
  44. namespace: "{{ openshift_logging_fluentd_namespace }}"
  45. image_pull_secrets: "{{ openshift_logging_image_pull_secret }}"
  46. when: openshift_logging_image_pull_secret != ''
  47. - name: Create Fluentd service account
  48. oc_serviceaccount:
  49. state: present
  50. name: "aggregated-logging-fluentd"
  51. namespace: "{{ openshift_logging_fluentd_namespace }}"
  52. when:
  53. - openshift_logging_image_pull_secret == ''
  54. # set service account scc
  55. - name: Set privileged permissions for Fluentd
  56. oc_adm_policy_user:
  57. namespace: "{{ openshift_logging_fluentd_namespace }}"
  58. resource_kind: scc
  59. resource_name: privileged
  60. state: present
  61. user: "system:serviceaccount:{{ openshift_logging_fluentd_namespace }}:aggregated-logging-fluentd"
  62. # set service account permissions
  63. - name: Set cluster-reader permissions for Fluentd
  64. oc_adm_policy_user:
  65. namespace: "{{ openshift_logging_fluentd_namespace }}"
  66. resource_kind: cluster-role
  67. resource_name: cluster-reader
  68. state: present
  69. user: "system:serviceaccount:{{ openshift_logging_fluentd_namespace }}:aggregated-logging-fluentd"
  70. # create Fluentd configmap
  71. - template:
  72. src: fluent.conf.j2
  73. dest: "{{ tempdir }}/fluent.conf"
  74. vars:
  75. deploy_type: "{{ openshift_logging_fluentd_deployment_type }}"
  76. when: fluentd_config_contents is undefined
  77. changed_when: no
  78. - copy:
  79. src: fluentd-throttle-config.yaml
  80. dest: "{{ tempdir }}/fluentd-throttle-config.yaml"
  81. when: fluentd_throttle_contents is undefined
  82. changed_when: no
  83. - copy:
  84. src: secure-forward.conf
  85. dest: "{{ tempdir }}/secure-forward.conf"
  86. when: fluentd_securefoward_contents is undefined
  87. changed_when: no
  88. - copy:
  89. content: "{{ fluentd_config_contents }}"
  90. dest: "{{ tempdir }}/fluent.conf"
  91. when: fluentd_config_contents is defined
  92. changed_when: no
  93. - copy:
  94. content: "{{ fluentd_throttle_contents }}"
  95. dest: "{{ tempdir }}/fluentd-throttle-config.yaml"
  96. when: fluentd_throttle_contents is defined
  97. changed_when: no
  98. - copy:
  99. content: "{{ fluentd_secureforward_contents }}"
  100. dest: "{{ tempdir }}/secure-forward.conf"
  101. when: fluentd_secureforward_contents is defined
  102. changed_when: no
  103. - name: Set Fluentd configmap
  104. oc_configmap:
  105. state: present
  106. name: "logging-fluentd"
  107. namespace: "{{ openshift_logging_fluentd_namespace }}"
  108. from_file:
  109. fluent.conf: "{{ tempdir }}/fluent.conf"
  110. throttle-config.yaml: "{{ tempdir }}/fluentd-throttle-config.yaml"
  111. secure-forward.conf: "{{ tempdir }}/secure-forward.conf"
  112. # create Fluentd secret
  113. # TODO: add aggregation secrets if necessary
  114. - name: Set logging-fluentd secret
  115. oc_secret:
  116. state: present
  117. name: logging-fluentd
  118. namespace: "{{ openshift_logging_fluentd_namespace }}"
  119. files:
  120. - name: ca
  121. path: "{{ generated_certs_dir }}/ca.crt"
  122. - name: key
  123. path: "{{ generated_certs_dir }}/system.logging.fluentd.key"
  124. - name: cert
  125. path: "{{ generated_certs_dir }}/system.logging.fluentd.crt"
  126. # create Fluentd daemonset
  127. # this should change based on the type of fluentd deployment to be done...
  128. # TODO: pass in aggregation configurations
  129. - name: Generate logging-fluentd daemonset definition
  130. template:
  131. src: fluentd.j2
  132. dest: "{{ tempdir }}/templates/logging-fluentd.yaml"
  133. vars:
  134. daemonset_name: logging-fluentd
  135. daemonset_component: fluentd
  136. daemonset_container_name: fluentd-elasticsearch
  137. daemonset_serviceAccount: aggregated-logging-fluentd
  138. app_host: "{{ openshift_logging_fluentd_app_host }}"
  139. app_port: "{{ openshift_logging_fluentd_app_port }}"
  140. ops_host: "{{ openshift_logging_fluentd_ops_host }}"
  141. ops_port: "{{ openshift_logging_fluentd_ops_port }}"
  142. fluentd_nodeselector_key: "{{ openshift_logging_fluentd_nodeselector.keys()[0] }}"
  143. fluentd_nodeselector_value: "{{ openshift_logging_fluentd_nodeselector.values()[0] }}"
  144. check_mode: no
  145. changed_when: no
  146. - name: Set logging-fluentd daemonset
  147. oc_obj:
  148. state: present
  149. name: logging-fluentd
  150. namespace: "{{ openshift_logging_fluentd_namespace }}"
  151. kind: daemonset
  152. files:
  153. - "{{ tempdir }}/templates/logging-fluentd.yaml"
  154. delete_after: true
  155. # Scale up Fluentd
  156. - name: Retrieve list of Fluentd hosts
  157. oc_obj:
  158. state: list
  159. kind: node
  160. when: "'--all' in openshift_logging_fluentd_hosts"
  161. register: fluentd_hosts
  162. - name: Set openshift_logging_fluentd_hosts
  163. set_fact:
  164. openshift_logging_fluentd_hosts: "{{ fluentd_hosts.results.results[0]['items'] | map(attribute='metadata.name') | list }}"
  165. when: "'--all' in openshift_logging_fluentd_hosts"
  166. - include: label_and_wait.yaml
  167. vars:
  168. node: "{{ fluentd_host }}"
  169. with_items: "{{ openshift_logging_fluentd_hosts }}"
  170. loop_control:
  171. loop_var: fluentd_host
  172. - name: Delete temp directory
  173. file:
  174. name: "{{ tempdir }}"
  175. state: absent
  176. changed_when: False