文件路径必须完全限定 - Puppet

File paths must be fully qualified - Puppet

我刚开始使用 puppet,我有一个关于在 class 中使用变量的基本问题。这是我的 class

# == Class: mysql::configure_mysql
class mysql::configure_mysql inherits mysql {

  $mysql_backup = "/var/mysql_backup"

  #Create directories 
  file { 'mysql_backup':
    path   => '($mysql_backup)',
    ensure => 'directory',
  }
}

我遇到错误

Error: Failed to apply catalog: Parameter path failed on File[mysql_backup]: File paths must be fully qualified, not '($mysql_backup)'

有人可以帮助我如何声明和使用变量吗?

我参考了这个:https://serverfault.com/questions/41577/how-to-fix-puppet-fully-qualified-parameter-path-error

谢谢

文件的标题必须是文件的绝对路径。

 file { '/your/full/file/path/here':
    path    => "${mysql_backup}"
    ensure  => 'directory',
    }

路径应设置为:

path => $mysql_backup,

它在您的情况下不起作用的原因是变量(如 $mysql_backup)未插入单引号中。将单引号更改为双引号会有所帮助,但是您还需要删除无关的 (..) 括号。

'' 是编码语言中的字符串文字。您需要解析变量 $mysql_backup。您的资源实际上是在使用字符串 ($mysql_backup)。您还需要删除那些括号,因为它们只是语法错误。由于这些原因,'($mysql_backup)' 需要更改为 $mysql_backup。您也可以在变量周围加上双引号,但这样做没有意义。

file { 'mysql_backup':
  path    => $mysql_backup,
  ensure  => 'directory',
}

Puppet 还使用文件资源的标题作为路径,因此您可以将资源缩短为:

file { $mysql_backup: ensure => 'directory' }