callback_plugins 目录中的 Ansible 插件运行多次

Ansible plugin in callback_plugins directory runs multiple times

我正在运行使用以下 ansible 脚本,以便能够使用 ansible 部署我的 Java 项目:

ansible-playbook -u ansible -i inventory/test-env release.yml

我在ansible下的callback_plugins目录下添加了this plugin。 问题是每当我 运行 ansible-playbook 脚本时,最后多次登录此插件 运行 并且它不一致。有时我得到日志两次,有时三次。

您是否知道为什么会发生这种情况以及为什么日志数量每次都在变化?

我了解到,如果插件的命名与 ansible 本身中的现有插件相同,则可能会导致此问题。因此,我将这个插件的名称更改为我项目中的其他名称。

注意我的ansible版本是:2.4.2

这是我得到的输出:

PLAY RECAP *********************************************************************
def1.test1.domain.com : ok=101  changed=31   unreachable=0    failed=0   
def2.test1.domain.com : ok=70   changed=20   unreachable=0    failed=0   
abc1.test1.domain.com : ok=6    changed=0    unreachable=0    failed=0   
abc2.test1.domain.com : ok=6    changed=0    unreachable=0    failed=0   

copy domain to managed servers ----------------------------------------- 97.00s
start managed servers -------------------------------------------------- 82.62s
wait for admin server to start ----------------------------------------- 31.64s
create domain ---------------------------------------------------------- 25.97s

Playbook finished: Wed Jan 30 11:09:04 2019, 114 total tasks.  0:06:17 elapsed. 

copy domain to managed servers ----------------------------------------- 97.00s
start managed servers -------------------------------------------------- 82.62s
wait for admin server to start ----------------------------------------- 31.64s
create domain ---------------------------------------------------------- 25.97s

Playbook finished: Wed Jan 30 11:09:04 2019, 114 total tasks.  0:06:17 elapsed. 

copy domain to managed servers ----------------------------------------- 97.00s
start managed servers -------------------------------------------------- 82.62s
wait for admin server to start ----------------------------------------- 31.64s
create domain ---------------------------------------------------------- 25.97s

Playbook finished: Wed Jan 30 11:09:04 2019, 114 total tasks.  0:06:17 elapsed. 

在日志的开头,我发现了这个:

setting up inventory plugins
Parsed /var/go/pipelines/abc/inventory/test inventory source with ini plugin
Loading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc
Loading callback plugin unnamed of type old, v1.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc
Loading callback plugin unnamed of type old, v1.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc
Loading callback plugin unnamed of type old, v1.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc

PLAYBOOK: release.yml **********************************************************
11 plays in release.yml

PLAY [install weblogic] ********************************************************

问题出在我的 IntelliJ IDEA 中的 git 插件。即使我已经从 IDE 中删除了该文件,它也没有添加到我的 git 提交中,而且我在拉取请求中没有意识到这一点。

因此 "profile_tasks.py" 被调用了两次,因为它是 ansible 中的一个预定义插件,如果你有一个同名的插件,ansible 会有重复的日志。另外,第三个日志来自于重命名的插件,一共打印了 3 个重复的日志。在我从项目中手动删除 "profile_tasks.py" 后,其中两个被删除并且日志仅按预期打印一次。