import_jks_certs.yaml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. ---
  2. - name: Check for jks-generator service account
  3. command: >
  4. {{ openshift.common.client_binary }}
  5. --config={{ mktemp.stdout }}/admin.kubeconfig
  6. -n {{openshift_metrics_project}}
  7. get serviceaccount/jks-generator --no-headers
  8. register: serviceaccount_result
  9. ignore_errors: yes
  10. when: not ansible_check_mode
  11. changed_when: no
  12. - name: Create jks-generator service account
  13. command: >
  14. {{ openshift.common.client_binary }}
  15. --config={{ mktemp.stdout }}/admin.kubeconfig
  16. -n {{openshift_metrics_project}}
  17. create serviceaccount jks-generator
  18. when: not ansible_check_mode and "not found" in serviceaccount_result.stderr
  19. - name: Check for hostmount-anyuid scc entry
  20. command: >
  21. {{ openshift.common.client_binary }}
  22. --config={{ mktemp.stdout }}/admin.kubeconfig
  23. get scc hostmount-anyuid
  24. -o jsonpath='{.users}'
  25. register: scc_result
  26. when: not ansible_check_mode
  27. changed_when: no
  28. - name: Add to hostmount-anyuid scc
  29. command: >
  30. {{ openshift.common.admin_binary }}
  31. --config={{ mktemp.stdout }}/admin.kubeconfig
  32. -n {{openshift_metrics_project}}
  33. policy add-scc-to-user hostmount-anyuid
  34. -z jks-generator
  35. when:
  36. - not ansible_check_mode
  37. - scc_result.stdout.find("system:serviceaccount:{{openshift_metrics_project}}:jks-generator") == -1
  38. - name: Copy JKS generation script
  39. copy:
  40. src: import_jks_certs.sh
  41. dest: "{{openshift_metrics_certs_dir}}/import_jks_certs.sh"
  42. check_mode: no
  43. - slurp: src={{ openshift_metrics_certs_dir }}/hawkular-metrics-keystore.pwd
  44. register: metrics_keystore_password
  45. - slurp: src={{ openshift_metrics_certs_dir }}/hawkular-cassandra-keystore.pwd
  46. register: cassandra_keystore_password
  47. - slurp: src={{ openshift_metrics_certs_dir }}/hawkular-jgroups-keystore.pwd
  48. register: jgroups_keystore_password
  49. - name: Generate JKS pod template
  50. template:
  51. src: jks_pod.j2
  52. dest: "{{mktemp.stdout}}/jks_pod.yaml"
  53. vars:
  54. metrics_keystore_passwd: "{{metrics_keystore_password.content}}"
  55. cassandra_keystore_passwd: "{{cassandra_keystore_password.content}}"
  56. metrics_truststore_passwd: "{{hawkular_truststore_password.content}}"
  57. cassandra_truststore_passwd: "{{cassandra_truststore_password.content}}"
  58. jgroups_passwd: "{{jgroups_keystore_password.content}}"
  59. check_mode: no
  60. changed_when: no
  61. - stat: path="{{openshift_metrics_certs_dir}}/hawkular-metrics.keystore"
  62. register: metrics_keystore
  63. check_mode: no
  64. - stat: path="{{openshift_metrics_certs_dir}}/hawkular-cassandra.keystore"
  65. register: cassandra_keystore
  66. check_mode: no
  67. - stat: path="{{openshift_metrics_certs_dir}}/hawkular-cassandra.truststore"
  68. register: cassandra_truststore
  69. check_mode: no
  70. - stat: path="{{openshift_metrics_certs_dir}}/hawkular-metrics.truststore"
  71. register: metrics_truststore
  72. check_mode: no
  73. - stat: path="{{openshift_metrics_certs_dir}}/hawkular-jgroups.keystore"
  74. register: jgroups_keystore
  75. check_mode: no
  76. - name: create JKS pod
  77. command: >
  78. {{ openshift.common.client_binary }}
  79. --config={{ mktemp.stdout }}/admin.kubeconfig
  80. -n {{openshift_metrics_project}}
  81. create -f {{mktemp.stdout}}/jks_pod.yaml
  82. -o name
  83. register: podoutput
  84. check_mode: no
  85. when: not metrics_keystore.stat.exists or
  86. not metrics_truststore.stat.exists or
  87. not cassandra_keystore.stat.exists or
  88. not cassandra_truststore.stat.exists or
  89. not jgroups_keystore.stat.exists
  90. - command: >
  91. {{ openshift.common.client_binary }}
  92. --config={{ mktemp.stdout }}/admin.kubeconfig
  93. -n {{openshift_metrics_project}}
  94. get {{podoutput.stdout}}
  95. -o jsonpath='{.status.phase}'
  96. register: result
  97. until: result.stdout.find("Succeeded") != -1
  98. retries: 5
  99. delay: 10
  100. changed_when: no
  101. when: not metrics_keystore.stat.exists or
  102. not metrics_truststore.stat.exists or
  103. not cassandra_keystore.stat.exists or
  104. not cassandra_truststore.stat.exists or
  105. not jgroups_keystore.stat.exists