首页 > 解决方案 > Ansible-lint:不理解混淆 linting 错误

问题描述

我正在使用 CI/CD 管道,并且管道的一部分ansible-lint针对一些剧本运行。Ansible-lint 通过 docker 容器运行。我有一些剧本给了我一个非常令人困惑的错误。这是一个示例剧本和运行结果ansible-lint

剧本:

---
- name: "SET CONFIG"
  hosts: my_host

  tasks:
    - name: Test
      debug:
        msg: "Test message"

ansible-lint 命令:ansible-lint playbook.yml

ansible-lint 输出:

Couldn't parse task at playbook.yml:6 (conflicting action statements: debug, __line__

The error appears to be in '<unicode string>': line 6, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

(could not open file to display line))
{ 'debug': {'__file__': 'playbook.yml', '__line__': 8, 'msg': 'Test message'},
  'name': 'Test',
  'skipped_rules': []}

我在几本剧本上都遇到了这个错误,但我把它归结为这个小测试剧本来说明正在发生的事情。我真的无法理解发生了什么。如果我删除tasks定义,剧本会很好。

我正在运行以下内容:

有人对发生了什么有想法吗?我在 StackOverflow 上看到过其他类似的问题,但这些解决方案似乎都表明需要分离任务。这个剧本只有一个任务。

标签: pythondockeransible

解决方案


我遇到了几乎相同的问题,但是在基于 Debian Stretch 的 docker 映像中使用了 python2.7。Ansible 2.10 是共同因素,@mdaniel 的建议是正确的,因为该错误是问题所在 - 因此升级到 ansible 4.3.5 或更高版本是解决方案。


推荐阅读