- ---
- - include: service.yaml
- # static: yes # see static include issue: https://github.com/ansible/ansible/issues/13485
- vars:
- service_name: nginx
- service_packages:
- - nginx
-
- - name: install letsencrypt dependencies
- apt:
- name: "{{ item }}"
- state: present
- update_cache: yes
- cache_valid_time: 3600
- with_items: "{{ letsencrypt_requirements }}"
- when: letsencrypt|bool
-
- - name: provision directories for site specific configurations
- file:
- path: /etc/nginx/{{ item }}
- state: directory
- owner: root
- group: root
- mode: 0755
- with_items:
- - "sites-available"
- - "sites-enabled"
-
- - name: provision letsencrypt challenge folder
- file:
- path: "{{ letsencrypt_challenge_webroot }}/.well-known/acme-challenge"
- state: directory
- owner: root
- group: root
- mode: 0755
- when: letsencrypt|bool
-
- - name: upload nginx configuration
- template:
- src: nginx.conf.j2
- dest: /etc/nginx/nginx.conf
- - name: disable nginx default configuration
- file:
- path: /etc/nginx/sites-enabled/default
- state: absent
- notify: restart nginx
-
- - name: install php-fpm
- apt:
- name: "{{ item }}"
- state: present
- update_cache: yes
- cache_valid_time: 3600
- with_items:
- - php-fpm
- when: php | bool
- notify:
- - restart nginx
-
- - name: upload nginx proxy configuration
- template:
- src: proxy_nginx.j2
- dest: "/etc/nginx/sites-available/{{ config_name }}"
- when: is_proxy | bool
- notify:
- - enable nginx configuration
- - restart nginx
-
- - name: add nginx configuration custom templates
- template:
- src: "roles/{{ parent_role_path }}/templates/{{ item }}.conf.nginx.j2"
- dest: "/etc/nginx/sites-available/{{ item }}.conf"
- with_items: "{{ config_names }}"
- when: config_names is defined and item|bool
-
- - name: enable nginx configuration custom templates
- file:
- src: "/etc/nginx/sites-available/{{ item }}.conf"
- dest: "/etc/nginx/sites-enabled/{{ item }}.conf"
- state: link
- with_items: "{{ config_names }}"
- when: config_names is defined and item|bool
- notify: restart nginx
-
- - name: generate nginx configurations from standard template
- template:
- src: site.j2
- dest: "/etc/nginx/sites-available/{{ item.server.file_name }}"
- with_items: "{{ nginx_sites }}"
- when: nginx_sites is defined and nginx_sites
- register: nginx_gen_conf
- notify: restart nginx
-
- - name: disable ssl configurations with pending cert issuing
- file:
- path: "/etc/nginx/sites-enabled/{{ item.item.server.file_name }}"
- state: absent
- with_items: "{{ nginx_gen_conf.results }}"
- when:
- - item | changed
- - item.item.letsencrypt is defined
-
- - name: enable nginx configurations used for letsencrypt challenge
- file:
- path: "/etc/nginx/sites-enabled/{{ item.server.file_name }}"
- state: link
- src: "/etc/nginx/sites-available/{{ item.server.file_name }}"
- with_items: "{{ nginx_sites }}"
- when: letsencrypt|bool and item.use_for_challenge is defined and item.use_for_challenge|bool and nginx_sites is defined and nginx_sites
-
- - name: restart nginx to start enabled configurations used for letsencrypt
- service:
- name: nginx
- state: restarted
- when: letsencrypt|bool
-
- - name: provision letsencrypt account private key
- openssl_privatekey:
- path: "{{ letsencrypt_account_key }}"
- when: letsencrypt|bool
-
- - name: provision ssl cert/key(s) with letsencrypt
- include: letsencrypt.yaml
- with_items: "{{ nginx_sites }}"
- when: letsencrypt|bool and item.letsencrypt is defined and nginx_sites is defined and nginx_sites
-
- - name: enable nginx configuration generated from standard template
- file:
- path: "/etc/nginx/sites-enabled/{{ item.server.file_name }}"
- state: link
- src: "/etc/nginx/sites-available/{{ item.server.file_name }}"
- with_items: "{{ nginx_sites }}"
- when: nginx_sites is defined and nginx_sites
- notify: restart nginx
|