--- ## TODO: most of these steps could probably be moved to generic role - name: remove nginx default config file: name: /etc/nginx/sites-enabled/default state: absent notify: restart nginx - name: install nginx config snippets loop: - ssl - hsts copy: src: "{{ global_files_dir }}/common/nginx-snippets/{{ item }}.conf" dest: /etc/nginx/snippets/ notify: restart nginx - name: generate Diffie-Hellman parameters openssl_dhparam: path: /etc/ssl/dhparams.pem size: 2048 notify: restart nginx - name: install nginx config template: src: nextcloud-nginx.conf.j2 dest: /etc/nginx/sites-available/nextcloud notify: restart nginx - name: check if acme certs already exist loop: "{{ nextcloud_hostnames }}" stat: path: "/var/lib/acme/live/{{ item }}" register: acme_cert_stat - name: set acmecert_missing_hostnames variable set_fact: acmecert_missing_hostnames: "{{ acme_cert_stat.results | acme_cert_nonexistent(nextcloud_hostnames) }}" - name: link nonexistent hostnames to self-signed interim cert when: acmecert_missing_hostnames | length > 0 block: - name: get id of existing selfsigned interim certificate command: cat /var/lib/acme/.selfsigned-interim-cert changed_when: false check_mode: false register: selfsigned_interim_cert_id - name: set selfsigned_interim_cert_id variable set_fact: selfsigned_interim_cert_id: "{{ selfsigned_interim_cert_id.stdout }}" - name: link to snakeoil cert for nonexistent hostnames loop: "{{ acmecert_missing_hostnames }}" file: src: "../certs/{{ selfsigned_interim_cert_id }}" dest: "/var/lib/acme/live/{{ item }}" state: link - name: enable vhost config using acme cert file: src: ../sites-available/nextcloud dest: /etc/nginx/sites-enabled/nextcloud state: link - name: make sure nginx config has been (re)loaded meta: flush_handlers - name: get certificate using acmetool import_role: name: acmetool/cert vars: acmetool_cert_name: "{{ nextcloud_hostnames[0] }}" acmetool_cert_hostnames: "{{ nextcloud_hostnames }}"