--- # Inputs: # - domain_name (e.g. freifunk.lu) # - all_domain_names (e.g. -d freifunk.lu -d www.freifunk.lu) # - reload_command (e.g. systemctl reload nginx) - name: Make sure bogus certificate + group exists ansible.builtin.apt: name: ssl-cert state: present become: true - name: Check if certificate already exists ansible.builtin.stat: path: "/root/.acme.sh/{{ domain_name }}_ecc" become: true register: acme_cert_dir - name: Pre-copy cert files ansible.builtin.copy: remote_src: true src: "/etc/ssl/certs/ssl-cert-snakeoil.pem" dest: "/etc/ssl/certs/ssl-{{ item }}-{{ domain_name }}.pem" mode: '644' owner: 'root' group: 'root' become: true loop: - cert - ca - fullchain when: not acme_cert_dir.stat.exists - name: Pre-copy key file ansible.builtin.copy: remote_src: true src: "/etc/ssl/private/ssl-cert-snakeoil.key" dest: "/etc/ssl/private/ssl-cert-{{ domain_name }}.pem" mode: '640' owner: 'root' group: 'ssl-cert' become: true when: not acme_cert_dir.stat.exists - name: Issue certificate ansible.builtin.command: cmd: "/root/.acme.sh/acme.sh --issue --keylength ec-384 -w /var/www/acme_root/ {{ all_domain_names }}" become: true when: not acme_cert_dir.stat.exists register: cert_issued changed_when: cert_issued.rc == 0 - name: Deploy certs and keys ansible.builtin.command: cmd: "/root/.acme.sh/acme.sh --install-cert --ecc -d {{ domain_name }} --cert-file \"/etc/ssl/certs/ssl-cert-{{ domain_name }}.pem\" --key-file \"/etc/ssl/private/ssl-cert-{{ domain_name }}.pem\" --ca-file \"/etc/ssl/certs/ssl-ca-{{ domain_name }}.pem\" --fullchain-file \"/etc/ssl/certs/ssl-fullchain-{{ domain_name }}.pem\" --reloadcmd \"{{ reload_command }}\"" become: true register: cert_deployed changed_when: cert_deployed.rc == 0