Ansible _序列出现奇怪的语法错误

Ansible _序列出现奇怪的语法错误,ansible,jinja2,Ansible,Jinja2,代码如下: - name: Enable monitoring ports (SELinux) firewalld: ports: "{{ _loadbalancer_https_stat_base + item|int }}" proto: tcp setype: http_port_t state: present become: yes with_sequence: count: "{{ __loadbalancer_processor_

代码如下:

- name: Enable monitoring ports (SELinux)
  firewalld:
    ports: "{{ _loadbalancer_https_stat_base + item|int }}"
    proto: tcp
    setype: http_port_t
    state: present
  become: yes
  with_sequence:
    count: "{{ __loadbalancer_processor_count }}"
  notify: Restart firewalld
我得到的错误是:

fatal: [loadbalancer.vbox]: FAILED! => {"failed": true, "msg": "unknown error parsing with_sequence arguments: u'count'. Error was: unrecognized arguments to with_sequence: [u'_raw_params']"}
我尝试了一些替代语法:

  with_sequence:
    - count: "{{ __loadbalancer_processor_count }}"
其中:

fatal: [loadbalancer.vbox]: FAILED! => {"failed": true, "msg": "unknown error parsing with_sequence arguments: {u'count': 4}. Error was: expected string or buffer"}
failed: [loadbalancer.vbox] (item=1) => {"failed": true, "item": "1", "msg": "unsupported parameter for module: proto"}
failed: [loadbalancer.vbox] (item=2) => {"failed": true, "item": "2", "msg": "unsupported parameter for module: proto"}
failed: [loadbalancer.vbox] (item=3) => {"failed": true, "item": "3", "msg": "unsupported parameter for module: proto"}
failed: [loadbalancer.vbox] (item=4) => {"failed": true, "item": "4", "msg": "unsupported parameter for module: proto"}
以及:

其中:

fatal: [loadbalancer.vbox]: FAILED! => {"failed": true, "msg": "unknown error parsing with_sequence arguments: {u'count': 4}. Error was: expected string or buffer"}
failed: [loadbalancer.vbox] (item=1) => {"failed": true, "item": "1", "msg": "unsupported parameter for module: proto"}
failed: [loadbalancer.vbox] (item=2) => {"failed": true, "item": "2", "msg": "unsupported parameter for module: proto"}
failed: [loadbalancer.vbox] (item=3) => {"failed": true, "item": "3", "msg": "unsupported parameter for module: proto"}
failed: [loadbalancer.vbox] (item=4) => {"failed": true, "item": "4", "msg": "unsupported parameter for module: proto"}

相关文档给出了顺序表示法或键=值表示法。这些都不起作用,原因也不清楚。在Google上搜索这些错误时,没有发现任何类似的错误。

带有\u序列
不接受参数作为dict,只接受字符串
以快捷方式格式
[start-]end[/stride][:format]

或者在
key=value
格式中
start=5 end=11步长=2格式=0x%02x

快捷方式语法已损坏(似乎很久以前)。我会制作问题/公关来解决它

您可以检查代码和参数:

因此,您的唯一有效语法是(根据当前Ansible 2.2.1版):


更新:,

最后一个语法不起作用。错误在于任务,我可以修复它。然而,我想理解为什么其他两个语法不起作用,特别是第二个语法被明确记录。这都是正确的YAML,所以问题纯粹存在于Ansible如何用_sequence解释
的值的层面(分别是映射、映射列表、标量)。您是否尝试过使用硬编码值而不是
{{}
的这些语法(即确保jinja2没有破坏东西)。谢谢。如果文档中正确地指出了这一点,那就太好了。我能够使用KVP语法让它工作。
with_sequence: "count={{__loadbalancer_processor_count}}" # single sequence