Kerberos 客户端模板渲染异常处理临时处理
温馨提示
本文内容在使用 ttr-2.2.0 版本之前,开启Kerberos后才会遇到。
后续版本已经做了处理,无需关注! 如果在部署、二开过程中,遇到任何问题可以联系作者。
👉 联系入口在此页 (opens new window)
# 一、问题现象
在启用 Kerberos 客户端安装 时,执行渲染 krb5-conf template 阶段报错。
日志显示模板变量渲染失败,无法生成 krb5.conf 文件。

问题出现在旧版模板使用的 Jinja2 写法在 Python3 环境中不兼容, 触发异常导致任务终止。
# 二、问题原因
旧模板逻辑在 Python2 环境下可以正常工作,但在 Python3 中存在以下问题:
- 模板中使用的
split、trim等函数在部分未定义变量时会报类型错误; - 模板内条件判断与缩进处理不兼容 Python3 的严格语法;
- 某些空值默认处理(如
|default('', true))未定义,渲染时中断。
这会导致 krb5.conf 模板渲染中断,Ambari 客户端任务失败。
# 三、快速解决方案(推荐)
打开 Ambari Web → Kerberos → krb5-conf template, 将模板内容替换为以下版本即可恢复正常。
[libdefaults]
forwardable = true
default_realm = {{ realm }}
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
default_ccache_name = /tmp/krb5cc_%{uid}
#default_tgs_enctypes = {{ encryption_types }}
#default_tkt_enctypes = {{ encryption_types }}
{% if force_tcp %}
udp_preference_limit = 1
{% endif %}
{% if domains %}
[domain_realm]
{% for domain in domains.split(',') %}
{{ domain|trim() }} = {{ realm }}
{% endfor %}
{% endif %}
[logging]
default = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
kdc = FILE:/var/log/krb5kdc.log
[realms]
{{ realm }} = {
{% if master_kdc %}
master_kdc = {{ master_kdc|trim() }}
{% endif %}
{% set _kdc_hosts = kdc_hosts|default('', true)|trim() %}
{% if _kdc_hosts %}
{% set kdc_host_list = _kdc_hosts.split(',') %}
{% if kdc_host_list and kdc_host_list|length > 0 %}
admin_server = {{ admin_server_host|default(kdc_host_list[0]|trim(), True) }}
{% if kdc_host_list %}
{% if master_kdc and (master_kdc not in kdc_host_list) %}
kdc = {{ master_kdc|trim() }}
{% endif %}
{% for kdc_host in kdc_host_list %}
{% if kdc_host|trim() %}
kdc = {{ kdc_host|trim() }}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% endif %}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
保存后,重新执行 Kerberos 客户端安装 即可正常生成配置文件。

# 四、源码级修复方案(长期解决)
若你希望从源码层彻底修复此问题,可参考以下文章:
- 01
- Ambari开启Kerberos认证加密类型错误 Kylin V1011-05
- 02
- KERBEROS SERVICE CHECK 报错11-04