- name: provision ssl host private key openssl_privatekey: path: "{{ item.server.ssl_certificate_key }}" - name: generate certificate signing request command: > openssl req -new -sha256 -nodes -key {{ item.server.ssl_certificate_key }} -out {{ item.letsencrypt.ssl_csr | default(item.server.ssl_certificate~".csr") }} -subj "/C={{ item.letsencrypt.ssl_country | default(letsencrypt_ssl_country) }}/ST={{ item.letsencrypt.ssl_state | default(letsencrypt_ssl_state) }}/L{{ item.letsencrypt.ssl_loc | default(letsencrypt_ssl_loc) }}/O={{ item.letsencrypt.ssl_org | default(letsencrypt_ssl_org) }}/CN={{ item.letsencrypt.ssl_cn | default(item.server.server_name) }}/emailAddress={{ item.letsencrypt.ssl_email | default(letsencrypt_ssl_email) }}" - name: get challenge(s) from letsencrypt server letsencrypt: account_key: "{{ letsencrypt_account_key }}" csr: "{{ item.letsencrypt.ssl_csr | default(item.server.ssl_certificate~'.csr') }}" dest: "{{ item.server.ssl_certificate }}" acme_directory: "{{ letsencrypt_acme_dir | default(omit) }}" register: letsencrypt_challenge - name: store challenge(s) in local dir include: store_challenge.yaml when: letsencrypt_challenge|changed - pause: prompt: "LETSENCRYPT REMOTE VERIFICATION REQUIRED!. Perform any action to make server reachable from outside, then press ENTER to start verification" when: letsencrypt_challenge|changed and letsencrypt_pause|bool - name: get signed certificate(s) from letsencrypt server letsencrypt: account_key: "{{ letsencrypt_account_key }}" csr: "{{ item.letsencrypt.ssl_csr | default(item.server.ssl_certificate~'.csr') }}" dest: "{{ item.server.ssl_certificate }}" acme_directory: "{{ letsencrypt_acme_dir | default(omit) }}" data: "{{ letsencrypt_challenge }}" notify: restart nginx