我正在使用ansible按照this的Backports部分中的步骤在Debian wheezy VM上安装node.js和npm。
以下的playbook任务曾经与传统的ansible 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执行时失败。
我可以为这一项任务禁用流水线操作吗? 还有其他选择吗?“
答案 0 :(得分:4)
对于单个任务AFAIK,无法禁用pipelining
。请记住,Ansible 1.5仍处于开发阶段。
但是,作为一种变通方法,您可以在单独的Playbook上运行任务,传递pipelining=False
环境变量以覆盖ansible.cfg
文件的值:
ansible-playbook -i ./your-inventory-file -e "pipelining=False" your-no-pipeline-playbook.yml
根据此处的描述(来自Ansible docs):
Ansible还允许通过环境配置设置 变量。如果设置了这些环境变量,它们将覆盖 从配置文件加载的任何设置。这些变量是 为简洁起见,此处未定义,但请查看源代码中的“constants.py” 如果你想使用这些树。他们大多被认为是一个 遗留系统与配置文件相比,但同样有效。
在这里:
https://github.com/ansible/ansible/blob/devel/lib/ansible/constants.py