【发布时间】:2012-06-25 18:19:15
【问题描述】:
我正在尝试使用 vagrant 设置一个开发环境,如果两个存储库尚未被克隆,则自动克隆它们。
我写了一个简单的脚本来克隆 repos,在很多很多方法都失败后让 puppet 直接运行 git 命令。出于某种原因,我认为这种方法是万无一失的,但事实证明我比我想象的更傻。
exec {"load-repos":
command =>"/bin/bash /vagrant/manifests/modules/scripts/clone_repos.sh",
require => Package["git-core"],
}
这是脚本:
#!/bin/bash
if [ ! -d /vagrant/repo-one-dest ]; then
git clone git@example.com:/repo-one.git /vagrant/repo-one-dest
fi
if [ ! -d /vagrant/repo-two-dest ]; then
git clone git@example.com:/repo-two.git /vagrant/repo-two-dest
fi
exit
私钥设置正确。当我登录 vm 并手动运行 bash clone_repos.sh 时,一切正常。无论我重新加载 vagrant 并让 puppet 执行多少次,repos 都不会通过 exec 加载。我错过了什么?
【问题讨论】:
-
第一个
[测试缺少空格。 -
感谢您指出这一点。不幸的是,这是我在将真实目录替换为“repo-one-dest”时引入到帖子中的工件。从命令行运行时,脚本可以正常运行并且有空间。我编辑了帖子以删除语法错误。
-
在您的 Exec 块中添加一个 'logoutput=>true," 可能会产生更多的输出,这可能有助于调试。您可能还想添加一个文件 ["/vagrant/manifests/modules/scripts /clone_repos.sh"] 到 require 部分。Puppet 可能会在 puppet 将脚本推送到您的 VM 之前尝试执行脚本。
-
今晚我回家后试试。相当 100% 肯定这不是路径上不存在的文件的问题,但是嘿,我以前错了。
-
顺便说一句:如果有人阅读本文有时间和意愿通过公共 git 存储库解决此问题并发布解决方案,那将很有帮助。
标签: git bash automation puppet vagrant