回答
您需要一种方法来确定您的命令是否从CI运行。如果你有机会到什么命令来运行,那么我会建议只是一些额外的变量添加到命令,例如
ansible-playbook -i inv.yml --extra-vars "ci=True" playbook.yml
,然后你可以参考你的剧本里面的ci
变量来确定该怎么做。
如果这很麻烦,那么最好的办法是依赖大多数CI服务器设置的环境变量。你应该咨询你的CI服务器的文档是否设置了任何类型的环境变量,如果是,他们会做什么。大多数(但不是全部)确实将CI
变量设置为true
。在最差的情况下,您应该在CI服务器的配置中手动指定此变量。
您应该可以使用访问管理主机的环境变量:
{{ lookup('env','CI') }}
当然这些选项一起工作,你必须确保环境变量设置正确的非交互式shell(CI应该为你做的),而不是设置在交互式的。
我真的很厌倦与Ansible一起丑陋的解决方法。在Python中有一个明确的方法来做到这一点,它不涉及在所有情况下都不起作用的丑陋的黑客:http://stackoverflow.com/questions/6108330/checking-for-interactive-shell-in-a- python-script – sorin
@sorin也是非常黑客的,它依赖于你需要有一个标准输入的事实。 ansible通常不是一个真正的工具,它预计任何形式的stdin – SztupY
另一方面,它可能是值得一试的做一个单独的ansible模块,但我的猜测是,ansible本身会重定向stdin出于各种原因,所以它将不会是一个tty – SztupY
- 1. 有没有交互式cakephp控制台?
- 2. Ruby和Python如何实现其交互式控制台?
- 3. 推荐的Ruby交互式控制台
- 4. Eclipse中的交互式控制台
- 5. 如何从nodejs REPL控制台打开交互式bash shell
- 6. 交互式pyDev控制台在断点
- 7. 交互式控制台为Ruby,PHP
- 8. Visual Studio交互式控制台宽度
- 9. 如何在PyDev的交互式控制台中换行?
- 10. 如何启动VBS的交互式控制台?
- 11. 如何以编程方式模拟与控制台的交互?
- 12. feedparser失败,但在交互式Python控制台无法重现
- 13. 如何检测上的整体视图 - 控制用户交互
- 14. 如何在调试中使用Eclipse交互式控制台
- 15. 如何在ruby交互式控制台中使用json?
- 16. 交互式控制台程序如何工作?
- 17. 如何编写单元测试交互式控制台应用程序
- 18. 无法在没有控制的情况下运行交互式控制台TTY
- 19. 在套接字上没有换行python交互式控制台
- 20. (控制台)R中的用户交互?
- 21. 从批处理文件(cmd)控制交互式控制台程序
- 22. 如何在应用程序内部实现交互式教程?
- 23. 交互式控制台/ Pydev控制台完全未处理错误
- 24. 如何从tclsh内部运行交互式shell如“exec tclsh”?
- 25. pydev:在控制台模式下调试(交互式)?
- 26. Xamarin f#交互式控制台不会评估表达式
- 27. 检测控制台窗口?
- 28. 在Eclipse中使用Pydev的交互式控制台?
- 29. 中止评估python的交互式控制台
- 30. python交互式调试控制台中的Ipython(eclipse)
'{{lookup('env','CI')}}'? –