generate_hawkular_certificates.yaml 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. ---
  2. - name: generate hawkular-metrics certificates
  3. include: setup_certificate.yaml
  4. vars:
  5. component: hawkular-metrics
  6. hostnames: "hawkular-metrics,{{ openshift_metrics_hawkular_hostname }}"
  7. changed_when: no
  8. - name: generate hawkular-cassandra certificates
  9. include: setup_certificate.yaml
  10. vars:
  11. component: hawkular-cassandra
  12. hostnames: hawkular-cassandra
  13. changed_when: no
  14. - slurp: src={{ openshift_metrics_certs_dir|quote }}/hawkular-cassandra-truststore.pwd
  15. register: cassandra_truststore_password
  16. - name: check existing aliases on the hawkular-cassandra truststore
  17. shell: >
  18. keytool -noprompt -list
  19. -keystore {{ openshift_metrics_certs_dir|quote }}/hawkular-cassandra.truststore
  20. -storepass {{cassandra_truststore_password.content | b64decode }}
  21. | sed -n '7~2s/,.*$//p'
  22. register: hawkular_cassandra_truststore_aliases
  23. changed_when: false
  24. - slurp: src={{ openshift_metrics_certs_dir|quote }}/hawkular-metrics-truststore.pwd
  25. register: hawkular_truststore_password
  26. - name: check existing aliases on the hawkular-metrics truststore
  27. shell: >
  28. keytool -noprompt -list
  29. -keystore {{ openshift_metrics_certs_dir|quote }}/hawkular-metrics.truststore
  30. -storepass {{ hawkular_truststore_password.content | b64decode }}
  31. | sed -n '7~2s/,.*$//p'
  32. register: hawkular_metrics_truststore_aliases
  33. changed_when: false
  34. - name: import the hawkular metrics cert into the cassandra truststore
  35. command: >
  36. keytool -noprompt -import -v -trustcacerts
  37. -alias hawkular-metrics
  38. -file '{{ openshift_metrics_certs_dir }}/hawkular-metrics.crt'
  39. -keystore '{{ openshift_metrics_certs_dir }}/hawkular-cassandra.truststore'
  40. -storepass {{cassandra_truststore_password.content | b64decode }}
  41. when: >
  42. 'hawkular-metrics' not in
  43. hawkular_cassandra_truststore_aliases.stdout_lines
  44. - name: import the hawkular cassandra cert into the hawkular metrics truststore
  45. command: >
  46. keytool -noprompt -import -v -trustcacerts
  47. -alias hawkular-cassandra
  48. -file '{{ openshift_metrics_certs_dir }}/hawkular-cassandra.crt'
  49. -keystore '{{ openshift_metrics_certs_dir }}/hawkular-metrics.truststore'
  50. -storepass {{ hawkular_truststore_password.content | b64decode }}
  51. when: >
  52. 'hawkular-cassandra' not in
  53. hawkular_metrics_truststore_aliases.stdout_lines
  54. - name: import the hawkular cassandra cert into the cassandra truststore
  55. command: >
  56. keytool -noprompt -import -v -trustcacerts
  57. -alias hawkular-cassandra
  58. -file '{{ openshift_metrics_certs_dir }}/hawkular-cassandra.crt'
  59. -keystore '{{ openshift_metrics_certs_dir }}/hawkular-cassandra.truststore'
  60. -storepass {{cassandra_truststore_password.content | b64decode }}
  61. when: >
  62. 'hawkular-cassandra' not in
  63. hawkular_cassandra_truststore_aliases.stdout_lines
  64. - name: import the ca certificate into the cassandra truststore
  65. command: >
  66. keytool -noprompt -import -v -trustcacerts
  67. -alias '{{ item }}'
  68. -file '{{ openshift_metrics_certs_dir }}/ca.crt'
  69. -keystore '{{ openshift_metrics_certs_dir }}/hawkular-cassandra.truststore'
  70. -storepass {{cassandra_truststore_password.content | b64decode }}
  71. with_items:
  72. - ca
  73. - metricca
  74. - cassandraca
  75. when: item not in hawkular_cassandra_truststore_aliases.stdout_lines
  76. - name: import the ca certificate into the hawkular metrics truststore
  77. command: >
  78. keytool -noprompt -import -v -trustcacerts
  79. -alias '{{ item }}'
  80. -file '{{ openshift_metrics_certs_dir }}/ca.crt'
  81. -keystore '{{ openshift_metrics_certs_dir }}/hawkular-metrics.truststore'
  82. -storepass {{ hawkular_truststore_password.content | b64decode }}
  83. with_items:
  84. - ca
  85. - metricca
  86. - cassandraca
  87. when: item not in hawkular_metrics_truststore_aliases.stdout_lines
  88. - name: generate password for hawkular metrics and jgroups
  89. shell: >
  90. tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c15
  91. > '{{ openshift_metrics_certs_dir }}/{{ item }}.pwd'
  92. with_items:
  93. - hawkular-metrics
  94. - hawkular-jgroups-keystore
  95. when: not '{{ openshift_metrics_certs_dir }}/{{ item }}.pwd'|exists
  96. - name: generate htpasswd file for hawkular metrics
  97. shell: >
  98. htpasswd -ci
  99. '{{ openshift_metrics_certs_dir }}/hawkular-metrics.htpasswd' hawkular
  100. < '{{ openshift_metrics_certs_dir }}/hawkular-metrics.pwd'
  101. when: >
  102. not '{{ openshift_metrics_certs_dir }}/hawkular-metrics.htpasswd'|exists
  103. - name: generate the jgroups keystore
  104. shell: >
  105. p=$(< '{{ openshift_metrics_certs_dir }}/hawkular-jgroups-keystore.pwd' )
  106. &&
  107. keytool -genseckey -alias hawkular
  108. -keypass "$p" -storepass "$p" -keyalg Blowfish -keysize 56 -storetype JCEKS
  109. -keystore '{{ openshift_metrics_certs_dir }}/hawkular-jgroups.keystore'
  110. when: >
  111. not '{{ openshift_metrics_certs_dir }}/hawkular-jgroups.keystore'|exists
  112. - name: read files for the hawkular-metrics secret
  113. shell: >
  114. printf '%s: ' '{{ item }}'
  115. && base64 --wrap 0 '{{ openshift_metrics_certs_dir }}/{{ item }}'
  116. register: hawkular_secrets
  117. with_items:
  118. - ca.crt
  119. - hawkular-metrics.crt
  120. - hawkular-metrics.keystore
  121. - hawkular-metrics-keystore.pwd
  122. - hawkular-metrics.truststore
  123. - hawkular-metrics-truststore.pwd
  124. - hawkular-metrics.pwd
  125. - hawkular-metrics.htpasswd
  126. - hawkular-jgroups.keystore
  127. - hawkular-jgroups-keystore.pwd
  128. - hawkular-cassandra.crt
  129. - hawkular-cassandra.pem
  130. - hawkular-cassandra.keystore
  131. - hawkular-cassandra-keystore.pwd
  132. - hawkular-cassandra.truststore
  133. - hawkular-cassandra-truststore.pwd
  134. changed_when: false
  135. - set_fact:
  136. hawkular_secrets: |
  137. {{ hawkular_secrets.results|map(attribute='stdout')|join('
  138. ')|from_yaml }}
  139. - name: generate hawkular-metrics-secrets secret template
  140. template:
  141. src: secret.j2
  142. dest: "{{ mktemp.stdout }}/templates/hawkular_metrics_secrets.yaml"
  143. vars:
  144. name: hawkular-metrics-secrets
  145. labels:
  146. metrics-infra: hawkular-metrics
  147. data:
  148. hawkular-metrics.keystore: >
  149. {{ hawkular_secrets['hawkular-metrics.keystore'] }}
  150. hawkular-metrics.keystore.password: >
  151. {{ hawkular_secrets['hawkular-metrics-keystore.pwd'] }}
  152. hawkular-metrics.truststore: >
  153. {{ hawkular_secrets['hawkular-metrics.truststore'] }}
  154. hawkular-metrics.truststore.password: >
  155. {{ hawkular_secrets['hawkular-metrics-truststore.pwd'] }}
  156. hawkular-metrics.keystore.alias: "{{ 'hawkular-metrics'|b64encode }}"
  157. hawkular-metrics.htpasswd.file: >
  158. {{ hawkular_secrets['hawkular-metrics.htpasswd'] }}
  159. hawkular-metrics.jgroups.keystore: >
  160. {{ hawkular_secrets['hawkular-jgroups.keystore'] }}
  161. hawkular-metrics.jgroups.keystore.password: >
  162. {{ hawkular_secrets['hawkular-jgroups-keystore.pwd'] }}
  163. hawkular-metrics.jgroups.alias: "{{ 'hawkular'|b64encode }}"
  164. when: name not in metrics_secrets.stdout_lines
  165. changed_when: no
  166. - name: generate hawkular-metrics-certificate secret template
  167. template:
  168. src: secret.j2
  169. dest: "{{ mktemp.stdout }}/templates/hawkular_metrics_certificate.yaml"
  170. vars:
  171. name: hawkular-metrics-certificate
  172. labels:
  173. metrics-infra: hawkular-metrics
  174. data:
  175. hawkular-metrics.certificate: >
  176. {{ hawkular_secrets['hawkular-metrics.crt'] }}
  177. hawkular-metrics-ca.certificate: >
  178. {{ hawkular_secrets['ca.crt'] }}
  179. when: name not in metrics_secrets.stdout_lines
  180. changed_when: no
  181. - name: generate hawkular-metrics-account secret template
  182. template:
  183. src: secret.j2
  184. dest: "{{ mktemp.stdout }}/templates/hawkular_metrics_account.yaml"
  185. vars:
  186. name: hawkular-metrics-account
  187. labels:
  188. metrics-infra: hawkular-metrics
  189. data:
  190. hawkular-metrics.username: "{{ 'hawkular'|b64encode }}"
  191. hawkular-metrics.password: >
  192. {{ hawkular_secrets['hawkular-metrics.pwd'] }}
  193. when: name not in metrics_secrets.stdout_lines
  194. changed_when: no
  195. - name: generate cassandra secret template
  196. template:
  197. src: secret.j2
  198. dest: "{{ mktemp.stdout }}/templates/cassandra_secrets.yaml"
  199. vars:
  200. name: hawkular-cassandra-secrets
  201. labels:
  202. metrics-infra: hawkular-cassandra
  203. data:
  204. cassandra.keystore: >
  205. {{ hawkular_secrets['hawkular-cassandra.keystore'] }}
  206. cassandra.keystore.password: >
  207. {{ hawkular_secrets['hawkular-cassandra-keystore.pwd'] }}
  208. cassandra.keystore.alias: "{{ 'hawkular-cassandra'|b64encode }}"
  209. cassandra.truststore: >
  210. {{ hawkular_secrets['hawkular-cassandra.truststore'] }}
  211. cassandra.truststore.password: >
  212. {{ hawkular_secrets['hawkular-cassandra-truststore.pwd'] }}
  213. cassandra.pem: >
  214. {{ hawkular_secrets['hawkular-cassandra.pem'] }}
  215. when: name not in metrics_secrets
  216. changed_when: no
  217. - name: generate cassandra-certificate secret template
  218. template:
  219. src: secret.j2
  220. dest: "{{ mktemp.stdout }}/templates/cassandra_certificate.yaml"
  221. vars:
  222. name: hawkular-cassandra-certificate
  223. labels:
  224. metrics-infra: hawkular-cassandra
  225. data:
  226. cassandra.certificate: >
  227. {{ hawkular_secrets['hawkular-cassandra.crt'] }}
  228. cassandra-ca.certificate: >
  229. {{ hawkular_secrets['hawkular-cassandra.pem'] }}
  230. when: name not in metrics_secrets.stdout_lines
  231. changed_when: no