我有台安装了zsh的机器。我创建了以下脚本来进行一些安装:
安装实现了
# Install NVM
sudo curl https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
## Reload shell to start using nvm
. ~/.zshrc
. ~/.nvm/nvm.sh
nvm install 0.12
现在,我想连接到实例并运行ansible-playbook,它将启动以下脚本:
sh-script.sh
npm install aws-sdk
node create-queue.js $machine_name
node create-queue.js $machine_name
在运行剧本时,我得到以下错误:第28行: npm:命令未找到--第32行:节点:命令未找到--第33行:节点:命令未找到。
当我对实例执行ssh并运行“节点”或"npm“时,就会得到有效的响应和所需的条件。游戏手册非常简单:
无源
- hosts: tag_Name_TestInstance
tasks:
- name: Run Script
shell: /home/ubuntu/sh-script.sh '{{ machine_name }}'
发布于 2016-04-26 03:24:20
解决这一问题的最佳方法是向ansible env添加一个额外的bin路径。
- name: Install aws-sdk
command: /opt/node/bin/npm "something"
environment:
PATH: "{{ ansible_env.PATH }}:/opt/node/bin"
或者您也可以使用本机的ansible npm函数。
description: Install "aws-sdk" node.js package.
- npm: name=aws-sdk path=/app/location
environment:
PATH: "{{ ansible_env.PATH }}:/opt/node/bin"
以及运行节点js脚本的另外两个任务。这样你也可以得到更多关于发生了什么的信息。
祝好运
发布于 2016-04-13 12:20:42
这可能是因为npm和节点尚未添加到您的$PATH
中。外壳模块将使用/bin/sh
运行命令。
如果要在zsh中运行脚本,请尝试添加带路径的shebang到zsh安装(例如:!#/usr/local/bin/zsh
)。
https://stackoverflow.com/questions/36594691
复制相似问题