| --- |
| # Some of task are delegated to Ansible container because unavailable |
| # version of python-pyOpenSSL |
| - name: Generate root CA private key |
| openssl_privatekey: |
| path: /certs/rootCA.key |
| size: 4096 |
| delegate_to: localhost |
| |
| - name: Generate an OpenSSL CSR. |
| openssl_csr: |
| path: /certs/rootCA.csr |
| privatekey_path: /certs/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: yes |
| key_usage: |
| - critical |
| - digitalSignature |
| - cRLSign |
| - keyCertSign |
| delegate_to: localhost |
| |
| - name: Generate root CA certificate |
| openssl_certificate: |
| provider: selfsigned |
| path: /certs/rootCA.crt |
| csr_path: /certs/rootCA.csr |
| privatekey_path: /certs/rootCA.key |
| key_usage: |
| - critical |
| - digitalSignature |
| - cRLSign |
| - keyCertSign |
| force: yes |
| delegate_to: localhost |
| notify: Restart Docker |
| |
| - name: Generate private Nexus key |
| openssl_privatekey: |
| path: /certs/nexus_server.key |
| size: 4096 |
| force: False |
| delegate_to: localhost |
| |
| - name: Generate Nexus CSR (certificate signing request) |
| openssl_csr: |
| path: /certs/nexus_server.csr |
| privatekey_path: /certs/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: |
| "{{ simulated_hosts | map('regex_replace', '(.*)', 'DNS:\\1') | list }}" |
| delegate_to: localhost |
| |
| - name: Generate v3 extension config file |
| template: |
| src: v3.ext.j2 |
| dest: /certs/v3.ext |
| delegate_to: localhost |
| |
| # Signing certificate is added to Ansible in version 2.7 (release date 04.10.2018) |
| # Currently using 2.6.3 |
| - name: Sign Nexus certificate |
| command: > |
| openssl |
| x509 |
| -req |
| -in /certs/nexus_server.csr |
| -extfile /certs/v3.ext |
| -CA /certs/rootCA.crt |
| -CAkey /certs/rootCA.key |
| -CAcreateserial |
| -out /certs/nexus_server.crt |
| -days 3650 |
| -sha256 |
| delegate_to: localhost |
| |
| - name: Upload certificates to infrastructure server |
| copy: |
| src: /certs |
| directory_mode: yes |
| dest: "{{ app_data_path }}/" |
| |
| - import_tasks: upload_root_ca.yml |