尝试使用ansible生成包时未找到命令

尝试使用ansible生成包时未找到命令,ansible,ansible-playbook,etcd,Ansible,Ansible Playbook,Etcd,我有一个简单的ansible playbook,用于构建etcd: - hosts: all vars: repo_location: /var/lib/etcd/src/ roles: - joshualund.golang #to install go tasks: - name: Clone etcd action: git repo=https://github.com/coreos/etcd dest={{repo_loca

我有一个简单的ansible playbook,用于构建etcd:

- hosts: all

  vars:
    repo_location: /var/lib/etcd/src/

  roles:
    - joshualund.golang
    #to install go

  tasks:
    - name: Clone etcd
      action: git repo=https://github.com/coreos/etcd dest={{repo_location}}

    - name: Build etcd
      command: chdir={{repo_location}} ./build

    - name: Start etcd
      service: ./bin/etcd state=started
因此,当我在远程启动ansible playbook时,根目录“Build etcd”失败并出现错误:

失败:[test]=>{“changed”:true,“cmd”:[“/build”], “delta”:“0:00:00.002628”,“end”:“2014-06-10 07:44:23.952227”,“rc”: 127,“开始”:“2014-06-10 07:44:23.949599”}标准:./build:17: /生成:转到:未找到

“构建”中的第17行包含以下内容:

go install github.com/coreos/etcd

但是go已经安装,我可以在远程服务器上手动构建etcd。我做错了什么?

模块
joshualund.golang
go
安装到非标准目录
/usr/local/go
(请查看)因此,问题很可能是由于这一事实

要解决此问题,您应该以某种方式更新ansible使用的
$PATH
变量。其中一种方法是显式指定它:

- name: Build etcd
  command: chdir={{repo_location}} ./build
  environment:
    PATH: /sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/local/go/bin

用户ansible是否正在运行,与您手动测试的用户是否相同?这也帮助了我,谢谢!请注意,我创建了一个EC2 AMI,已经安装了go,可以通过ssh连接到实例中并成功运行
go
,但是ansible仍然失败,即使用户被指定为相同的用户。我将
$PATH
打印到一个文件中,并注意到我的ansible用户的路径不同(?)。最后,我在ansible命令中使用了go二进制文件的完整路径