Skip to content
 
 

Repository files navigation

nginx

Build Status Build Status Updates Python 3 Ansible Role

Install anc configure Nginx package.

Requirements

This role requires Ansible 2.2 or higher, and platform requirements are listed in the metadata file.

Testing

This role use Molecule to run tests.

Local and Travis tests run tests on Docker by default. See molecule documentation to use other backend.

Currently, tests are done on:

  • Debian Jessie
  • Ubuntu Trusty
  • Ubuntu Xenial

and use:

  • Ansible 2.2.x
  • Ansible 2.3.x
  • Ansible 2.4.x

Running tests

Using Docker driver

$ tox

Role Variables

Default role variables

# General
#------------------------------------------------------------------------------

# Packages and repositories management
nginx_packages: "{{ _nginx_packages }}"
nginx_repository_cache_valid_time: "{{ _nginx_repository_cache_valid_time }}"
nginx_repositories_keys: "{{ _nginx_repositories_keys }}"
nginx_repositories: "{{ _nginx_repositories }}"

# Services management
nginx_service_name: "{{ _nginx_service_name }}"
nginx_service_state: 'started'
nginx_service_enabled: True

# Nginx configuration properties
nginx_config_permissions:
  files:
    owner: 'root'
    group: 'root'
    mode: '0644'
  folders:
    owner: 'root'
    group: 'root'
    mode: '0750'

nginx_config_paths:
  files:
    main: '/etc/nginx/nginx.conf'
    default:
      - '/etc/nginx/conf.d/default.conf'
      - '/etc/nginx/conf.d/example_ssl.conf'
  folders:
    sites_available: '/etc/nginx/sites-available'
    sites_enabled: '/etc/nginx/sites-enabled'


# Servers configuration management
#------------------------------------------------------------------------------

# Remove default servers configuration files
nginx_delete_default_config_files: True

# General
nginx_user: 'nginx'

# Nginx main configuration
nginx_conf:
  root:
    options: |
      user {{ nginx_user }};
      worker_processes 1;
      error_log /var/log/nginx/error.log info;
      pid /run/nginx.pid;
  events:
    options: |
      worker_connections 1024;
  http:
    default_server:
      enabled: True
      content: |
        return 404;
    options: |
      log_format main '$remote_addr - $remote_user [$time_local] "$request"
        $status $body_bytes_sent "$http_referer" "$http_user_agent"
        "$http_x_forwarded_for"';
      include /etc/nginx/mime.types;
      default_type application/octet-stream;
      access_log /var/log/nginx/access.log main;
      sendfile on;
      keepalive_timeout 65;
      include /etc/nginx/conf.d/*.conf;

nginx_servers: []
nginx_upstreams: []

Configure servers

Today, management of configuration options is smaller and incomplete, but will grow later.

Example:

nginx_servers:
  - name: "{{ ansible_fqdn }}"
    is_enabled: False
    options: |
      listen: 80;
      root /var/www/foo;
      server_name localhost;
    locations:
      - target: '/foo'
        options: |
          try_files $uri =404;
          root /var/www/foo;
      - target: '/bar'
        options: |
          try_files $uri =404;
          root /var/www/bar;

Configure upstreams

Today, management of configuration options is smaller and incomplete, but will grow later.

Example:

nginx_upstreams:
  - name: 'foo'
    is_enabled: False
    options: |
      server 127.0.0.1:8080;

Configure maps

Example:

nginx_maps:
  - name: 'foo'
    is_enabled: False
    target: '$uri $new_uri'
    options: |
      /foo /bar;

Dependencies

None

Example Playbook

- hosts: servers
  roles:
    - { role: Temelio.nginx }

License

MIT

Author Information

Alexandre Chaussier (for Temelio company)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages