Ansible-role-nginx-config: Les derniers exemples disponibles sur main ne fonctionnent pas sur la dernière version d'Ansible Galaxy (0.3.3)

Créé le 20 mars 2021  ·  8Commentaires  ·  Source: nginxinc/ansible-role-nginx-config

Décrivez le bogue

J'essaie de configurer un simple serveur HTTP sur une machine Debian avec la configuration suivante :

# my_role/meta/main.yml
---
allow_duplicates: no
dependencies:
  - role: nginxinc.nginx
    become: yes
  - role: nginxinc.nginx_config
    become: yes
    vars:
      nginx_config_debug_output: true
      nginx_config_debug_tasks: true
      nginx_config_cleanup: true
      nginx_config_cleanup_files:
        - /etc/nginx/conf.d/default.conf
      nginx_config_main_template_enable: true
      nginx_config_main_template:
        user: pi
        http_enable: true
        http_settings:
          gzip:
            enable: true
          access_log_format:
            - name: main
              format: |-
                '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"'
          access_log_location:
            - name: main
              location: /var/log/nginx/access.log
          keepalive_timeout: 65
      nginx_config_http_template_enable: true
      nginx_config_http_template:
        # - template_file: http/default.conf.j2
        # conf_file_name: default.v1.conf
        # conf_file_location: /etc/nginx/conf.d/
        - servers:
            - server_name: localhost
              listen:
                - ip: localhost
                  port: 80
              gzip:
                enable: true
              root: "{{ ui_pkg_dst }}"
              index: index.html
              try_files: $uri $uri/index.html $uri.html =404
              locations:
                - location: /
                  root: "{{ ui_pkg_dst }}"
                  index: index.html
                  try_files: $uri $uri/index.html $uri.html =404

Mais il semble que le fichier de configuration sur l'hôte distant soit toujours vide ou ne contienne que le commentaire :

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************
ok: [dum-e]

TASK [nginxinc.nginx : Check whether you are using a supported NGINX distribution] *******************************************************************************************************************************
ok: [dum-e] => {
    "changed": false,
    "msg": "Your OS, Debian is supported by NGINX Open Source"
}

TASK [nginxinc.nginx : Set up prerequisites] *********************************************************************************************************************************************************************
included: /Users/rolandgroza/.ansible/roles/nginxinc.nginx/tasks/prerequisites/prerequisites.yml for dum-e

TASK [nginxinc.nginx : Install dependencies] *********************************************************************************************************************************************************************
included: /Users/rolandgroza/.ansible/roles/nginxinc.nginx/tasks/prerequisites/install-dependencies.yml for dum-e

TASK [nginxinc.nginx : (Alpine Linux) Install dependencies] ******************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : (Debian/Ubuntu) Install dependencies] *****************************************************************************************************************************************************
ok: [dum-e]

TASK [nginxinc.nginx : (Amazon Linux/CentOS/Oracle Linux/RHEL) Install dependencies] *****************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : (SLES) Install dependencies] **************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : (FreeBSD) Install dependencies using package(s)] ******************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : (FreeBSD) Install dependencies using port(s)] *********************************************************************************************************************************************
skipping: [dum-e] => (item=security/ca_root_nss) 

TASK [nginxinc.nginx : Check if SELinux is enabled] **************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Configure SELinux] ************************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Set up signing keys] **********************************************************************************************************************************************************************
included: /Users/rolandgroza/.ansible/roles/nginxinc.nginx/tasks/keys/setup-keys.yml for dum-e

TASK [nginxinc.nginx : (Alpine Linux) Set up NGINX signing key URL] **********************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : (Alpine Linux) Download NGINX signing key] ************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : (Debian/Red Hat/SLES OSs) Set up NGINX signing key URL] ***********************************************************************************************************************************
ok: [dum-e]

TASK [nginxinc.nginx : (Debian/Ubuntu) Add NGINX signing key] ****************************************************************************************************************************************************
ok: [dum-e]

TASK [nginxinc.nginx : (Amazon Linux/CentOS/Oracle Linux/RHEL/SLES) Add NGINX signing key] ***********************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Install NGINX Open Source] ****************************************************************************************************************************************************************
included: /Users/rolandgroza/.ansible/roles/nginxinc.nginx/tasks/opensource/install-oss.yml for dum-e

TASK [nginxinc.nginx : Install NGINX from repository] ************************************************************************************************************************************************************
included: /Users/rolandgroza/.ansible/roles/nginxinc.nginx/tasks/opensource/install-debian.yml for dum-e

TASK [nginxinc.nginx : (Debian/Ubuntu) Configure NGINX repository] ***********************************************************************************************************************************************
ok: [dum-e] => (item=deb [arch=amd64] https://nginx.org/packages/mainline/debian/ buster nginx)
ok: [dum-e] => (item=deb-src https://nginx.org/packages/mainline/debian/ buster nginx)

TASK [nginxinc.nginx : (Debian/Ubuntu) Install NGINX] ************************************************************************************************************************************************************
ok: [dum-e]

TASK [nginxinc.nginx : Install NGINX from source] ****************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Install NGINX from package] ***************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Install NGINX in Unix systems] ************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Set up NGINX Plus license] ****************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Install NGINX Plus] ***********************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Install NGINX modules] ********************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Remove NGINX Plus license] ****************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Modify systemd parameters] ****************************************************************************************************************************************************************
skipping: [dum-e]
[WARNING]: flush_handlers task does not support when conditional

TASK [nginxinc.nginx : Debug NGINX output] ***********************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Configure logrotate for NGINX] ************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx : Install NGINX Amplify] ********************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx_config : Set up SELinux] ********************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx_config : Cleanup NGINX config] **************************************************************************************************************************************************************
included: /Users/rolandgroza/.ansible/roles/nginxinc.nginx_config/tasks/config/cleanup-config.yml for dum-e

TASK [nginxinc.nginx_config : Find NGINX config files] ***********************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx_config : Remove NGINX config files] *********************************************************************************************************************************************************
changed: [dum-e] => (item=/etc/nginx/conf.d/default.conf)

TASK [nginxinc.nginx_config : Upload NGINX config] ***************************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx_config : Create NGINX config] ***************************************************************************************************************************************************************
included: /Users/rolandgroza/.ansible/roles/nginxinc.nginx_config/tasks/config/template-config.yml for dum-e

TASK [nginxinc.nginx_config : Ensure HTML directory exists] ******************************************************************************************************************************************************
skipping: [dum-e] => (item={'key': 'default', 'value': {'template_file': 'www/index.html.j2', 'html_file_name': 'index.html', 'html_file_location': '/usr/share/nginx/html', 'web_server_name': 'Default'}}) 

TASK [nginxinc.nginx_config : Dynamically generate HTML files] ***************************************************************************************************************************************************
skipping: [dum-e] => (item={'key': 'default', 'value': {'template_file': 'www/index.html.j2', 'html_file_name': 'index.html', 'html_file_location': '/usr/share/nginx/html', 'web_server_name': 'Default'}}) 

TASK [nginxinc.nginx_config : Configure NGINX modules] ***********************************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx_config : Ensure NGINX main directory exists] ************************************************************************************************************************************************
ok: [dum-e]

TASK [nginxinc.nginx_config : Dynamically generate NGINX main configuration file] ********************************************************************************************************************************
ok: [dum-e]

TASK [nginxinc.nginx_config : Ensure NGINX HTTP directory exists] ************************************************************************************************************************************************
ok: [dum-e] => (item={'key': 'servers', 'value': [{'server_name': 'localhost', 'listen': [{'ip': 'localhost', 'port': 80}], 'gzip': {'enable': True}, 'root': '/home/pi/ui', 'index': 'index.html', 'try_files': '$uri $uri/index.html $uri.html =404', 'locations': [{'location': '/', 'root': '/home/pi/ui', 'index': 'index.html', 'try_files': '$uri $uri/index.html $uri.html =404'}]}]})

TASK [nginxinc.nginx_config : Ensure NGINX proxy cache directories exist] ****************************************************************************************************************************************

TASK [nginxinc.nginx_config : Dynamically generate NGINX HTTP config files] **************************************************************************************************************************************
changed: [dum-e] => (item={'key': 'servers', 'value': [{'server_name': 'localhost', 'listen': [{'ip': 'localhost', 'port': 80}], 'gzip': {'enable': True}, 'root': '/home/pi/ui', 'index': 'index.html', 'try_files': '$uri $uri/index.html $uri.html =404', 'locations': [{'location': '/', 'root': '/home/pi/ui', 'index': 'index.html', 'try_files': '$uri $uri/index.html $uri.html =404'}]}]})

TASK [nginxinc.nginx_config : Dynamically generate NGINX stub status config file] ********************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx_config : Dynamically generate NGINX API config file] ****************************************************************************************************************************************
skipping: [dum-e]

TASK [nginxinc.nginx_config : Ensure NGINX stream directory exists] **********************************************************************************************************************************************
skipping: [dum-e] => (item={'key': 'default', 'value': {'template_file': 'stream/default.conf.j2', 'conf_file_name': 'default.conf', 'conf_file_location': '/etc/nginx/conf.d/stream/', 'network_streams': {'default': {'listen': {'listen_localhost': {'ip': '0.0.0.0', 'port': 80, 'ssl': False, 'opts': []}}, 'ssl': {'cert': '/etc/ssl/certs/default.crt', 'key': '/etc/ssl/private/default.key', 'dhparam': '/etc/ssl/private/dh_param.pem', 'protocols': 'TLSv1 TLSv1.1 TLSv1.2', 'ciphers': 'HIGH:!aNULL:!MD5', 'prefer_server_ciphers': True, 'session_cache': 'none', 'session_timeout': '5m', 'disable_session_tickets': False, 'trusted_cert': '/etc/ssl/certs/root_CA_cert_plus_intermediates.crt', 'ecdh_curve': 'auto'}, 'include_files': [], 'proxy_pass': 'backend', 'proxy_timeout': '3s', 'proxy_connect_timeout': '1s', 'proxy_protocol': False, 'proxy_ssl': {'cert': '/etc/ssl/certs/proxy_default.crt', 'key': '/etc/ssl/private/proxy_default.key', 'trusted_cert': '/etc/ssl/certs/proxy_ca.crt', 'protocols': 'TLSv1 TLSv1.1 TLSv1.2', 'ciphers': 'HIGH:!aNULL:!MD5', 'verify': False, 'verify_depth': 1, 'session_reuse': True}, 'health_check_plus': False}}, 'upstreams': {'upstream1': {'name': 'backend', 'lb_method': 'least_conn', 'zone_name': 'backend', 'zone_size': '64k', 'sticky_cookie': False, 'servers': {'server1': {'address': 'localhost', 'port': 8080, 'weight': 1, 'health_check': 'max_fails=1 fail_timeout=10s'}}}}}}) 

TASK [nginxinc.nginx_config : Dynamically generate NGINX stream config files] ************************************************************************************************************************************
skipping: [dum-e] => (item={'key': 'default', 'value': {'template_file': 'stream/default.conf.j2', 'conf_file_name': 'default.conf', 'conf_file_location': '/etc/nginx/conf.d/stream/', 'network_streams': {'default': {'listen': {'listen_localhost': {'ip': '0.0.0.0', 'port': 80, 'ssl': False, 'opts': []}}, 'ssl': {'cert': '/etc/ssl/certs/default.crt', 'key': '/etc/ssl/private/default.key', 'dhparam': '/etc/ssl/private/dh_param.pem', 'protocols': 'TLSv1 TLSv1.1 TLSv1.2', 'ciphers': 'HIGH:!aNULL:!MD5', 'prefer_server_ciphers': True, 'session_cache': 'none', 'session_timeout': '5m', 'disable_session_tickets': False, 'trusted_cert': '/etc/ssl/certs/root_CA_cert_plus_intermediates.crt', 'ecdh_curve': 'auto'}, 'include_files': [], 'proxy_pass': 'backend', 'proxy_timeout': '3s', 'proxy_connect_timeout': '1s', 'proxy_protocol': False, 'proxy_ssl': {'cert': '/etc/ssl/certs/proxy_default.crt', 'key': '/etc/ssl/private/proxy_default.key', 'trusted_cert': '/etc/ssl/certs/proxy_ca.crt', 'protocols': 'TLSv1 TLSv1.1 TLSv1.2', 'ciphers': 'HIGH:!aNULL:!MD5', 'verify': False, 'verify_depth': 1, 'session_reuse': True}, 'health_check_plus': False}}, 'upstreams': {'upstream1': {'name': 'backend', 'lb_method': 'least_conn', 'zone_name': 'backend', 'zone_size': '64k', 'sticky_cookie': False, 'servers': {'server1': {'address': 'localhost', 'port': 8080, 'weight': 1, 'health_check': 'max_fails=1 fail_timeout=10s'}}}}}}) 

RUNNING HANDLER [nginxinc.nginx_config : (Handler - NGINX Config) Check NGINX] ***********************************************************************************************************************************
ok: [dum-e]

RUNNING HANDLER [nginxinc.nginx_config : (Handler - NGINX Config) Print NGINX error if syntax check fails] *******************************************************************************************************
skipping: [dum-e]

RUNNING HANDLER [nginxinc.nginx_config : (Handler - NGINX Config) Start/reload NGINX] ****************************************************************************************************************************
changed: [dum-e]

TASK [nginxinc.nginx_config : Debug output] **********************************************************************************************************************************************************************
included: /Users/rolandgroza/.ansible/roles/nginxinc.nginx_config/tasks/config/debug-output.yml for dum-e

TASK [nginxinc.nginx_config : Register NGINX config] *************************************************************************************************************************************************************
ok: [dum-e]

TASK [nginxinc.nginx_config : Print NGINX config] ****************************************************************************************************************************************************************
ok: [dum-e] => {
    "config_full.stdout_lines": [
        "# configuration file /etc/nginx/nginx.conf:",
        "#",
        "# Ansible managed",
        "#",
        "",
        "",
        "user pi;",
        "",
        "",
        "",
        "events {",
        "}",
        "",
        "http {",
        "    include       /etc/nginx/mime.types;",
        "    default_type  application/octet-stream;",
        "    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '",
        "'$status $body_bytes_sent \"$http_referer\" '",
        "'\"$http_user_agent\" \"$http_x_forwarded_for\"';",
        "    access_log  /var/log/nginx/access.log  main;",
        "    keepalive_timeout  65;",
        "    gzip on;",
        "",
        "    include /etc/nginx/conf.d/*.conf;",
        "}",
        "",
        "",
        "# configuration file /etc/nginx/mime.types:",
        "",
        "types {",
        "    text/html                             html htm shtml;",
        "    text/css                              css;",
        "    text/xml                              xml;",
        "    image/gif                             gif;",
        "    image/jpeg                            jpeg jpg;",
        "    application/javascript                js;",
        "    application/atom+xml                  atom;",
        "    application/rss+xml                   rss;",
        "",
        "    text/mathml                           mml;",
        "    text/plain                            txt;",
        "    text/vnd.sun.j2me.app-descriptor      jad;",
        "    text/vnd.wap.wml                      wml;",
        "    text/x-component                      htc;",
        "",
        "    image/png                             png;",
        "    image/tiff                            tif tiff;",
        "    image/vnd.wap.wbmp                    wbmp;",
        "    image/x-icon                          ico;",
        "    image/x-jng                           jng;",
        "    image/x-ms-bmp                        bmp;",
        "    image/svg+xml                         svg svgz;",
        "    image/webp                            webp;",
        "",
        "    application/font-woff                 woff;",
        "    application/java-archive              jar war ear;",
        "    application/json                      json;",
        "    application/mac-binhex40              hqx;",
        "    application/msword                    doc;",
        "    application/pdf                       pdf;",
        "    application/postscript                ps eps ai;",
        "    application/rtf                       rtf;",
        "    application/vnd.apple.mpegurl         m3u8;",
        "    application/vnd.ms-excel              xls;",
        "    application/vnd.ms-fontobject         eot;",
        "    application/vnd.ms-powerpoint         ppt;",
        "    application/vnd.wap.wmlc              wmlc;",
        "    application/vnd.google-earth.kml+xml  kml;",
        "    application/vnd.google-earth.kmz      kmz;",
        "    application/x-7z-compressed           7z;",
        "    application/x-cocoa                   cco;",
        "    application/x-java-archive-diff       jardiff;",
        "    application/x-java-jnlp-file          jnlp;",
        "    application/x-makeself                run;",
        "    application/x-perl                    pl pm;",
        "    application/x-pilot                   prc pdb;",
        "    application/x-rar-compressed          rar;",
        "    application/x-redhat-package-manager  rpm;",
        "    application/x-sea                     sea;",
        "    application/x-shockwave-flash         swf;",
        "    application/x-stuffit                 sit;",
        "    application/x-tcl                     tcl tk;",
        "    application/x-x509-ca-cert            der pem crt;",
        "    application/x-xpinstall               xpi;",
        "    application/xhtml+xml                 xhtml;",
        "    application/xspf+xml                  xspf;",
        "    application/zip                       zip;",
        "",
        "    application/octet-stream              bin exe dll;",
        "    application/octet-stream              deb;",
        "    application/octet-stream              dmg;",
        "    application/octet-stream              iso img;",
        "    application/octet-stream              msi msp msm;",
        "",
        "    application/vnd.openxmlformats-officedocument.wordprocessingml.document    docx;",
        "    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet          xlsx;",
        "    application/vnd.openxmlformats-officedocument.presentationml.presentation  pptx;",
        "",
        "    audio/midi                            mid midi kar;",
        "    audio/mpeg                            mp3;",
        "    audio/ogg                             ogg;",
        "    audio/x-m4a                           m4a;",
        "    audio/x-realaudio                     ra;",
        "",
        "    video/3gpp                            3gpp 3gp;",
        "    video/mp2t                            ts;",
        "    video/mp4                             mp4;",
        "    video/mpeg                            mpeg mpg;",
        "    video/quicktime                       mov;",
        "    video/webm                            webm;",
        "    video/x-flv                           flv;",
        "    video/x-m4v                           m4v;",
        "    video/x-mng                           mng;",
        "    video/x-ms-asf                        asx asf;",
        "    video/x-ms-wmv                        wmv;",
        "    video/x-msvideo                       avi;",
        "}",
        "",
        "# configuration file /etc/nginx/conf.d/default.conf:",
        "#",
        "# Ansible managed",
        "#"
    ]
}

Reproduire

Étapes pour reproduire le comportement :

  1. Déployez le rôle NGINX Config en utilisant un rôle qui dépend de ce rôle et a la configuration ci-dessus
  2. Vérifier le contenu de /etc/nginx/conf.d/default.conf

Comportement prévisible

Je m'attendrais à ce que le fichier de configuration sur l'hôte distant soit généré avec la configuration que j'ai configurée.

Votre environnement :

  • Version du rôle NGINX Config ou commit spécifique
---
roles:
  # https://github.com/nginxinc/ansible-role-nginx
  - src: nginxinc.nginx
    version: 0.19.1
  # https://github.com/nginxinc/ansible-role-nginx-config
  - src: nginxinc.nginx_config
    version: 0.3.3
  • Version d'Ansible
❯ ansible --version                                                                            
ansible 2.10.2
  config file = /Users/rolandgroza/Work/jigs/ansible.cfg
  configured module search path = ['/Users/rolandgroza/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/rolandgroza/.pyenv/versions/3.8.6/envs/python-3.8/lib/python3.8/site-packages/ansible
  executable location = /Users/rolandgroza/.pyenv/versions/python-3.8/bin/ansible
  python version = 3.8.6 (default, Nov  1 2020, 20:18:23) [Clang 11.0.3 (clang-1103.0.32.62)]
  • Plateforme de déploiement cible : Debian 10

Contexte supplémentaire

Ajoutez ici tout autre contexte concernant le problème.

documentation question

Commentaire le plus utile

Malheureusement non. D'autres tâches plus prioritaires m'ont empêché de consacrer autant de temps que je le voudrais aux rôles Ansible. Cela étant dit, ce que je peux faire, c'est ajouter une clause de non-responsabilité au README pour le moment, pointant les gens vers les documents 0.3.3 s'ils utilisent la dernière version (au lieu de tirer de GitHub).

Tous les 8 commentaires

Je pense que le problème est que vous utilisez la syntaxe de configuration que 0.4.0 va utiliser lors de sa sortie par rapport à la syntaxe de configuration que 0.3.3 utilise. Puis-je suggérer de retirer le dernier commit de main et de vérifier si cela fonctionne?

J'ai l'impression de voir le même problème que celui signalé ici.

Je pense que le problème est que vous utilisez la syntaxe de configuration que 0.4.0 va utiliser lors de sa sortie par rapport à la syntaxe de configuration que 0.3.3 utilise. Puis-je suggérer de retirer le dernier commit de main et de vérifier si cela fonctionne?

Oui, cela semble être un problème. J'ai extrait le dernier commit et l'ai testé et la configuration est générée comme prévu.

En effet, il semble que tirer les dernières nouvelles de fait que cela fonctionne. Ce correctif arrivera-t-il dans le référentiel ansible-galaxy?

Il passera à ansible-galaxy lorsque 0.4.0 sera publié. Cela étant dit, j'attends de publier 0.4.0 jusqu'à ce que j'aie fini de refactoriser les différents modèles vers un modèle de développement plus durable (en utilisant des macros).

Je laisserai ce problème ouvert jusqu'à ce que 0.4.0 soit publié au cas où quelqu'un d'autre rencontrerait un problème similaire.

@alessfg Je viens de 0.3.3 . Y a-t-il un ETA sur 0.4.0 ?

Malheureusement non. D'autres tâches plus prioritaires m'ont empêché de consacrer autant de temps que je le voudrais aux rôles Ansible. Cela étant dit, ce que je peux faire, c'est ajouter une clause de non-responsabilité au README pour le moment, pointant les gens vers les documents 0.3.3 s'ils utilisent la dernière version (au lieu de tirer de GitHub).

Aaand done https://github.com/nginxinc/ansible-role-nginx-config/commit/030e2827a04a2b25bf319724ac680998d39c0fb5 -- Je vais également changer le titre de ce numéro et l'épingler pour éviter que les gens ne perdent un temps inutile à comprendre pourquoi le les derniers exemples ne fonctionnent pas.

Cette page vous a été utile?
0 / 5 - 0 notes