我正在尝试在python脚本末尾的子进程中执行ansible-playbook推荐,在启动正确的命令之前执行'magic'。
如果你不熟悉ansible-playbook。输出通常是彩色的(绿色/黄色/红色文本)并且间隔正确。
如果python刚刚启动命令并在需要时退出,我会没事的。
命令完成后,我目前得到的是黑白文字。
我希望实时获得正常的颜色输出,就像我从命令行运行ansible-playbook一样。有没有办法做到这一点?
我目前的代码如下:
command = '{0} --flush-cache -f 20 -i {1}/dyn_inv.py --extra-vars @{2}/vars.json {3}'.format(ansible_playbook_loc, script_path, var_path, args.playbook[0])
print command
process = subprocess.Popen(command.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
devices = process.communicate()[0].rstrip('\n').split()
print devices
答案 0 :(得分:2)
默认情况下,Ansible只会在输出连接到终端时为文本着色。您可以通过在环境中设置ANSIBLE_FORCE_COLOR=1
来强制它使用颜色代码。例如:
import os
os.environ['ANSIBLE_FORCE_COLOR'] = '1'
您可以通过在ansible.cfg
中设置force_color选项来完成相同的操作。