如何在不更改命令行参数的情况下更改语义冗长级别?

sor*_*rin 3 ansible ansible-2.x

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

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

我试图在https://github.com/ansible/ansible/blob/devel/lib/ansible/constants.py中寻找一个变量,但是我找不到一个符合要求的变量。

sor*_*rin 10

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

作为参考,ansible 文档


Kon*_*rov 5

我看到两种方法可以做到这一点:

别名

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

这样,ansible-playbook -vv当您键入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)
Run Code Online (Sandbox Code Playgroud)

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