Ansible中int()的文字无效

时间:2016-06-11 07:08:28

标签: ansible ansible-2.x

当我在下面运行代码时,出现错误。为什么会这样?我可以从{{ 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

1 个答案:

答案 0 :(得分:0)

这是一个可能的错误。错误发生here Play属性尚未模板化,int()抛出错误。

但我建议您在ansible_port: 10022文件中使用group_vars/all.yml变量来实现您想要的效果。 这将自动将ssh端口设置为此值。

或者您可以修补play_context.py以删除int() - 这将起作用,但我不知道可能的缺点。