我正在寻找一种通过ansible和nvm安装给定版本的节点的方法,nvm的安装工作正常,因为如果我与根用户连接,我可以执行命令understand 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发布于 2018-12-03 15:53:28
没关系,这是可以工作的配置
- name: Install node and set version
become: yes
become_user: root
shell: "source /root/.nvm/nvm.sh && nvm install 8.11.3"
args:
executable: /bin/bash发布于 2018-12-03 15:24:08
我认为你需要输出的线索是:
"/bin/sh: 1: nvm:未找到“
若要运行命令而不包括该命令的完整路径(即nvm而不是/the/dir/nvm/is/installed/in/nvm),则包含该命令的目录必须位于运行该命令的shell的$PATH环境变量中。
在本例中,与运行交互命令的shell相比,Ansible生成的shell似乎不存在这种情况。更改:
- name: Install node and set version
become: yes
become_user: root
shell: nvm install 8.11.3至
- name: Install node and set version
become: yes
become_user: root
shell: /full/path/to/nvm install 8.11.3如果您不知道应该用什么来代替'/full/path/ to ',请尝试:
which nvm或
find / -name nvm发布于 2021-05-04 13:51:32
我只会在这里张贴,因为有数百个这样的帖子。
- name: Install node
become: true
become_user: root
shell: "source /root/.nvm/nvm.sh && nvm install {{ personal_node_version }} && nvm alias default {{ personal_node_version }}"
args:
executable: /bin/bash为我工作过。
https://stackoverflow.com/questions/53596477
复制相似问题