我正在使用Ubuntu 18的Ansible。
问题:无法使用nvm安装npm命令
当我执行以下代码时,在全局安装 npm 包
中出现错误消息。我该怎么做才能解决这个问题?请注意,当我通过ssh连接时,我可以运行nvm和npm install,但是在使用ansible时却不能。
failed: [X.X>X.X] (item=apn) => {"ansible_loop_var": "item", "changed": false, "item": "apn", "msg": "Failed to find required executable npm in paths: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"}
Ansible剧本:
roles:
- role: ansible-role-nvm
nodejs_version: "12.21.0"
nvm_profile: "home/{{ ansible_user }}/.bashrc"
tasks:
- name: install npm package globally
npm:
name: "{{ item }}"
global: yes
loop: "{{ npm_packages }}"
即使我将npm的可执行路径设置为/home/ubuntu/.nvm/versions/node/v12.21.0/bin/npm
,它仍然显示错误:
failed: [X.X.X.X] (item=apn) => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"}, "ansible_loop_var": "item", "changed": false, "cmd": "/home/ubuntu/.nvm/versions/node/v12.21.0/bin/npm install --global apn", "item": "apn", "msg": "/usr/bin/env: ‘node’: No such file or directory", "rc": 127, "stderr": "/usr/bin/env: ‘node’: No such file or directory\n", "stderr_lines": ["/usr/bin/env: ‘node’: No such file or directory"], "stdout": "", "stdout_lines": []}
在安装完成后,该脚本将在用户的.bashrc中添加以下代码。当在交互式shell中时(在服务器上进行ssh时),它可以正常工作。
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
node
未包含在默认路径中。Ansible 不会读取用户的.bashrc
文件。您必须在模块选项中设置正确的可执行文件
。 - Zeitounator