---
- name: add official nginx apt key
  apt_key:
    state: present
    id: 7BD9BF62
    url: "https://nginx.org/keys/nginx_signing.key"

- name: add official nginx apt repository
  apt_repository:
    state: present
    repo: "{{ item }}"
    update_cache: yes
    filename: nginx
  with_items:
    - deb http://nginx.org/packages/debian/ stretch nginx
    - deb-src http://nginx.org/packages/debian/ stretch nginx

- name: install nginx packages
  package:
    name: nginx
    state: present

- name: install ssl-cert packages
  package:
    name: ssl-cert
    state: present

- name: Add remote server to known_hosts
  known_hosts:
    path: /etc/ssh/ssh_known_hosts
    name: zuckerwatte.ffmwu.org
    key: "{{ lookup('file', 'known_hosts') }}"

- name: create cronjob to sync ssl certs
  template:
    src: ssl_certs.cron.j2
    dest: /etc/cron.daily/ssl_certs
    mode: 0755
    owner: root
    group: root
  notify: restart cron

- name: create config snippets directory
  file:
    path: /etc/nginx/snippets
    state: directory
    mode: 0755
    owner: root
    group: root

- name: create certs directory
  file:
    path: /etc/nginx/ssl/{{ inventory_hostname_short }}.{{ http_domain_external }}
    state: directory
    mode: 0550
    owner: www-data
    group: admin

- name: create snakeoil cert
  shell: make-ssl-cert generate-default-snakeoil
  args:
    creates: /etc/ssl/certs/ssl-cert-snakeoil.pem

- name: copy snakeoil ssl key for first start
  copy:
    src: /etc/ssl/private/ssl-cert-snakeoil.key
    dest: /etc/nginx/ssl/{{ inventory_hostname_short }}.{{ http_domain_external }}/privkey.pem
    remote_src: yes
    force: no
    owner: www-data
    group: admin
    mode: 0440

- name: copy snakeoil ssl cert for first start
  copy:
    src: /etc/ssl/certs/ssl-cert-snakeoil.pem
    dest: /etc/nginx/ssl/{{ inventory_hostname_short }}.{{ http_domain_external }}/fullchain.pem
    remote_src: yes
    force: no
    owner: www-data
    group: admin
    mode: 0440

- name: sync ssl certs
  shell: /etc/cron.daily/ssl_certs

- name: copy gzip.conf to snippets
  copy:
    src: gzip.conf
    dest: /etc/nginx/snippets/gzip.conf
    mode: 0644
    owner: root
    group: root

- name: copy redirect-to-ssl.conf to snippets
  copy:
    src: redirect-to-ssl.conf
    dest: /etc/nginx/snippets/redirect-to-ssl.conf
    mode: 0644
    owner: root
    group: root

- name: write letsencrypt-acme-challenge.conf to snippets
  template:
    src: letsencrypt-acme-challenge.conf.j2
    dest: /etc/nginx/snippets/letsencrypt-acme-challenge.conf
    mode: 0644
    owner: root
    group: root

- name: write nginx configuration nginx.conf
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
    mode: 0644
    owner: root
    group: root
  notify: restart nginx

- name: write nginx configuration default.conf
  template:
    src: default.conf.j2
    dest: /etc/nginx/conf.d/default.conf
    mode: 0644
  notify: restart nginx

- name: manage html directory for static files
  file:
    path: /var/www/html/static
    state: directory
    mode: 0755

- name: copy css stylesheet
  copy:
    src: style.css
    dest: /var/www/html/static/style.css
    mode: 0644

- name: write index.html
  template:
    src: index.html.j2
    dest: /var/www/html/index.html
    mode: 0644

- name: configure systemd unit nginx
  systemd:
    name: nginx
    state: started
    enabled: yes