Skip to content

Ansible role to install nginx http and reverse proxy server

Notifications You must be signed in to change notification settings

idealista/nginx_role

Repository files navigation

Logo

Build Status Ansible Galaxy

Nginx Ansible role

This ansible role installs a Nginx server in a debian environment. Also installs lua needed for prometheus metrics.

Getting Started

These instructions will get you a copy of the role for your ansible playbook. Once launched, it will install a Nginx server in a Debian system.

Prerequisities

Minimum ansible 2.9.x.x version installed. Inventory destination should be a Debian environment.

For testing purposes, Molecule with Docker as driver.

Installing

Create or add to your roles dependency file (e.g requirements.yml):

- src: idealista.nginx_role
  version: 5.0.0
  name: nginx

Install the role with ansible-galaxy command:

ansible-galaxy install -p roles -r requirements.yml -f

Use in a playbook:

---
- hosts: someserver
  roles:
    - role: nginx

Usage

Look to the defaults vars file to see the possible configuration vars.

The server is installed using the sources adding the headers-more module and lua module. You can add/remove compile built-in and external modules by setting nginx_builtin_modules and nginx_external_modules vars.

You can activate ssl modules by nginx_ssl_enabled var (see molecule tests as example). To import your certificates, you need to place them at the path defined in nginx_certificates_path, they will be imported in /etc/nginx/certificates.

You can add new servers to nginx by including your server as a file or as a template, setting the server files in the path defined by nginx_extra_servers_path or nginx_extra_servers_template_path (see molecule tests as example).

If you want to change any version do it at your risk. Some nginx versions and modules are not compatible. Known compatible versions are:

Nginx: 1.10.* + lua_module_version: 0.10.7
Nginx: 1.12.* + lua_module_version: 0.10.11
Nginx: 1.14.* + lua_module_version: 0.10.13

Testing

$ pipenv sync
$ MOLECULE_DISTRO=(debian:stretch-slim|debian:buster-slim|debian:bullseye-slim) pipenv run molecule test

Note: Debian11 (Debian Bullseye) will be used as default linux distro if none is provided.

See molecule.yml to check possible testing platforms.

For testing purposes, a self signed certificate is being used and encripted via ansible-vault. Remember to never upload your vault key in your repository for real projects.

Built With

Ansible Molecule ![Goss](https://img.shields.io/badge/goss-0.3.11-green.svg

Versioning

For the versions available, see the tags on this repository.

Additionaly you can see what change in each version in the CHANGELOG.md file.

Authors

See also the list of contributors who participated in this project.

License

Apache 2.0 License

This project is licensed under the Apache 2.0 license - see the LICENSE file for details.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Acknowledgments