将多行 jinja2 块转换为单行
Transform multiline jinja2 block to single line
我使用ansible(使用jinja2)来管理nginx。我的 nginx 配置文件有一行很长很难维护:
add_header Content-Security-Policy "default-src 'self' http: https: https://*.foo.com: https://*.bar.com: https://*.baz.com: https://*.qux.com: https://*.spam.com: https://*.ham.com: https://*.eggs.com: wss://*.foo.com: object-src 'none'" always;
由于配置文件是一个jinja2模板,我想把那一行改写成多行(为了便于维护),但是为了像上面那样转换成一行。
我该怎么做?换句话说,像这样(当然行不通):
add_header Content-Security-Policy {%
"default-src 'self'
http:
https:
https://*.foo.com:
https://*.bar.com:
https://*.baz.com:
https://*.qux.com:
https://*.spam.com:
https://*.ham.com:
https://*.eggs.com:
wss://*.foo.com:
object-src 'none'"
always;%}
...转换后会给我上面显示的一个衬垫吗?
一个可能的解决方案:将您需要的值放在一个列表中并用空格将它们连接起来:
{%- set my_values=[
"default-src 'self'",
"http:",
"https:",
"https://*.foo.com:",
"https://*.bar.com:",
"https://*.baz.com:",
"https://*.qux.com:",
"https://*.spam.com:",
"https://*.ham.com:",
"https://*.eggs.com:",
"wss://*.foo.com:",
"object-src 'none'",
"always",
]-%}
add_header Content-Security-Policy "{{ my_values | join(' ') }}";
蛋糕上的樱桃:将此列表从您在 inventory/playbook 中声明的 var 直接传递到您的模板。
我使用ansible(使用jinja2)来管理nginx。我的 nginx 配置文件有一行很长很难维护:
add_header Content-Security-Policy "default-src 'self' http: https: https://*.foo.com: https://*.bar.com: https://*.baz.com: https://*.qux.com: https://*.spam.com: https://*.ham.com: https://*.eggs.com: wss://*.foo.com: object-src 'none'" always;
由于配置文件是一个jinja2模板,我想把那一行改写成多行(为了便于维护),但是为了像上面那样转换成一行。
我该怎么做?换句话说,像这样(当然行不通):
add_header Content-Security-Policy {%
"default-src 'self'
http:
https:
https://*.foo.com:
https://*.bar.com:
https://*.baz.com:
https://*.qux.com:
https://*.spam.com:
https://*.ham.com:
https://*.eggs.com:
wss://*.foo.com:
object-src 'none'"
always;%}
...转换后会给我上面显示的一个衬垫吗?
一个可能的解决方案:将您需要的值放在一个列表中并用空格将它们连接起来:
{%- set my_values=[
"default-src 'self'",
"http:",
"https:",
"https://*.foo.com:",
"https://*.bar.com:",
"https://*.baz.com:",
"https://*.qux.com:",
"https://*.spam.com:",
"https://*.ham.com:",
"https://*.eggs.com:",
"wss://*.foo.com:",
"object-src 'none'",
"always",
]-%}
add_header Content-Security-Policy "{{ my_values | join(' ') }}";
蛋糕上的樱桃:将此列表从您在 inventory/playbook 中声明的 var 直接传递到您的模板。