Debian ansible管道模式,具有需要tty的shell脚本

Debian ansible管道模式,具有需要tty的shell脚本,debian,ansible,pipelining,ansible-playbook,Debian,Ansible,Pipelining,Ansible Playbook,我使用ansible在Debian wheezy VMs上安装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-1

我使用ansible在Debian wheezy VMs上安装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
下载的shell脚本install.sh在第246行引用了/dev/tty,因此在管道模式下使用ansible执行时失败

我可以仅为这一项任务禁用管道吗?

还有其他选项吗?

对于单个任务,目前没有禁用管道的选项。请记住,Ansible 1.5仍处于开发阶段

但是,作为一种解决方法,您可以在单独的playbook上运行任务,并传递
pipeline=False
环境变量以覆盖
ansible.cfg
文件的值:

ansible-playbook -i ./your-inventory-file -e "pipelining=False" your-no-pipeline-playbook.yml
根据此处所述(来自Ansible docs):

Ansible还允许通过环境配置设置 变量。如果设置了这些环境变量,它们将覆盖 从配置文件加载的任何设置。这些变量是 为简洁起见,此处未定义,请查看源代码中的“constants.py” 树,如果你想使用它们,它们通常被认为是 传统系统与配置文件相比,但同样有效

在这里:


这似乎对ansible 1.8.2不起作用。我不得不使用
ansible\u SSH\u pipeline=False ansible playbook-I./您的库存文件您的无管道playbook.yml