Ansible:冲突的动作声明:组,标签

问题描述:

我已经在角色的下面的代码:Ansible:冲突的动作声明:组,标签

- name: Create user group 
    group: name={{ user.group }} state=present 
    tags: 
    - user 

当我运行ansible-playbook -i localhost --ask-become-pass playbook.yml我抓住了一个错误:

ERROR! conflicting action statements: group, tags 

The error appears to have been in '/home/user/spark/roles/base/tasks/main.yml': line 12, column 3, but may 
be elsewhere in the file depending on the exact syntax problem. 

The offending line appears to be: 


- name: Create user group 
^here 

... 

exception type: <class 'ansible.errors.AnsibleParserError'> 
exception: conflicting action statements: group, tags 

... 

完整的错误日志:https://www.pastiebin.com/59cb4faf9ae35

如果我删除tags它运行没有错误。

它被认为是例外:行动中意外的参数类型:在我只留下名称和标签后。完整的错误日志:pastiebin.com/59cb5b2996a10letely一直都可以,但现在它没有任何可识别的原因。我试图用剧本以前的工作版本(通过git的结帐),但无论如何,存在错误:(

我是有这方面的暗示感激。

PS我有ansible playbook for Archlinux machine叉。 PPS

ansible 2.4.0.0 
    config file = /home/user/spark/ansible.cfg 
    configured module search path = [u'/home/user/spark/library/ansible-aur'] 
    ansible python module location = /usr/lib/python2.7/site-packages/ansible 
    executable location = /usr/bin/ansible 
    python version = 2.7.14 (default, Sep 20 2017, 01:25:59) [GCC 7.2.0] 

Ansible AUR:

[submodule "library/ansible-aur"] 
    path = library/ansible-aur 
    url = https://github.com/pigmonkey/ansible-aur.git 

ansible.cfg

[defaults] 
library = ./library/ansible-aur 

UPD。如果我删除group关键字如下:

- name: Create user group 
    tags: 
     - user 

我赶上了一个错误:在行动中意外的参数类型:以后我只留下名字和标签。全错误日志:pastiebin.com/59cb5b2996a10

+0

在您的磁盘上搜索tags.py文件。如果它位于Ansible寻找模块的路径中,则可能导致此类行为。 – techraf

+0

我有'/ usr/lib/calibre/calibre/ebooks/lrf/tags.py'。我试图卸载Calibre,但它没有帮助:( – petRUShka

+0

我不认为Ansible看起来如果你注释掉'group'行并留下'tags'会发生什么?它是否抱怨没有定义动作? – techraf

这是非常有趣的故事。

我有一个vim插件,为项目创建ctags tags。它创建了一个名为:spark/library/ansible-aur/tags的文件。

这不是python文件或其他东西。这只是常见的ctags文件。

我发现它是通过使用pdb调试器和代码来解决所有问题的根源。

我发现错误字符串之一,我看到:在ansible代码conflicting action statements

> /usr/lib/python2.7/site-packages/ansible/parsing/mod_args.py(293)parse() 
-> raise AnsibleParserError("conflicting action statements: %s, %s" % (action, item), obj=self._task_ds) 

并注入pdb.set_trace()那里。

然后我做了一些研究:

(Pdb) item 
u'tags' 
(Pdb) item in module_loader 
True 
(Pdb) module_loader.find_plugin(item) 
u'/home/user/spark/library/ansible-aur/tags' 

最后一行是那种淡淡的。删除tags文件后,一切都完全正常。

对应的错误报告:https://github.com/ansible/ansible/issues/31070