ansible-infra/playbooks/roles/nginx
julian 8bc60e42a8 Extend distribution_check role to account for Ansible changes reg. facts
Somewhere between ansible [core 2.14.4] and ansible [core 2.15.0] the
logic for the distribution_version Ansible fact got changed. With the
newer Ansible version Debians distribution_version gets reported as 11.7
as opposed to getting reported as 11 with the old Ansible version. To
still allow for useful distribution checks, extend the
distribution_check role by allowing the specification of
distribution_major_versions and distribution_releases as well.
This way you can check for an Ubuntu version by using
distribution_version (which for example resolves to 18.04, while
distribution_major_version would resolve to 18 in that case) and check
for a Debian version by using distribution_major_version (which for
example resolves to 11, while distribution_version would resolve to 11.7
in that case).
2023-07-08 19:58:02 +02:00
..
defaults Use the .yaml file extension for all YAML files 2023-05-08 19:55:08 +02:00
files Use nginx role with custom nginx.conf support 2023-04-15 18:13:22 +02:00
handlers Use nginx role with custom nginx.conf support 2023-04-15 18:13:22 +02:00
meta Extend distribution_check role to account for Ansible changes reg. facts 2023-07-08 19:58:02 +02:00
tasks Use nginx role with custom nginx.conf support 2023-04-15 18:13:22 +02:00
README.md Use nginx role with custom nginx.conf support 2023-04-15 18:13:22 +02:00

Role nginx

Makes sure the nginx package is installed from the NGINX repos on the specified hosts. Also makes sure a desirable baseline of NGINX configs is deployed on the specified hosts. For the NGINX site configurations the config template below can be used.

Entry Points

The entry points available for external use are:

  • main

Supported Distributions

The following distributions are supported:

  • Debian 11

Required Arguments

For the required arguments look at the argument_specs.yaml.

Updates

This role updates NGINX to the latest version covered by the provided version spec., if needed.

hosts

The hosts for this role need to be the machines, for which you want to make sure the nginx package is installed from the NGINX repos and a desirable baseline of NGINX configs is deployed.

Config Template

Here's a config template, which can be used for new NGINX site configs, which you can supply to this role using the nginx__configurations argument. Just replace the placeholder values with real ones and extend and edit it as needed.

# partly generated 2022-01-08, Mozilla Guideline v5.6, nginx 1.17.7, OpenSSL 1.1.1k, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.17.7&config=intermediate&openssl=1.1.1k&guideline=5.6
server {
    listen 443 ssl http2;
    #listen [::]:443 ssl http2;
    server_name replace_me;

    ssl_certificate /path/to/signed_cert_plus_intermediates;
    ssl_certificate_key /path/to/private_key;
    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;

    # replace with the IP address of your resolver
    resolver 127.0.0.1;
}