Ansible:ng not found

时间:2017-06-01 03:04:27

标签: angular ubuntu ansible angular-cli

版本 - Ubuntu 16.04.2,Angular CLI 1.1.0,Ansible 2.3.0.0和Python 2.7.12。

我尝试在本地运行ng build以创建最终将被复制到远程服务器的构建。由于某种原因,在ansible中运行时无法识别ng命令。

Angular CLI全局安装,ng无处不在。

这是戏剧:

    - name: "Building"
      shell: chdir="~/project/dir/" ng build

以下是Ansible的确切错误:

  

致命:[localhost]:失败! => {"更改":true," cmd":" ng build"," delta":>" 0:00: 00.001310","结束":" 2017-05-31 22:59:34.397388","失败":真实," rc& #34;:> 127,"开始":" 2017-05-31 22:59:34.396078"," stderr":" / bin / sh:1:ng:not>找到"," stderr_lines":[" / bin / sh:1:ng:not found"]," stdout":"",>" stdout_lines":[]}

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

尝试这样的事情。注意,我使用NVM来管理节点版本。

tasks:
- name: "Build myapp"
  command: ng build --prod --aot --env:prod
  args:
    chdir: /home/jeff/myapp/client/
  environment:
    PATH: /sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/home/jeff/.nvm/versions/node/v7.9.0/bin/

答案 1 :(得分:0)

使用PATH可执行文件的完整路径。

没有" 全球安装的东西"在Unix / Linux / Windows中。可执行文件位于man bash变量中定义的目录中。

Ansible调用非交互式shell会话,并非所有rc文件都来源(参见例如{{1}})。

答案 2 :(得分:0)

我不熟悉Angular,但如果ng是shell函数而不是可执行文件,那么你可以尝试重写为:

- name: "Building" shell: "bash -lc 'ng build'" args: chdir="~/project/dir/"