Comments (3)
Interesting find! The default(omit)
test case seems to be working as expected (as @oxpa pointed out), but in both that test and the next one it's true that Jinja2 returns a string
instead of an int
. This seems to be a "known" issue within Ansible, and there are a couple potential workarounds suggested here ansible/ansible#30366.
As to potential changes to this role -- I am adamant about keeping as many type checks as possible (and am always actively looking for more ways to enforce type checks), but I also see how the current implementation does not provide an ideal user experience.
There might be a way to check that the value is indeed an integer without resorting to the built-in number check? Maybe something along the lines of
{% if main['worker_rlimit_nofile'] is defined and main['worker_rlimit_nofile'] | int %}
worker_rlimit_nofile {{ main['worker_rlimit_nofile'] }};
{% endif %}
which in turn should fail if the value cannot be converted into an int? I'll test a few scenarios when I get a chance to see if this would be a viable solution. In the meantime, I suggest checking out the workarounds shared in the thread above 😄
from ansible-role-nginx-config.
If I get it correctly, the default
filter works if the value is not set. Something like in the snipper below:
connections: "{{$env.value | default(30) }}"
The default value of 30
will only be used if $env.value
is not set.
In your case the value for nginx_worker_rlimit_noprofile
exists. So the value of nginx_worker_rlimit_noprofile
is used and the default
filter doesn't really work at all.
Am I missing something here?
from ansible-role-nginx-config.
Heya! Finally got around doing some testing around this, and the tl;dr is that at this stage, I don't think I am going to change anything. The template will not apply the value if you use a string or try to convert the string to an int (like you did in your second test), but I am okay with that. At some stage in the hopefully near future, I plan to have variable validation, and using type checks is one of the ways variables will be validated.
The first test, which seems to be the root cause of the original issue, should work as intended as long as you comment out the "original" variable (otherwise, the default(omit)
filter does not work as intended).
from ansible-role-nginx-config.
Related Issues (20)
- how to insert an if statement in the server stanza HOT 3
- How to omit load_module: modules/ngx_http_js_module.so HOT 3
- mime.types not included in default nginx configuration HOT 4
- Add `include` support in default.conf.j2 template HOT 1
- Templating error HOT 2
- "mappings" from the "map" directive are not applied to a resulting configuration HOT 2
- Role should restart/reload Nginx when SSL certificates change HOT 3
- How to set "global" variables in the HTTP context HOT 5
- Allow nginx.conf.j2 to create gzip settings HOT 2
- Nested location HOT 2
- Question - nginx-config and proxy rewrite HOT 4
- Question - QUIC config HOT 5
- http2 directive uses enable but http3 uses enabled
- Variables for gzip_static HOT 1
- Logrotate does not format correctly HOT 2
- add map inside stream HOT 3
- Validate configuration HOT 3
- Role version 0.7.1 is not published to the ansible-galaxy repo HOT 1
- set_real_ip_from (ngx_http_realip_module) should be a list HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ansible-role-nginx-config.