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中寻找一个变量,但是我找不到一个符合要求的变量。
我看到两种方法可以做到这一点:
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环境变量并使用其值设置显示详细程度。