меня есть template j2 для генерации конфига nginx sites согласно переменных типа порт, server_name передаваемых в виде
- name: dev-api.site
port: 5002
proxy: True
- name: header-dev.site
port: 5003
proxy: True
все хорошо работало и параметризировалось, до тех пор пока не понадобилось использовать кастомизированные location вида
location ~* ^/photos/(.+)/(.+) {
root /var/www/site/node_project/api/;
try_files /$1/x$x/$2 $uri.http =404;
}
я думал запихнуть это как многострочник в переменную location и использовать ее в template
- name: header-dev.site
port: 5003
proxy: True
location: |
location ~* ^/photos/(.+)/(.+) {
root /var/www/site/node_project/api/;
try_files /$1/x$x/$2 $uri.http =404;
}
и затем вызвать ее в template
{% if item.location is defined %}
{{ location }}
{% endif %}
но плейбук падает, ругаясь на
The offending line appears to be:
try_files /$1/x$x/$2 $uri.http =404;
^ here
Верная ли у меня вообще стратегия по добавлению переменной или надо как то по другому решать проблему поставки кастомизированных location?
ямл кривой
http://www.yamllint.com/
вот такой плей отрабатывает норм --- - hosts: localhost gather_facts: no tasks: - debug: var=foo vars: foo: | location ~* ^/photos/(.+)/(.+) { root /var/www/site/node_project/api/; try_files /$1/x$x/$2 $uri.http =404; } но если я тащу переменную location из host_vars/ansible_host - валятся ошибки ) В теории надо как то заэкранировать спецсимволы, но пока не понятно как.
еще раз - у вас кривой ямл в первом примере
Обсуждают сегодня