--- - name: Create certificates directory certs to current dir file: path: "{{ certificates_local_dir }}" state: directory # Some of task are delegated to Ansible container because unavailable # version of python-pyOpenSSL - name: Generate root CA private key openssl_privatekey: path: "{{ certificates_local_dir }}/rootCA.key" size: 4096 - name: Generate an OpenSSL CSR. openssl_csr: path: "{{ certificates_local_dir }}/rootCA.csr" privatekey_path: "{{ certificates_local_dir }}/rootCA.key" organization_name: "{{ certificates.organization_name }}" state_or_province_name: "{{ certificates.state_or_province_name }}" country_name: "{{ certificates.country_name }}" locality_name: "{{ certificates.locality_name }}" basic_constraints: - CA:true basic_constraints_critical: true key_usage: - critical - digitalSignature - cRLSign - keyCertSign - name: Generate root CA certificate openssl_certificate: provider: selfsigned path: "{{ certificates_local_dir }}/rootCA.crt" csr_path: "{{ certificates_local_dir }}/rootCA.csr" privatekey_path: "{{ certificates_local_dir }}/rootCA.key" key_usage: - critical - digitalSignature - cRLSign - keyCertSign force: true notify: Restart Docker - name: Generate private Nexus key openssl_privatekey: path: "{{ certificates_local_dir }}/nexus_server.key" size: 4096 force: false - name: Generate Nexus CSR (certificate signing request) openssl_csr: path: "{{ certificates_local_dir }}/nexus_server.csr" privatekey_path: "{{ certificates_local_dir }}/nexus_server.key" organization_name: "{{ certificates.organization_name }}" state_or_province_name: "{{ certificates.state_or_province_name }}" country_name: "{{ certificates.country_name }}" locality_name: "{{ certificates.locality_name }}" common_name: registry-1.docker.io key_usage: - keyAgreement - nonRepudiation - digitalSignature - keyEncipherment - dataEncipherment extended_key_usage: - serverAuth subject_alt_name: "{{ all_simulated_hosts | map('regex_replace', '(.*)', 'DNS:\\1') | list }}" - name: Sign Nexus certificate openssl_certificate: provider: ownca path: "{{ certificates_local_dir }}/nexus_server.crt" csr_path: "{{ certificates_local_dir }}/nexus_server.csr" ownca_path: "{{ certificates_local_dir }}/rootCA.crt" ownca_privatekey_path: "{{ certificates_local_dir }}/rootCA.key" key_usage: - digitalSignature - nonRepudiation - keyEncipherment - dataEncipherment subject_alt_name: "{{ all_simulated_hosts | map('regex_replace', '(.*)', 'DNS:\\1') | list }}"