【问题标题】:git-p4 fails to clone repo while executing through ansiblegit-p4 在通过 ansible 执行时无法克隆 repo
【发布时间】:2016-04-19 13:02:38
【问题描述】:

我正在运行一个带有 shell 脚本的 Ansible 主机,它将我的 repo 克隆到我的本地 git 服务器。我从 Perforce 克隆,因此使用 git-p4 模块。

#!/bin/bash

p4port=myport
p4user=myuser
p4repourl=myurl
p4path=/usr/local/bin/p4
p4passwd=mypass
clone_dest=/root/mycode
gitp4=/usr/local/bin/git-p4

export P4PORT=$p4port
export P4USER=$p4user
$p4path trust -y
echo $p4passwd|$p4path login
echo "now using git-p4 to clone repo.."
python $gitp4 clone -v $p4repourl $clone_dest

我的目标机器有 RHEL 7,如果我在目标机器上执行这个 shell 脚本,它可以正常工作。但是,如果我使用命令模块从我的 Ansible 主机运行它,则会引发以下错误:

 ['git', 'config', 'git-p4.client']\nOpening pipe: ['p4', '-G', 'files', 'mydepot/...#head']\nTraceback (most recent call last):\n  File \"/usr/local/bin/git-p4\", line 3657, in <module>\n    main()\n  File \"/usr/local/bin/git-p4\", line 3651, in main\n    if not cmd.run(args):\n  File \"/usr/local/bin/git-p4\", line 3525, in run\n    if not P4Sync.run(self, depotPaths):\n  File \"/usr/local/bin/git-p4\", line 3330, in run\n    self.importHeadRevision(revision)\n  File \"/usr/local/bin/git-p4\", line 3079, in importHeadRevision\n    for info in p4CmdList([\"files\"] + fileArgs):\n  File \"/usr/local/bin/git-p4\", line 495, in p4CmdList\n    stdout=subprocess.PIPE)\n  File \"/usr/lib64/python2.7/subprocess.py\", line 711, in __init__\n    errread, errwrite)\n  File \"/usr/lib64/python2.7/subprocess.py\", line 1308, in _execute_child\n    raise child_exception\nOSError: [Errno 2] No such file or directory", "stdout": 

【问题讨论】:

  • 你的 Ansible 剧本在哪里?

标签: ansible rhel7 git-p4


【解决方案1】:

在ansible下你的PATH设置不正确,所以git-p4找不到p4。

另外我建议在错误消息中用换行符替换 \n 以使其更容易理解。

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2018-08-24
    相关资源
    最近更新 更多