如何在不更改命令行参数的情况下更改ansible详细级别?

时间:2017-02-28 13:26:27

标签: ansible ansible-2.x

我想使用环境变量或全局配置项控制ansible playbooks的详细程度。这是因为ansible是以多种方式从多个地方调用的,我想从同一个shell会话中更改所有进一步执行的日志记录级别。

我观察到,如果我配置ANSIBLE_DEBUG=true ansible将在调试模式下运行,但调试更多是非常冗长的,我只是寻找类似于-vvv选项的东西(DEBUG比偶数更详细{ {1}}选项)

我试图在https://github.com/ansible/ansible/blob/devel/lib/ansible/constants.py内寻找一个变量,但我无法找到符合条件的变量。

3 个答案:

答案 0 :(得分:4)

我认为有两种方法可以做到这一点:

别名

alias ansible-playbook="echo 'This is -vv alias'; ansible-playbook -vv"

这样,当您输入ansible-playbook -vv时,您的shell会调用ansible-playbook(并打印有关别名的友好提醒)。

回调插件

将此代码作为verbosity_env.py文件放入callback_plugins目录:

from ansible.plugins.callback import CallbackBase
import os

try:
    from __main__ import display
except ImportError:
    display = None

class CallbackModule(CallbackBase):

    def v2_playbook_on_start(self, playbook):
        v = os.environ.get('ANSIBLE_VERBOSITY')
        if v and display:
            display.display('Verbosity is set to {} with environment variable.'.format(v), color='blue')
            display.verbosity = int(v)

这不是生产质量代码,而是完成工作。这将检查ANSIBLE_VERBOSITY环境变量并设置显示详细程度及其值。

答案 1 :(得分:1)

不知道为什么我错过了答案,因为很久以前ansible完全支持ANSIBLE_VERBOSITY=[0|1|2|3|4]

答案 2 :(得分:0)

您可以在本地文件夹中创建/编辑ansible.cfg文件,然后在[defaults]部分中添加:

[defaults]
verbosity=4

或者,您可以在/etc/ansible/ansible.cfg文件中添加相同的选项。