问题

使用ansible mitogen 0.3.4插件进行kubespray安装时,报错:

EOF on stream; last 100 lines received:\nssh: Could not resolve hostname {%: Name or service not known

分析

经过debug分析,kubespray-default默认定义了如下变量模板:

但是通过ansible role去执行后,通过mitogen进行ssh并没有渲染出来变量:

可以看到,mitogen的ssh将ansible_ssh_common_args原封不动地输出来了
修改源码验证:
修改transport_config.py, 增加debug信息:

 

下面是输出:

 

可以看到ssh_common_args变量没有渲染

解决

_task_vars.get(“vars”, {}) 改为 _task_vars.get(“hostvars”, {}), 从hostvars取值

commit ac34252bcccb60b50e6a8ed3a3b2f42d256d62e0

总结

原代码是通过_task_vars.get(“vars”, {})来获取ssh参数,导致模板不能正确地解析,现修改为通过_task_vars.get(“hostvars”, {})进行获取
不知为何作者没有将此修复合并进去,导致目前最新的master分支也会出现这个问题。
Categories: HANDBOOK未分类

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *