galaxyproject.nginx

nginx

Un rôle Ansible pour installer et gérer des serveurs nginx.

Exigences

Ce rôle installe nginx via APT sur les systèmes Debian, EPEL sur les systèmes Linux Entreprise, ou pkgin sur SmartOS. D'autres systèmes et méthodes d'installation ne sont pas supportés.

Variables de Rôle

Toutes les variables sont optionnelles.

Configuration Générale

  • nginx_flavor (par défaut : full) : paquet nginx à installer (pour les choix, voir les fournisseurs de méta-paquet nginx pour votre distribution basée sur Debian). Sur les distributions basées sur RedHat, cela peut être galaxy (pour "Galaxy nginx", qui inclut les modules d'upload et pam de nginx), ou toute autre valeur pour EPEL nginx. Cette valeur n'est pas utilisée pour les installations pkgin/SmartOS. En général, TUS peut être utilisé et full est une option par défaut sûre pour l'avenir.
  • nginx_servers : Une liste de modèles server {} (virtualhost) (relative à templates/nginx/, l'extension de fichier .j2 est automatiquement ajoutée aux entrées de liste lors de la recherche).
  • nginx_ssl_servers : Comme nginx_servers, mais uniquement installé si SSL est configuré.
  • nginx_conf_http : Définir des options arbitraires dans la section http {} de nginx.conf. Il s'agit d'un hash (dictionnaire) où les clés sont des options de configuration nginx et les valeurs sont les valeurs des options.
  • nginx_default_redirect_uri : Lors de l'utilisation de nginx depuis EPEL, un virtualhost par défaut est activé. Cette option contrôle l'URI vers laquelle le virtualhost par défaut doit être redirigé. Les variables nginx sont supportées.
  • nginx_enable_default_server (par défaut : true) : Activer/désactiver le virtualhost par défaut EPEL.
  • nginx_supervisor : Exécuter nginx sous supervision (nécessite de définir certaines variables de supervision).
  • nginx_conf_dir (par défaut : /etc/nginx) : Répertoire de configuration de nginx.

Configuration SSL

Les variables nginx_conf_ssl_certificate* contrôlent l'utilisation de SSL. Si elles ne sont pas définies, SSL ne sera pas activé. Voir l'exemple de playbook pour l'utilisation.

  • nginx_conf_ssl_certificate : Nom du fichier du certificat SSL sur l'hôte distant.
  • nginx_conf_ssl_certificate_key : Nom du fichier de la clé privée SSL sur l'hôte distant.
  • nginx_conf_ssl_ciphers : L'option ssl_ciphers dans nginx.conf, il s'agit d'une liste.
  • nginx_conf_ssl_protocols : L'option ssl_protocols dans nginx.conf, il s'agit d'une liste.

Configuration SSL Externe

  • nginx_ssl_role (par défaut : non défini) : Rôle à exécuter pour configurer SSL. Cela permet d'utiliser (par exemple) usegalaxy_eu.certbot, qui doit généralement être exécuté après que nginx soit configuré et fonctionne sur le port 80, mais avant que nginx n'essaie d'utiliser SSL (puisque tant que certbot n'est pas exécuté, les certificats que nginx attend ne sont pas encore disponibles). Définir cela entraînera l'exécution du rôle SSL au moment approprié dans ce rôle. Voir aussi nginx_ssl_servers.
  • nginx_conf_ssl_certificate : Nom du fichier du certificat SSL.
  • nginx_conf_ssl_certificate_key : Nom du fichier de la clé privée SSL.

Dans ce mode, les variables nginx_conf_ssl_certificate* doivent être des chemins absolus.

Configuration SSL dans le Playbook

Si nginx_ssl_role n'est pas défini, vous pouvez utiliser ce rôle pour copier votre certificat et clé depuis le playbook.

  • nginx_ssl_conf_dir (par défaut : <nginx_conf_dir>/ssl) : Où copier les certificats SSL et autres fichiers liés à SSL.
  • nginx_ssl_src_dir (par défaut : files/ssl) : D'où copier les certificats SSL.
  • sslkeys : Un hash (dictionnaire) contenant les clés privées. Les clés sont les noms de fichiers (sans éléments de chemin précédents) correspondant à nginx_conf_ssl_certificate_key.
  • nginx_conf_ssl_trusted_certificate : Nom des certificats de confiance pour le stapling OCSP (mettre ceci active le stapling).

Dans ce mode, les variables nginx_conf_ssl_certificate* doivent être des chemins relatifs. Cependant, pour des raisons de compatibilité, elles peuvent être des chemins absolus vers les fichiers sur l'hôte distant. Dans ce cas, les certificats sont recherchés dans nginx_ssl_src_dir avec la partie du chemin de répertoire supprimée. Si le chemin n'est pas absolu, il est relatif à nginx_ssl_src_dir pour la source, et relatif à nginx_ssl_conf_dir pour la destination.

SELinux

Si SELinux est en mode d'application stricte, plusieurs actions supplémentaires seront prises :

  • Si certbot_well_known_root est défini, il sera mis à jour pour permettre les permissions de type httpd_sys_content_t sur tous les sous-répertoires.
  • nginx_selinux_allow_local_connections (par défaut : false) : Permettre à nginx de se connecter à localhost.

Dépendances

Bien qu'il ne s'agisse pas d'une exigence, geerlingguy.repo-epel peut être utilisé pour activer EPEL avec Ansible.

Exemple de Playbook

Voici quelques exemples de playbook selon l'endroit où vous obtenez vos certificats.

Certificats SSL Locaux

Installer nginx avec des certificats SSL stockés dans le playbook (certificat à {{ playbook_dir }}/files/ssl/snakeoil_cert.pem):

- name: Installer et configurer nginx
  hosts: webservers
  vars:
    sslkeys:
      snakeoil_privatekey.pem: |
        -----BEGIN PRIVATE KEY-----
        MIIE...
        -----END PRIVATE KEY-----
    nginx_conf_ssl_certificate: snakeoil_cert.pem
    nginx_conf_ssl_certificate_key: snakeoil_privatekey.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_conf_http:
      client_max_body_size: 1g
  roles:
    - galaxyproject.nginx

Let's Encrypt

Installer nginx avec des certificats SSL obtenus auprès de Let's Encrypt avec Certbot en utilisant usegalaxy_eu.certbot:

- name: Installer et configurer nginx
  hosts: webservers
  vars:
    nginx_conf_ssl_certificate: /etc/ssl/certs/fullchain.pem
    nginx_conf_ssl_certificate_key: /etc/ssl/private/private.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: usegalaxy_eu.certbot
    certbot_auth_method: --webroot
    certbot_domains:
      - vhost1.example.org
      - vhost2.example.org
    certbot_admin_email: [email protected]
    certbot_agree_tos: --agree-tos
    certbot_well_known_root: /var/www/_well-known_root
    certbot_post_renewal: |
      systemctl restart nginx || true
  roles:
    - galaxyproject.nginx

Dans templates/nginx/vhost1.j2 et templates/nginx/vhost2.j2, assurez-vous d'ajouter quelque chose comme :

server {
    location /.well-known/ {
        root {{ certbot_well_known_root }};
    }
}

Certificats Auto-signés

Installer nginx et utiliser un certificat SSL généré et auto-signé (bonne option pour tester des services sécurisés derrière un pare-feu).

- name: Installer et configurer nginx
  hosts: webservers
  vars:
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: galaxyproject.self_signed_certs
    openssl_domains: # Comportement identique à certbot_domains
      - vhost1.example.org
      - vhost2.example.org
    # Ceux-ci peuvent être définis à l'endroit où vous voulez que vos certificats et PK soient stockés.
    nginx_conf_ssl_certificate_key: /etc/ssl/private/{{ openssl_domains[0] }}.pem
    nginx_conf_ssl_certificate: /etc/ssl/certs/{{ openssl_domains[0] }}.crt
  roles:
    - galaxyproject.nginx

Licence

Licence Académique Libre ("AFL") v. 3.0

Informations sur l'Auteur

À propos du projet

Install and manage an nginx server.

Installer
ansible-galaxy install galaxyproject.nginx
Licence
Unknown
Téléchargements
27.7k
Propriétaire
Galaxy is an open, web-based platform for data-intensive research.