secure.yml 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. ---
  2. - name: Determine if registry certificates must be created
  3. stat:
  4. path: "{{ openshift_master_config_dir }}/{{ item }}"
  5. with_items:
  6. - registry.crt
  7. - registry.key
  8. register: docker_registry_certificates_stat_result
  9. changed_when: false
  10. failed_when: false
  11. - name: Retrieve registry service IP
  12. command: >
  13. {{ openshift.common.client_binary }} get service docker-registry
  14. --template='{{ '{{' }} .spec.clusterIP {{ '}}' }}'
  15. register: docker_registry_service_ip
  16. changed_when: false
  17. - set_fact:
  18. docker_registry_route_hostname: "{{ 'docker-registry-default.' ~ (openshift.master.default_subdomain | default('router.default.svc.cluster.local', true)) }}"
  19. - name: Create registry certificates if they do not exist
  20. command: >
  21. {{ openshift.common.admin_binary }} ca create-server-cert
  22. --signer-cert=/etc/origin/master/ca.crt
  23. --signer-key=/etc/origin/master/ca.key
  24. --signer-serial=/etc/origin/master/ca.serial.txt
  25. --hostnames="{{ docker_registry_service_ip.stdout }},docker-registry.default.svc.cluster.local,{{ docker_registry_route_hostname }}"
  26. --cert={{ openshift_master_config_dir }}/registry.crt
  27. --key={{ openshift_master_config_dir }}/registry.key
  28. when: False in (docker_registry_certificates_stat_result.results | default([]) | oo_collect(attribute='stat.exists') | list)
  29. - name: Create the secret for the registry certificates
  30. command: >
  31. {{ openshift.common.client_binary }} secrets new registry-certificates
  32. {{ openshift_master_config_dir }}/registry.crt
  33. {{ openshift_master_config_dir }}/registry.key
  34. --config={{ openshift_hosted_kubeconfig }}
  35. -n default
  36. register: create_registry_certificates_secret
  37. changed_when: "'already exists' not in create_registry_certificates_secret.stderr"
  38. failed_when: "'already exists' not in create_registry_certificates_secret.stderr and create_registry_certificates_secret.rc != 0"
  39. - name: "Add the secret to the registry's pod service accounts"
  40. command: >
  41. {{ openshift.common.client_binary }} secrets link {{ item }} registry-certificates
  42. --config={{ openshift_hosted_kubeconfig }}
  43. -n default
  44. with_items:
  45. - registry
  46. - default
  47. - name: Determine if registry-certificates secret volume attached
  48. command: >
  49. {{ openshift.common.client_binary }} get dc/docker-registry
  50. --template='{{ '{{' }} range .spec.template.spec.volumes {{ '}}' }}{{ '{{' }} .secret.secretName {{ '}}' }}{{ '{{' }} end {{ '}}' }}'
  51. --config={{ openshift_hosted_kubeconfig }}
  52. -n default
  53. register: docker_registry_volumes
  54. changed_when: false
  55. failed_when: false
  56. - name: Attach registry-certificates secret volume
  57. command: >
  58. {{ openshift.common.client_binary }} volume dc/docker-registry --add --type=secret
  59. --secret-name=registry-certificates
  60. -m /etc/secrets
  61. --config={{ openshift_hosted_kubeconfig }}
  62. -n default
  63. when: "'registry-certificates' not in docker_registry_volumes.stdout"
  64. - name: Set registry environment variables for TLS certificate
  65. command: >
  66. {{ openshift.common.client_binary }} env dc/docker-registry
  67. REGISTRY_HTTP_TLS_CERTIFICATE=/etc/secrets/registry.crt
  68. REGISTRY_HTTP_TLS_KEY=/etc/secrets/registry.key
  69. # These commands are on a single line to preserve patch json.
  70. - name: Update registry liveness probe from HTTP to HTTPS
  71. command: "{{ openshift.common.client_binary }} patch dc/docker-registry --api-version=v1 -p '{\"spec\":{\"template\":{\"spec\":{\"containers\":[{\"name\":\"registry\",\"livenessProbe\":{\"httpGet\":{\"scheme\":\"HTTPS\"}}}]}}}}' --config={{ openshift_hosted_kubeconfig }} -n default"
  72. - name: Update registry readiness probe from HTTP to HTTPS
  73. command: "{{ openshift.common.client_binary }} patch dc/docker-registry --api-version=v1 -p '{\"spec\":{\"template\":{\"spec\":{\"containers\":[{\"name\":\"registry\",\"readinessProbe\":{\"httpGet\":{\"scheme\":\"HTTPS\"}}}]}}}}' --config={{ openshift_hosted_kubeconfig }} -n default"