--- - name: Determine if registry certificates must be created stat: path: "{{ openshift_master_config_dir }}/{{ item }}" with_items: - registry.crt - registry.key register: docker_registry_certificates_stat_result changed_when: false failed_when: false - name: Retrieve registry service IP command: > {{ openshift.common.client_binary }} get service docker-registry --template='{{ '{{' }} .spec.clusterIP {{ '}}' }}' register: docker_registry_service_ip changed_when: false - set_fact: docker_registry_route_hostname: "{{ 'docker-registry-default.' ~ (openshift.master.default_subdomain | default('router.default.svc.cluster.local', true)) }}" - name: Create registry certificates if they do not exist command: > {{ openshift.common.admin_binary }} ca create-server-cert --signer-cert=/etc/origin/master/ca.crt --signer-key=/etc/origin/master/ca.key --signer-serial=/etc/origin/master/ca.serial.txt --hostnames="{{ docker_registry_service_ip.stdout }},docker-registry.default.svc.cluster.local,{{ docker_registry_route_hostname }}" --cert={{ openshift_master_config_dir }}/registry.crt --key={{ openshift_master_config_dir }}/registry.key when: False in (docker_registry_certificates_stat_result.results | default([]) | oo_collect(attribute='stat.exists') | list) - name: Create the secret for the registry certificates command: > {{ openshift.common.client_binary }} secrets new registry-certificates {{ openshift_master_config_dir }}/registry.crt {{ openshift_master_config_dir }}/registry.key --config={{ openshift_hosted_kubeconfig }} -n default register: create_registry_certificates_secret changed_when: "'already exists' not in create_registry_certificates_secret.stderr" failed_when: "'already exists' not in create_registry_certificates_secret.stderr and create_registry_certificates_secret.rc != 0" - name: "Add the secret to the registry's pod service accounts" command: > {{ openshift.common.client_binary }} secrets link {{ item }} registry-certificates --config={{ openshift_hosted_kubeconfig }} -n default with_items: - registry - default - name: Determine if registry-certificates secret volume attached command: > {{ openshift.common.client_binary }} get dc/docker-registry --template='{{ '{{' }} range .spec.template.spec.volumes {{ '}}' }}{{ '{{' }} .secret.secretName {{ '}}' }}{{ '{{' }} end {{ '}}' }}' --config={{ openshift_hosted_kubeconfig }} -n default register: docker_registry_volumes changed_when: false failed_when: false - name: Attach registry-certificates secret volume command: > {{ openshift.common.client_binary }} volume dc/docker-registry --add --type=secret --secret-name=registry-certificates -m /etc/secrets --config={{ openshift_hosted_kubeconfig }} -n default when: "'registry-certificates' not in docker_registry_volumes.stdout" - name: Set registry environment variables for TLS certificate command: > {{ openshift.common.client_binary }} env dc/docker-registry REGISTRY_HTTP_TLS_CERTIFICATE=/etc/secrets/registry.crt REGISTRY_HTTP_TLS_KEY=/etc/secrets/registry.key # These commands are on a single line to preserve patch json. - name: Update registry liveness probe from HTTP to HTTPS 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" - name: Update registry readiness probe from HTTP to HTTPS 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"