ansible-role-nginx-config icon indicating copy to clipboard operation
ansible-role-nginx-config copied to clipboard

Validate configuration

Open DoctorFTB opened this issue 1 year ago • 3 comments

Is your feature request related to a problem? Please describe

I have a problem with configuration by validation

Describe the solution you'd like

If my configuration is invalid (based on the current handlers code), an error is thrown

Describe alternatives you've considered

Nope

Additional context

For example I have a config:

nginx_config_http_template_enable: true
nginx_config_http_template:
  - template_file: http/default.conf.j2
    deployment_location: /etc/nginx/conf.d/path-to.conf
    config:
      servers:
        - core:
            server_name1: some.example.com
            locations:
              - location: /
                proxy:
                  pass: http://127.0.0.1:8080

And in this case: First mistake is that "server_name1" is not a valid name (cuz 1 at the end) Second mistake is is the number of indents (need left for 2 spaces) After applying this configuration I received an empty /etc/nginx/conf.d/path-to.conf file

DoctorFTB avatar Dec 03 '23 21:12 DoctorFTB

Hey @DoctorFTB -- there is indeed no parameter validation built into the role. I'll try to investigate the best way to do it as soon as I can.

Question, what do you mean with the second mistake? I am not entirely sure I can identify the issue.

alessfg avatar Dec 04 '23 21:12 alessfg

Hey. Thanks. About question, check the screenshot, I added a blue line. image Key "locations" must be part of the "servers" element, not "core". I translate config into json: Variant for bad config:

{
  "servers": [
    {
      "core": {
        "server_name1": "some.example.com",
        "locations": [ // <<<
          {
            "location": "/",
            "proxy": {
              "pass": "http://127.0.0.1:8080"
            }
          }
        ]
      }
    }
  ]
}

And variant for correct config:

{
  "servers": [
    {
      "core": {
        "server_name1": "some.example.com"
      },
      "locations": [ // <<<
        {
          "location": "/",
          "proxy": {
            "pass": "http://127.0.0.1:8080"
          }
        }
      ]
    }
  ]
}

DoctorFTB avatar Dec 04 '23 23:12 DoctorFTB

Ah, right, I see. Thanks for the extra info!

alessfg avatar Dec 05 '23 15:12 alessfg