我正在寻找一种通过ansible和nvm安装特定版本node的方法,nvm的安装按预期进行,因为如果我使用root用户连接,我可以执行命令“nvm install 8.11.3”,但是这个相同的命令在Ansible中不起作用,我不明白为什么。
---
- name: Install nvm
git: repo=https://github.com/creationix/nvm.git dest=~/.nvm version=v0.33.11
tags: nvm
- name: Source nvm in ~/.{{ item }}
lineinfile: >
dest=~/.{{ item }}
line="source ~/.nvm/nvm.sh"
create=yes
tags: nvm
with_items:
- bashrc
- profile
- name: Install node and set version
become: yes
become_user: root
shell: nvm install 8.11.3
...
错误日志
TASK [node : Install node and set version] *************************************************************************************
fatal: [51.15.128.164]: FAILED! => {"changed": true, "cmd": "nvm install 8.11.3", "delta": "0:00:00.005883", "end": "2018-12-03 15:05:10.394433", "msg": "non-zero return code", "rc": 127, "start": "2018-12-03 15:05:10.388550", "stderr": "/bin/sh: 1: nvm: not found", "stderr_lines": ["/bin/sh: 1: nvm: not found"], "stdout": "", "stdout_lines": []}
to retry, use: --limit .../.../ansible/stater-debian/playbook.retry
Dockerfile
中,从 bash 直接调用nvm.sh
脚本(而不是 sh)也很有帮助:RUN bash -c 'source $HOME/.nvm/nvm.sh && nvm install node'
。 - mirekphd/bin/bash
来执行该命令? - neeh