未执行带有变量的 Puppet exec 命令

未执行带有变量的 Puppet exec 命令

我有一个非常简单的 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

相关内容