我有一个非常简单的 Puppet(子)模块,它应该使用 Git 从远程位置克隆存储库:
class wppuppet::git(
$location = '/var/www/wp'
) {
file { $location:
ensure => 'directory',
mode => '0755',
}
exec { 'git-wp':
command => 'git clone https://github.com/WordPress/WordPress ${location}',
require => Package['git'],
}
Package['git']
-> File[ $location ]
-> Exec['git-wp']
}
由于某种原因,它不断失败并出现以下错误:
Error: git clone https://github.com/WordPress/WordPress ${location} returned 128 instead of one of [0]
Error: /Stage[main]/Wppuppet::Git/Exec[git-wp]/returns: change from notrun to 0 failed:
git clone https://github.com/WordPress/WordPress ${location} returned 128 instead one of [0]
我尝试了${location}
以及$location
,但结果仍然相同。
答案1
您的第一个问题是您的command
参数被单引号 ( ) 包围'
,这会阻止变量扩展。如果您有:
$location = "/path/to/target"
然后:
file { '$location':
ensure => directory,
}
将尝试创建一个名为“ $location
”的目录,而以下是:
file { "$location":
ensure => directory,
}
实际上会尝试创建/path/to/target
。
考虑到这一点,您的exec
资源可能应该是这样的:
exec { 'git-wp':
command => "git clone https://github.com/WordPress/WordPress ${location}",
require => Package['git'],
}
此外,不需要预先创建目标目录;git
它会为您完成此操作。
您可以运行 puppet 来--debug
查看 输出的实际错误消息git
。