gpt4 book ai didi

git - Puppet exec 命令在 shell 中运行,但不是通过 puppet

转载 作者:太空狗 更新时间:2023-10-29 12:54:51 25 4
gpt4 key购买 nike

我正在尝试使用 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

私钥设置正确。当我登录虚拟机并手动运行 bash clone_repos.sh 时,一切正常。无论我重新加载 vagrant 并让 puppet 执行多少次,repos 都不会通过 exec 加载。我错过了什么?

最佳答案

这可能是因为当您使用 vagrant ssh 时,您通常以 vagrant 用户身份登录(默认情况下,当然可以通过配置修改)。我猜 vagrant 用户的 key 设置正确。

但是,当 Vagrant 运行您的配置程序(在本例中为 Puppet)时,它会执行 sudo,因此它以 root 用户身份运行。

我通常建议设置 key 来进行部署的方法是将 key 放在某个地方,然后使用 GIT_SSH 包装器正确克隆它,或者使用 SSH 代理。

关于git - Puppet exec 命令在 shell 中运行,但不是通过 puppet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com