问题描述
如果定义了 ansible 变量,这个宏会输出文本。 在输出CustomLog 或ErrorLog 之前,我想输出一些固定文本。如果我输出任何其他变量,我不想要固定文本。输出固定文本应该只输出一次。
当我运行这个时,我得到'nonetype'类型的参数不可迭代。 我不精通 Python,所以我不知道出了什么问题以及如何解决。
{%- import '_macros.j2' as macros -%}
{#
# Router for directives
#
# @param section : specification of a section to produce
# @return string
#}
{%- set comment = namespace(found=false) -%}
{%- macro directive(line) -%}
{%- set name = (line.keys()|list)[0] -%}
{%- set value = (line.values()|list)[0] -%}
{%- if name == 'access_file_name' -%}
AccessFileName {{ value }}
{%- elif name == 'add_default_charset' -%}
AddDefaultCharset {{ macros.stringOrBool(value) }}
{%- elif name == 'allow_override' -%}
AllowOverride {{ value if value is string else value|join(' ') }}
{%- elif name == 'allow_override_list' -%}
AllowOverride {{ value if value is string else value|join(' ') }}
{%- elif name == 'custom_log' -%}
{%- if comment.found == false -%}
<><><><>
Fixed Comment here
<><><><>
{%- set comment = namespace(found=true) -%}
{%- endif -%}
CustomLog {{ value }}
{%- elif name == 'document_root' -%}
DocumentRoot {{ value }}
{%- elif name == 'error_log' -%}
{%- if comment.found == false -%}
<><><><>
Fixed Comment here
<><><><>
{%- endif -%}
ErrorLog {{ value }}
{%- elif name == 'header' -%}
<IfModule mod_headers.c>
{% for header in ([value] if value is string else value) %}
Header {{ header }}
{% endfor %}
</IfModule>
{%- elif name == 'keepalive' -%}
KeepAlive {{ macros.bool(value) }}
{%- elif name == 'options' -%}
Options {{ value if value is string else value|join(' ') }}
{%- elif name == 'require' -%}
Require {{ value }}
{%- elif name == 'server_admin' -%}
ServerAdmin {{ value }}
{%- elif name == 'set_handler' -%}
SetHandler {{ value }}
{%- elif name == 'extra_parameters' -%}
{% for param in value %}
{{ param }}
{% endfor %}
{%- else -%}
{{ 'The directive name "'~name~'" is not implemented.' }}
{%- endif -%}
{%- endmacro -%}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)