generate_certs.yaml 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. ---
  2. # we will ensure our secrets and configmaps are set up here first
  3. - name: Checking for ca.key
  4. stat: path="{{generated_certs_dir}}/ca.key"
  5. register: ca_key_file
  6. check_mode: no
  7. - name: Checking for ca.crt
  8. stat: path="{{generated_certs_dir}}/ca.crt"
  9. register: ca_cert_file
  10. check_mode: no
  11. - name: Checking for ca.serial.txt
  12. stat: path="{{generated_certs_dir}}/ca.serial.txt"
  13. register: ca_serial_file
  14. check_mode: no
  15. - name: Generate certificates
  16. command: >
  17. {{ openshift.common.admin_binary }} --config={{ mktemp.stdout }}/admin.kubeconfig ca create-signer-cert
  18. --key={{generated_certs_dir}}/ca.key --cert={{generated_certs_dir}}/ca.crt
  19. --serial={{generated_certs_dir}}/ca.serial.txt --name=logging-signer-test
  20. check_mode: no
  21. when:
  22. - not ca_key_file.stat.exists
  23. - not ca_cert_file.stat.exists
  24. - not ca_serial_file.stat.exists
  25. - name: Checking for signing.conf
  26. stat: path="{{generated_certs_dir}}/signing.conf"
  27. register: signing_conf_file
  28. check_mode: no
  29. - block:
  30. - copy: src=signing.conf dest={{generated_certs_dir}}/signing.conf
  31. check_mode: no
  32. - lineinfile: "dest={{generated_certs_dir}}/signing.conf regexp='# Top dir$' line='dir = {{generated_certs_dir}} # Top dir'"
  33. check_mode: no
  34. when:
  35. - not signing_conf_file.stat.exists
  36. - include: procure_server_certs.yaml
  37. loop_control:
  38. loop_var: cert_info
  39. with_items:
  40. - procure_component: kibana
  41. - procure_component: kibana-ops
  42. - procure_component: kibana-internal
  43. hostnames: "kibana, kibana-ops, {{openshift_logging_kibana_hostname}}, {{openshift_logging_kibana_ops_hostname}}"
  44. # - include: procure_server_certs.yaml
  45. # vars:
  46. # - procure_component: kibana
  47. # - include: procure_server_certs.yaml
  48. # vars:
  49. # - procure_component: kibana-ops
  50. # - include: procure_server_certs.yaml
  51. # vars:
  52. # - procure_component: kibana-internal
  53. # - hostnames: "kibana, kibana-ops, {{openshift_logging_kibana_hostname}}, {{openshift_logging_kibana_ops_hostname}}"
  54. - name: Copy proxy TLS configuration file
  55. copy: src=server-tls.json dest={{generated_certs_dir}}/server-tls.json
  56. when: server_tls_json is undefined
  57. check_mode: no
  58. - name: Copy proxy TLS configuration file
  59. copy: content="{{server_tls_json}}" dest={{generated_certs_dir}}/server-tls.json
  60. when: server_tls_json is defined
  61. check_mode: no
  62. - name: Checking for ca.db
  63. stat: path="{{generated_certs_dir}}/ca.db"
  64. register: ca_db_file
  65. check_mode: no
  66. - copy: content="" dest={{generated_certs_dir}}/ca.db
  67. check_mode: no
  68. when:
  69. - not ca_db_file.stat.exists
  70. - name: Checking for ca.crt.srl
  71. stat: path="{{generated_certs_dir}}/ca.crt.srl"
  72. register: ca_cert_srl_file
  73. check_mode: no
  74. - copy: content="" dest={{generated_certs_dir}}/ca.crt.srl
  75. check_mode: no
  76. when:
  77. - not ca_cert_srl_file.stat.exists
  78. - name: Generate PEM certs
  79. include: generate_pems.yaml component={{node_name}}
  80. with_items:
  81. - system.logging.fluentd
  82. - system.logging.kibana
  83. - system.logging.curator
  84. - system.admin
  85. loop_control:
  86. loop_var: node_name
  87. - shell: certs=""; for cert in $(echo logging-es{,-ops}); do certs=$certs,dns:$cert; done; echo $certs
  88. register: elasticsearch_certs
  89. check_mode: no
  90. - shell: certs=""; for cert in $(echo logging-es{,-ops}{,-cluster}{,.logging.svc.cluster.local}); do certs=$certs,dns:$cert; done; echo $certs
  91. register: logging_es_certs
  92. check_mode: no
  93. #- shell: index=2; certs=""; for cert in $(echo logging-es{,-ops}); do certs=$certs,DNS.$index=$cert; index=$(($index+1)); done; echo $certs
  94. # register: elasticsearch_certs
  95. # check_mode: no
  96. #- shell: index=2; certs=""; for cert in $(echo logging-es{,-ops}{,-cluster}{,.logging.svc.cluster.local}); do certs=$certs,DNS.$index=$cert; index=$(($index+1)); done; echo $certs
  97. # register: logging_es_certs
  98. # check_mode: no
  99. - name: Generate PKCS12 chains
  100. # include: generate_pkcs12.yaml component='system.admin'
  101. include: generate_jks_chain.yaml component='system.admin'
  102. - name: Generate PKCS12 chains
  103. # include: generate_pkcs12.yaml component={{node.name}} oid={{node.oid | default(False)}} chain_certs={{node.certs}}
  104. include: generate_jks_chain.yaml component={{node.name}} oid={{node.oid | default(False)}} chain_certs={{node.certs}}
  105. with_items:
  106. - {name: 'elasticsearch', oid: True, certs: '{{elasticsearch_certs.stdout}}'}
  107. - {name: 'logging-es', certs: '{{logging_es_certs.stdout}}'}
  108. loop_control:
  109. loop_var: node
  110. # This should be handled within the ES image instead... ---
  111. #- name: Copy jks script
  112. # copy:
  113. # src: generate-jks.sh
  114. # dest: "{{etcd_generated_certs_dir}}/logging"
  115. #- name: Generate JKS chains
  116. # template:
  117. # src: job.j2
  118. # dest: "{{mktemp.stdout}}/jks_job.yaml"
  119. #- name: kick off job
  120. # shell: >
  121. # {{ openshift.common.client_binary }} --config={{ mktemp.stdout }}/admin.kubeconfig create -f {{mktemp.stdout}}/jks_job.yaml -n {{logging_namespace}}
  122. # register: podoutput
  123. #- shell: >
  124. # echo {{podoutput.stdout}} | awk -v podname='\\\".*\\\"' '{print $2}'
  125. # register: podname
  126. #- action: shell >
  127. # {{ openshift.common.client_binary }} --config={{ mktemp.stdout }}/admin.kubeconfig oc get pod/{{podname.stdout}} -o go-template='{{ '{{' }}index .status "phase"{{ '}}' }}' -n {{logging_namespace}}
  128. # register: result
  129. # until: result.stdout.find("Succeeded") != -1
  130. # retries: 5
  131. # delay: 10
  132. # --- This should be handled within the ES image instead...
  133. - name: Generate proxy session
  134. shell: tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 200
  135. register: session_secret
  136. check_mode: no
  137. - name: Generate oauth client secret
  138. shell: tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 64
  139. register: oauth_secret
  140. check_mode: no