【发布时间】:2019-07-19 21:28:08
【问题描述】:
如何查看 ansible 运行的 shell 脚本的实时输出?
我最近重构了一个等待脚本以使用多处理并为多个服务提供各种服务等待检查的实时状态。
作为一个独立的脚本,它的工作原理是为每个线程提供状态,因为它们并行等待各种服务稳定。
在 ansible 中,输出会暂停,直到 python 脚本完成(或终止),然后提供输出。虽然,好吧,我宁愿找到一种更快显示输出的方法。在通过 jenkins withEnv 运行 ansible-playbook 之前,我尝试设置 PYTHONUNBUFFERED 但这似乎也没有实现目标
- name: Wait up to 30m for service stability
shell: "{{ venv_dir }}/bin/python3 -u wait_service_state.py"
args:
chdir: "{{ script_dir }}"
显示长时间运行脚本的输出的标准 ansible 模式是什么?
我的猜测是我可以遵循这些路线之一
- 不使用 ansible
- 在 docker 容器中执行并通过 ansible 报告输出,前提是这不会遇到相同类别的问题
- 从脚本输出到文件,并让 ansible 线程或 Jenkins 管道线程监视和跟踪文件(两者看起来都很笨拙,因为这模糊了将我的构建服务器与部署脚本耦合的关注点分离有点过于紧密)李>
【问题讨论】: