限制ansible控制台输出中的行长度

时间:2017-12-19 09:29:05

标签: console formatting ansible

在控制台中运行ansible-playbook时,可以调整控制台窗口的大小以限制控制台输出的行长度。 ansible使用fcntl.ioctl获取TIOCGWINSZ,当它找到tty os.isatty(0)时,例如:(从/ansible/utils/display.py复制)

def _set_column_width(self):
    if os.isatty(0):
        tty_size = unpack('HHHH',
                       fcntl.ioctl(0, TIOCGWINSZ, pack('HHHH', 0, 0, 0, 0)))[1]
    else:
        tty_size = 0
    self.columns = max(79, tty_size - 1)

man这样的工具提供了一个环境变量MANWIDTH来提供此功能,而无需调整控制台窗口的大小。

如何在不调整控制台窗口大小的情况下调整控制台输出的大小?

1 个答案:

答案 0 :(得分:0)

检查ansilbes os.isatty(0)检查stdin是否打开,所以解决方案只是重定向stdin,在调用命令时,例如,我做了:

ansible-playbook -v -i dev --check --diff playbook.yml 0</dev/null

注意:这不会限制模块的输出,但我认为这是另一个故事。

编辑:在函数_set_column_width中可以看到,当没有tty(stdin关闭)时,输出默认为79 char行长度。