我使用ansible在Debian wheezy虚拟机上安装node.js和npm。
下面的playbook任务过去可以很好地使用传统的可见ssh模式。
- name: install npm
shell: curl https://www.npmjs.org/install.sh | sh creates=/usr/bin/npm
直到我尝试启用ansible 1.5的流水线。现在它失败了:
npm-install-18570.sh: 246: npm-install-18570.sh: cannot open /dev/tty: No such device or address
下载的shellscript install.sh在第246行引用了/dev/tty,因此在管道模式下使用ansible执行时会失败。
我可以为这个任务禁用流水线吗?
还有别的选择吗?"
没有选项可以为单个任务禁用pipelining
。请记住,Ansible 1.5仍处于开发阶段。
然而,作为一种解决方法,你可以在一个单独的剧本上运行你的任务,传递pipelining=False
环境变量来覆盖你的ansible.cfg
文件的值:
ansible-playbook -i ./your-inventory-file -e "pipelining=False" your-no-pipeline-playbook.yml
这是按照这里描述的(来自Ansible文档):
Ansible还允许通过环境配置设置变量。如果设置了这些环境变量,它们将被覆盖从配置文件加载的任何设置。这些变量是为了简洁,这里没有定义,但请查看源代码中的' constants.py '树,如果你想用这些。他们大多被认为是一种与配置文件相比的遗留系统,但同样有效。
:
https://github.com/ansible/ansible/blob/devel/lib/ansible/constants.py