当我在下面运行代码时,出现错误。为什么会这样?我可以从{{ ssh.port }}
或{{ ssh.port|int }}
获取一个值,当我将{{ ssh.port|int }}
替换为10022
时,它会有效。
$ ansible-playbook -i staging site.yml
ERROR!意外异常:基数为10的int()的文字无效: ' {{ssh.port | INT}}'
# staging
[webservers]
IP_ADDRESS
[all:vars]
env=staging
# site.yml
- include: webservers.yml
# webservers.yml
- hosts: webservers
remote_user: deploy
port: "{{ssh.port|int}}"
become: True
gather_facts: False
vars_files:
- group_vars/credentials/{{ env }}
roles:
- common
# group_vars/all.yml
ssh:
port: 10022
Ansible:2.1.0.0,Mac:10.11.5
答案 0 :(得分:0)
这是一个可能的错误。错误发生here Play属性尚未模板化,int()抛出错误。
但我建议您在ansible_port: 10022
文件中使用group_vars/all.yml
变量来实现您想要的效果。
这将自动将ssh端口设置为此值。
或者您可以修补play_context.py
以删除int() - 这将起作用,但我不知道可能的缺点。